On Tue, 3 Jan 2023 at 15:59, Stefan Kalkowski stefan.kalkowski@genode-labs.com wrote:
Hello Michael,
On Fri, Dec 30, 2022 at 02:49:25AM +0100, Michael Grunditz wrote:
Hello
I would like to know the requirements from u-boot in order to properly start genode.
in general Genode's base-hw kernel can boot from different environments that u-boot might provide. This depends on the platform resp. board. The generic Cortex-A53 bootstrap code used by rpi3, i.MX8, and allwinner64 assumes that u-boot started the kernel (or better: bootstrap code) in the EL3, EL2, or EL1 mode, although the latter one is not used as start mode by any of these boards if I remember correctly. The only requirement is that the ELF binary was setup correctly, that all peripherals used (e.g. the UART) are accessible in this mode (e.g. when switching from secure to normal world before).
OK. Good to know.
Have you tried the following after loading the Genode system's uImage to "load_addr":
bootm start ${load_addr}; bootm loados; bootm go;
I think(!) I tried that. Gives me a crashdump from uboot.
I don't think this is a good idea, because probably u-boot does not setup the EL2 mode properly here then. Although I'm not sure. To stay safe, I would not try to eagerly degrade the privilege level. Moreover, you won't be able to use the hypervisor functionality.
True.
Do I understand you correctly that the UART in principle works in the Genode bootstrap code, but not if you enforce u-boot to switch to EL1 before? If this is the case, you probably have no baud-rate issue here?!
Yea. I must have dreamt :-)