Hacker News new | past | comments | ask | show | jobs | submit login

A few years ago I did an embedded Linux project on an ARM7 CPU without an MMU, a vehicle tracker for trucks with GPS, cellular modem, ODB2 interface, and other I/O.

Lack of MMU caused some unexpected issues:

* Because there is no MMU, there are no shared libraries. All the binaries have to be statically linked. We had a total of 2MB of ROM, of which about 1M was the Linux kernel. So we ran out of space for the programs we needed for the application about 3/4 of the way through the project. The solution was to use Lua, which was a 200k binary, and it could run scripts to do some things.

* Lack of MMU means no memory protection between programs. One program can step on another program's memory. Just like the good old days of DOS. Ouch!

* We started with the ucLinux distribution, which is pretty lame. A lot of programs in the tree didn't build. We ended up rebuilding with Yocto, and making patches to things where necessary.

* We found other entertaining bugs: https://www.cogini.com/blog/debugging-your-space-probe/




the post you're commenting on describes some ways to make shared libraries work on arm without an mmu, even though its main focus is on risc-v

possibly https://github.com/mickael-guene/fdpic_doc postdates the time you're talking about, but since you mention yocto, i suspect not

lua is pretty great


Yeah, I actually used OpenEmbedded, the predecessor to Yocto. The project was in 2011.


aha, yeah, i think you would've had to invent fdpic then, and add support for the new abi to your compiler




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: