On Thu, 5 Jan 2023 at 09:29, Stefan Kalkowski stefan.kalkowski@genode-labs.com wrote:
Hello Michael,
I try to summarize what I understood from your previous e-mails:
Thanks for reading! :-)
- u-boot normally starts on the RK3588 SoC in EL2 with MMU enabled, and enabled caches
True
- when using the unchanged Genode base-hw bootstrap code, you then stuck when issuing a Genode::raw (how do you know, it is exactly that point? does it provoke an exception shown by u-boot? and if yes what kind of exception?)
I get a dump (Exception from an unknown reason). I can write characters to uart, phys address. (*ser='m') So I know it crashes on genode api . I have a couple of raw printouts and I get crash if mmu is disabled and no crash if I comment them out.
- when removing the MMU disabling within the bootstrap assembler code, you can proceed, and you see Genode::raw messages
Yes. But no luck with EL switching.
Is this correct?
If the MMU disabling is the important point with regard to the UART usage (if this is 100% the issue), either u-boot doesn't setup 1:1 physical to virtual mappings, which is less probable, or the page-table attributes for the I/O memory mapping of the UART is essential for the way it is used.
The last option.
I need to dig a bit more into this. If starting in EL1, which makes Genode to boot up, I get crash from mmu disabling. Uboot sets sctlr_el1to disabled. https://github.com/u-boot/u-boot/blob/master/arch/arm/include/asm/macro.h#L2....
It doesn't make sense.
Thanks Michael