The kernel and devicetree sections weren't NOLOAD for a reason: The kernel does not initialize it stack and bss sections, but relies on some loader to do that. The kernel and devicetree sections in the application:
https://github.com/DLR-FT/sel4-rs/blob/516a81964f0e84ae91b3a4c4435cb99940b1ae42/sel4-rs/build.rs#L214
are zero initialized and therefore can't be NOLOAD, so that when the kernel and devicetree are loaded after the application, they are written into already zeroed memory.
This is a problem especially with fit images, since they don't specify in which order images are loaded.
A better workaround would be to do the zeroing at runtime, before jumping into the kernel.
The fix would be to change the sel4 kernel to initialize its own memory.
That was wrong: https://github.com/DLR-FT/sel4-rs/pull/6
The kernel and devicetree sections weren't NOLOAD for a reason: The kernel does not initialize it stack and bss sections, but relies on some loader to do that. The kernel and devicetree sections in the application: https://github.com/DLR-FT/sel4-rs/blob/516a81964f0e84ae91b3a4c4435cb99940b1ae42/sel4-rs/build.rs#L214 are zero initialized and therefore can't be NOLOAD, so that when the kernel and devicetree are loaded after the application, they are written into already zeroed memory.
This is a problem especially with fit images, since they don't specify in which order images are loaded.
A better workaround would be to do the zeroing at runtime, before jumping into the kernel. The fix would be to change the sel4 kernel to initialize its own memory.