Hello Linh, On 2024-05-11 00:36, Linh Pham wrote:
Our sel4test image is large because we're using a static heap. Note that the relevant region from the log output is [262000..6cd7fff], the exception occurs when trying to write into memory in this range. After some investigation, writing to physical address 0x5100000 is what causes the problem. I haven't been able to find any documentation on why this physical address range can't be written to. Is this some sort of device memory region? I was able to eventually boot by changing the ELF loader to load into a much higher memory address (e.g. somewhere around 0x80000000), but I would like to have a clearer idea of the Odroid's memory layout so that I could choose an address range that is definitely safe to load the image into.
It's Elfloader that crashes. The datasheet can be found here: https://dn.odroid.com/S905X3/ODROID-C4/Docs/S905X3_Public_Datasheet_Hardkern... The DDR region is from 0-0xF57FFFFF, so it's not some device region. However, if we look into the DTS file, that region is reserved for the secure monitor it seems: reserved-memory { #address-cells = <0x02>; #size-cells = <0x02>; ranges; secmon@5000000 { reg = <0x00 0x5000000 0x00 0x300000>; no-map; }; linux,cma { compatible = "shared-dma-pool"; reusable; size = <0x00 0x10000000>; alignment = <0x00 0x400000>; linux,cma-default; }; }; https://github.com/seL4/seL4/blob/master/tools/dts/odroidc4.dts#L110 Greetings, Indan