To start learning embedded Linux, one should have familiarity with Linux operating system, Linux kernel internals and different distribution of Linux. The Linux is an open source operating system. It’s a vast platform for development of embedded systems. Embedded systems are everywhere and available in all ranges, small control applications require smaller microprocessors and large parallel processors have colossal memory requirements.
It was developed in the 20th century. Embedded system is more than 50 years old market. Embedded systems are fundamentally single board computers. But the functions are limited and specific. Computer is made up of all components like memory unit, microprocessors, input/output unit etc. are embedded on a single board. Their functionality is subject to constraints, and is embedded as a part of the complete device including the hardware, in contrast to the Desktop and Laptop computers. Embedded system has software part which is used to vendor specific instruction sets that built in as firmware but in the last decade, the Moore’s law brought extreme changes. Embedded Linux usually states to complete Linux distribution targeted at embedded devices. There is no specific Linux kernel for embedded devices. An extensive range of devices, workstations and embedded systems can be built up by the same Linux kernel code. Mentor graphics is one of leading embedded Linux service providers. Following diagram shows their commercial platforms and services.
Main components of embedded Linux development
- Cross development toolchain
- Kernel configuration
- device drivers
- Integrated development environment
- Root file system concepts
- Boot loader and its configuration
- GNU debugging tools
- hardware platform / target board
- Host work station
Classification of embedded Linux system:
The classification of embedded Linux system has been made by considering the structure of the system. It may also be classified on the basis of size and time limits.
Linux features a micro architecture which usually consume small memory (100 KB). It combined with the networking stacks and a few basic utilities can fit in very efficiently in 500 K of memory and it is adaptable to work with minute RAM and ROM. ETLinux, LEM, uClinux, uLinux, ThinLinux are some examples of footprint embedded Linux. The apparent size of an embedded system determines the capabilities offered by the hardware. On the basis of size, embedded system has been categorized in three embedded Linux that are small, medium and large.
Small systems have low powered CPU, ROM is less than 4 MB and RAM is 8 to a 16 MB.
Medium size system:
Medium size systems contain medium powered CPU, RAM of 32 MB and removable memory cards.
Large size systems:
Large size systems contain powerful CPU or multi CPUs, large RAM and permanent storage.
Many elements of hardware initialized when power is first applied. By resetting, each processor has a number of predefined actions and configurations. These actions and configurations are fetching initialization code from an onboard removable device. The boot loader helps in breathing life into processor and other hardware components. Most of the times processors have defaulting address. The default address fetch the starting bytes of code by releasing of reset. The designers of hardware make use of this data to place the outline of Flash memory on the board. They also use this information to select which address range the flash memory to respond. That’s how, when power is given for the first time, a predictable address fetch the code and establishment of software control can be done. The early initializing code id provided by Boot loader. It’s also initialize the board to run programs. The earlier initialization code is written is assembly language which is the native language of processors.
There are some components of embedded Linux system:
Kernel: To add and remove code from the Linux kernel at rum time we use a machine called loadable kernel module. They are responsible for communication between kernel and hardware without having to know the functionality of hardware and they are perfect for the drivers of the device. Kernel module run in kernel space. Memory addresses of kernel space and user space are unique and they don’t overlap. This methodology shows that the applications that run in user space have reliable view of hardware, irrespective of the platform of hardware.
The Linux kernel works with root file system. This is the file system on which the roots can be mounted. There are two types of file systems for desktop and server distributions. These are the initial root system and real root system. The initial root system is used for mounting and running the latter. The initial root system is used to load drivers in a desktop. The switch between the initial root file system and the real root file system is called a pivot.
Kernel needs configuration files to know the users and groups in system. It also need configuration files to manage file permissions. These files are not read by programs and are used by the kernel to provide a function by a system library.
C library: C library is a library for developing embedded Linux systems. C library is smaller than GNU library. However, all the applications that are supported by G library work accurately with C library.
Cat, cp, cd, df, dd etc are the basic commands of Linux system and used for different purposes.
I will post a series of articles on embedded linux like embedded linux workstation selection. Difference between host and target, Types of host and target. How to select host and target for embedded linux development.