points by irdc 6 hours ago | 0 comments
If it's running on MMU-less systems, I'd be interested in how it loads multiple programs into memory: does it need to relocate each program binary? If so, doesn't that preclude using execute-in-place (XIP)?
[–] Arelius 5 hours ago
[–] dvdkon 5 hours ago
> I suspect that hardware without an MMU is not super likely to be able to support XIP.
This seems strange to me. Don't most microcontrollers support executing directly from flash? Some even can't execute from RAM.
Though I agree with the main point, you can compile code as "PIC" - position independent code, and not bother with (ELF) relocations except for linking.
[–] ranger_danger 3 hours ago
> Don't most microcontrollers support executing directly from flash?
Yes... I presume they meant XIP for multiple programs at once, since you'd need an MMU for that.
[–] actionfromafar 3 hours ago
Or the program use relative addressing.
[–] topspin 2 hours ago
"COM" programs as seen in MS DOS and earlier CP/M systems contain only relative addresses, and can run from any "segment" of RAM, as the addresses are relative to the value of a segment register. This was used to load "background" services, typically servicing hardware devices.
MCUs with MMUs are starting to appear, such as the ESP32-S31.
It is based on FreeRTOS, so it should be fairly well documented.