DLR-FT / sel4-rs

2 stars 1 forks source link

Move kernel memory initialization to runtime #8

Closed moritz-meier closed 7 months ago

moritz-meier commented 1 year ago

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.

moritz-meier commented 7 months ago

done.