Embedded Linux
Embedded Linux is the name given to the Linux operating system when it is run on resource-constrained systems, as opposed to traditional laptop, desktop or server style computers.
Differences With “Standard” Linux
Embedded devices typically have fewer resources and hardware than a traditional computer running Linux. For example, embedded Linux might run on a single-board MCU which does not have a screen, harddrive or speakers. The board will usually have far less ROM and RAM than a traditional computer.
Because of the resource/hardware constraints, the embedded Linux kernel is usually stripped of all unneeded features, resulting in a much smaller ROM/RAM footprint.
Functionality Of MCUs
A MCU designed to run embedded Linux (or any other high-level operating system) usually has some (or most) of the following features:
- CPU (e.g. a ARM A9)
- MMU (if no MMU is present, a special type of Linux has to be run)
- Memory interface
- Graphics processor
- Ethernet
- USB
- UART interface
- SPI interface
- I2C interface
- CAN interface
- Analogue-to-digital converters (ADCs)
- Timers
- General purpose IO (GPIO)
- Watchdog timer (WDT)
- JTAG
Development Kits
2 of the most popular embedded Linux development kits are the RaspberryPi and the BeagleBone.
BusyBox
BusyBox is a bunch of stripped down Linux tools that are compiled into one executable. This makes it a popular choice for embedded devices, as each separate executable on an embedded system requires a significant amount of overhead.
Embedded ABI
An embedded application binary interface (EABI) is very similar to a normal ABI. It specifies:
- File formats
- Data types
- Register usage
- Stack frame organisation