Embedded Linux

Overview

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.

Embedded Linux icon.

Child Pages

U-Boot
ContentsEnvironment VariablesBooting Via TFTPSetting TFTP Up On Development ComputerSetting TFTP Up On Embedded DeviceEnvironment Variables To print an environment variable, use the printenv command: Shell uboot> printenv autoload autoload=yes 12 uboot> printenv autoloadautoload=yes To set an environment variable, use the setenv command: Shell uboot> setenv autoload=no 1 uboot> setenv autoload=no You don’t actually need the … Continue reading U-Boot
Yocto Project
Information about the Yocto Project used for building custom embedded Linux images. Includes a "Quick Start" tutorial on Yocto.
Zynq
Info about the Xilinx Zinq FPGA.

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