Good afternoon everyone!
I am currently trying to run Genode in 64bit mode on a Raspberry Pi 3 Model B (V1.2), therefore using the newest available Release (19.05) with the accompanying tool-chain, compiling it on a Ubuntu 18.04.2 machine.
The compilation process configured for the "rpi3" board with the "foc" kernel completes without any issues and the resulting elf binaries can also be executed in QEMU (4.0.0), completing the hello_tutorial with full output and no issues.
However when I try to use the same binary with the mentioned hardware [0] the output of the UART repeatably stops before the "Hello from Startup::stage2" message, which to me indicates that it can not successfully begin to execute the Kernel as in QEMU.
Is this to be expected, related to the UART drivers, or am I missing something in the compilation/preparation process?
If there is any additional information needed please tell me.
[0]: using u-boot version 2019.07-rc4 for the rpi3, with "enable_uart=1", "arm_64bit=1" and the u-boot-nodtb.bin as a kernel in the config.txt; loading the image with "fatload mmc 0:1 ${scriptaddr} image.elf" and then executing it with "bootelf ${scriptaddr}"
Thank you in advance, with best regards, Daniel Gunzinger.
Hi Daniel,
which architecture is your u-boot for? If it is a 64bit u-boot you will need a Fiasco.OC kernel built for 64bit. If 32bit you will need a 32bit Fiasco.OC kernel.
Regards, Matthias.
On [27-06-2019 15:51], Daniel Gunzinger wrote:
Good afternoon everyone!
I am currently trying to run Genode in 64bit mode on a Raspberry Pi 3 Model B (V1.2), therefore using the newest available Release (19.05) with the accompanying tool-chain, compiling it on a Ubuntu 18.04.2 machine.
The compilation process configured for the "rpi3" board with the "foc" kernel completes without any issues and the resulting elf binaries can also be executed in QEMU (4.0.0), completing the hello_tutorial with full output and no issues.
However when I try to use the same binary with the mentioned hardware [0] the output of the UART repeatably stops before the "Hello from Startup::stage2" message, which to me indicates that it can not successfully begin to execute the Kernel as in QEMU.
Is this to be expected, related to the UART drivers, or am I missing something in the compilation/preparation process?
If there is any additional information needed please tell me.
[0]: using u-boot version 2019.07-rc4 for the rpi3, with "enable_uart=1", "arm_64bit=1" and the u-boot-nodtb.bin as a kernel in the config.txt; loading the image with "fatload mmc 0:1 ${scriptaddr} image.elf" and then executing it with "bootelf ${scriptaddr}"
Thank you in advance, with best regards, Daniel Gunzinger.
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users
Daniel Gunzinger daniel.gunzinger@tum.de writes:
Good afternoon everyone!
I am currently trying to run Genode in 64bit mode on a Raspberry Pi 3 Model B (V1.2), therefore using the newest available Release (19.05) with the accompanying tool-chain, compiling it on a Ubuntu 18.04.2 machine.
The compilation process configured for the "rpi3" board with the "foc" kernel completes without any issues and the resulting elf binaries can also be executed in QEMU (4.0.0), completing the hello_tutorial with full output and no issues.
However when I try to use the same binary with the mentioned hardware [0] the output of the UART repeatably stops before the "Hello from Startup::stage2" message, which to me indicates that it can not successfully begin to execute the Kernel as in QEMU.
Is this to be expected, related to the UART drivers, or am I missing something in the compilation/preparation process?
If there is any additional information needed please tell me.
It's great you are interested in trying Genode on RPI. However, you should know that supporting model 3 (and any other then RPI1) and supporting 64bit ARM are both currently a work in progress.
I don't know exact state that is in 19.05 regarding running on FOC but there is a commit in master afterh 19.05 release that updates FOC to newer versoin [1]. Maybe if you try with latest master you'll get better results.
In current staging there is initial support for base-hw running in 64 bits mode but as far as I know only single core is currently started. This work is done by Stefan Kalkowski and maybe he will somehow correct my statement.
Device drivers for other peripherals probably haven't been tested on Rpi3 in 64bits mode yet. Currently I'm trying to prepare my work for rpi3 32bit mode [2] so it can be merged to Genode. Some changes there are invasive and break other targets so some work is needed. State of this branch is quite well described in [3] if you're interested.
[1] https://github.com/genodelabs/genode/commit/811410fdbb3fb9c41ef97ee480b2fe16... [2] https://github.com/tomga/genode/commits/rpi_all_19.05 [3] https://github.com/genodelabs/genode/issues/3415
Regards Tomasz Gajewski
Hello everyone,
I tried to reproduce the results and interestingly enough, when using a *uImage* the RPi3 boots completely (using the 'bootm' command in U-Boot). The described behavior is only observable, when trying to boot via an *ELF-image*.
The uImage can be created automatically by Genode when extending the 'build.conf' file in the build-directory with the following line:
RUN_OPT += --include image/uboot
Does anyone have an idea for a possible explanation for this kind of behavior?
Best regards, Alexander
On 27.06.19 23:12, Tomasz Gajewski wrote:
Daniel Gunzinger daniel.gunzinger@tum.de writes:
Good afternoon everyone!
I am currently trying to run Genode in 64bit mode on a Raspberry Pi 3 Model B (V1.2), therefore using the newest available Release (19.05) with the accompanying tool-chain, compiling it on a Ubuntu 18.04.2 machine.
The compilation process configured for the "rpi3" board with the "foc" kernel completes without any issues and the resulting elf binaries can also be executed in QEMU (4.0.0), completing the hello_tutorial with full output and no issues.
However when I try to use the same binary with the mentioned hardware [0] the output of the UART repeatably stops before the "Hello from Startup::stage2" message, which to me indicates that it can not successfully begin to execute the Kernel as in QEMU.
Is this to be expected, related to the UART drivers, or am I missing something in the compilation/preparation process?
If there is any additional information needed please tell me.
It's great you are interested in trying Genode on RPI. However, you should know that supporting model 3 (and any other then RPI1) and supporting 64bit ARM are both currently a work in progress.
I don't know exact state that is in 19.05 regarding running on FOC but there is a commit in master afterh 19.05 release that updates FOC to newer versoin [1]. Maybe if you try with latest master you'll get better results.
In current staging there is initial support for base-hw running in 64 bits mode but as far as I know only single core is currently started. This work is done by Stefan Kalkowski and maybe he will somehow correct my statement.
Device drivers for other peripherals probably haven't been tested on Rpi3 in 64bits mode yet. Currently I'm trying to prepare my work for rpi3 32bit mode [2] so it can be merged to Genode. Some changes there are invasive and break other targets so some work is needed. State of this branch is quite well described in [3] if you're interested.
[1] https://github.com/genodelabs/genode/commit/811410fdbb3fb9c41ef97ee480b2fe16... [2] https://github.com/tomga/genode/commits/rpi_all_19.05 [3] https://github.com/genodelabs/genode/issues/3415
Regards Tomasz Gajewski
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users
Good evening everyone,
First off thank you Matthias, Tomasz and Alexander for the quick responses, and thank you Tomasz especially for all the great work that you do on the Raspberry Pi platforms!
Alexander seems to have hit the nail right on the head:
The uImage can be created automatically by Genode when extending the 'build.conf' file in the build-directory with the following line:
RUN_OPT += --include image/uboot
After adding this line to my build.conf, the resulting uImage could be successfully loaded and executed on the mentioned Pi 3 B.
For reproducibility: I now loaded the Image with "fatload mmc 0:1 ${scriptaddr} uImage", and then started the execution with "bootm ${scriptaddr}", which resulted in the hello_tutorial being successfully run and everything being printed via UART.
Thanks again for the quick help and have a nice weekend!
Best Regards, Daniel Gunzinger.