Lecture-3B (Embedded Linux)
Lecture-3B (Embedded Linux)
Lecture-3B (Embedded Linux)
EEE 4765
Embedded Linux
Introduction to Embedded Linux
Embedded Linux, though utilizing the same Linux kernel, is quite different from the standard Linux OS.
Embedded Linux is specifically customized for embedded systems. Therefore it is has a much smaller
size, requires less processing power and has minimal features. Based on the requirements of the
underlying embedded system, the Linux kernel is modified and optimized as an embedded Linux version.
Such an instance of Linux can only run device-specific purpose-built applications.
✓ Smart TVs
✓ Wireless routers
✓ Tablet PCs
✓ Navigation devices
✓ Other industrial and consumer electronic equipment
Linux used in Embedded Systems
Originally Linux was developed for desktop PC's (based on x86 processor architecture). Linux is basically a kernel and the
source code is available in kernel.org. There were many Linux distributions created to support desktop PC. The most
popular ones are Fedora, Debian, Ubuntu etc. We cannot install these Linux distributions on embedded systems because
there are lots of changes from desktop PC environment to embedded systems. The major differences are like
✓ Embedded systems are based on non x86 processor architecture such as ARM, MIPS, PowerPC etc.
✓ Embedded systems boot from flash instead of hard-drives and support flash filesystems.
✓ Embedded systems don't support BIOS unlike desktop PC.
✓ Embedded systems are resource constrained and hence can't run bulky OS.
✓ Embedded systems are battery operated and low power devices in general
✓ Embedded systems may be based on different processors and support different peripherals based on customer
requirements and hence the hardware is not generic like desktop PC.
✓ Embedded systems require real time performance.
Embedded Linux is basically a Linux distribution specific to the target Hardware. Companies like MontaVista, TimeSys,
Windriver are the major players in the embedded Linux domain.
The Yocto project is the open source embedded Linux project supporting numerous embedded hardware boards.
Embedded Linux mainly has the BSP (board support packages) specific to Embedded hardware board.
Definition: continued …
Embedded Linux generally refers to a complete Linux distribution targeted at embedded devices. Embedded Linux,
though utilizing the same Linux kernel, is quite different from the standard Linux OS. Embedded Linux is specifically
customized for embedded systems. Therefore it is has a much smaller size, requires less processing power and has
minimal features.
Based on the requirements of the underlying embedded system, the Linux kernel is modified and optimized as an
embedded Linux version. Such an instance of Linux can only run device-specific purpose-built applications.
Android OS is a type of embedded Linux, customized to be used on smartphones. Other devices on which embedded
Linux is used include:
Smart TVs
Wireless routers
Tablet PCs
Navigation devices
Main Components
Embedded Linux systems have four main components : toolchain , bootloader, kernel and root file system.
✓ compiler is use for converting higher level code in machine understandable code.
✓ linker link pre-define function to our executable code. linker is mostly part of compiler.
✓ Libraries is collection of executable of pre-define functions.
❑ root filesystem is the filesystem that is contained on the same partition on which the root directory is located,
and it is the filesystem on which all the other filesystems are mounted.
What is Linux Kernel
The word "kernel" means "seed" or "core". In computer science, a "kernel" is the "core" or central part of something
around which everything else is built.
A kernel is the lowest level of easily replaceable software that interfaces with the hardware in the computer. It is
responsible for interfacing all of your applications that are running in “user mode” down to the physical hardware, and
allowing processes, known as servers, to get information from each other using inter-process communication (IPC).
/ This is the root directory which should contain only the directories needed at the top level of the file structure
/bin This is where the executable files are located. These files are available to all users
/lib Contains shared library files and sometimes other kernel-related files
/home Contains the home directory for users and other accounts
/etc Supervisor directory commands, configuration files, disk configuration files, valid user lists, groups, ethernet, hosts, where to
send critical messages
/usr Used for miscellaneous purposes, and can be used by many users. Includes administrative commands, shared files, library
files, and others
/var Typically contains variable-length files such as log and print files and any other type of file that may contain a variable
amount of data
/kernel Contains kernel files