Chapter 5. Setting Up an Embedded OS
Having a Debian OS or another major distribution running on an embedded computer is absolutely the best thing a developer can have. However, there are some situations that don't allow us to be so lucky! In fact, due to cost reasons, reduced sizes, or other minor issues, the available mass memory useful to store our rootfs (plus the bootloaders and the kernel) is very limited, and we cannot use our preferred distribution.
This is where an embedded OS comes in handy, allowing us to work with tiny mass memory's sizes, from 256 MB to 16 MB or less, by still having a reasonable set of ready-to-use programs and already made customization mechanisms.
In this chapter, we'll look at the flash memories (especially the NAND ones), and the software used to manage them and that allows the developer to see these storage devices more or less as a normal disk. So, we will present Linux's Memory Technology Device (MTD) and the two major filesystems that can run over them, that is, JFFS2 and UBIFS.
Then, we'll present two of the most famous embedded distributions used in these days: Yocto and OpenWrt. We'll then show how you can download, compile, and then install them over the SAMA5D3 Xplained board, which is the only one that has a NAND flash onboard.
As the last step, for each embedded distribution, we will show you how an embedded developer can write their own application and how they can add it to Yocto and OpenWrt in order to extend them.