Linux on embedded systems

As an embedded Linux ( German: "Embedded Linux" ) refers to an embedded system with a system based on the Linux kernel operating system. This does not imply the use of certain ( "Minimum " - ) libraries or applications with this kernel.

Species

Embedded Linux systems are usually grouped according to their various system properties, not their locations. That may be, inter alia, scalability, support for certain processors, the power consumption, the time response ( real-time capability ), the degree of possible user interactions or other essential factors.

Construction

General Structure

An embedded Linux system is roughly divisible into three layers. The bottom layer is provided by the underlying hardware. This is covered by the drivers of the following layer as good as anything on the hardware, which is a 32- bit processor provides. The second layer consists of the kernel, which is again coated in triplicate. The bottom layer of this is a low-level interface which provides a first hardware abstraction with small API for higher layers. After that small modules on ( pre - ) interpretation of structured data from the file system and network protocols, which receives and sends the kernel. At this point already initiated a process to standards can be set to higher layers. The last kernel layer is also called high-level abstraction layer and is equal or similar already with many Linux derivatives and Unixes. This layer is hardware independent with a few exceptions; here such as processes, threads, files, sockets, and signals are generated or processed. In the last layer of the embedded Linux system, various C libraries (or specifically memory-optimized for embedded systems replacement libraries) and also the application software are located. The libraries are usually dynamically linked with the applications.

Overview of Kernel

Development environments

In the development of embedded Linux systems can be broadly distinguished between cross-development and standalone setups ( ie non- cross-development ). Cross-development also can be divided into two subgroups Setup Linked Setup and Removable Storage. An example of cross-development is OpenWrt

Linked setup is the development environment that represents the classic cross-development. One uses a host system on which a larger IDE ( Integrated Development Environment) can run to implement the actual source code. This code is on the left (hence Linked Setup the name) transferred to the target on which then a boot loader, the kernel, and a (minimal ) root file system or a Network File System are. The links are serial connections such as RS232 or Ethernet, or both together. Due to the higher speed Ethernet is often used for the upload of the code on the target and the connection of the RS232 for the return direction for debugging with lesser amounts of data.

The structure of the Removable Storage Setup leans to the principle of Linked setup on, but in the development of an intermediate memory ( Storage) will be made ​​available on the second boot loader, the kernel and the root filesystem is stored by the host. On the target for the time being is only the first boot loader, which then boots the rest of the system from the cache.

In the development of so-called stand-alone setup is dispensed with a large separate development platform in favor of a single, viable targets. Obviously, this points to a certain size of the target back, because the development environment is now on his own For a given hardware, this option is popular since then all components to be developed to run from the outset in their natural work environment.

Hardware Used

In embedded Linux systems, a variety of different hardware apply. This is not only because it finally let in not yet supported hardware and drivers from scratch write ( ie from scratch) or because even able to use a lot of the potential hardware without adjustments finished off the peg distributions already, but because simply an overwhelming majority of potentially available hardware is supported by Linux. John Lombardo wrote in 2001:

This statement was referring only to usable input and output devices or interfaces, but you can probably say with a clear conscience that this is applicable to the vast majority of hardware, with the exception of the processors. At this point, the supported hardware components are called without any claim to completeness. Because Lombardo's testimony viewing the rest can ( could be dropped completely non-CPU ) hardware and, therefore, the emphasis will be placed on the processor families. Not common processor types are not automatically not supported, but simply used less frequently and usually provide individual solutions dar.

X86

A processor family very often used is the x86. The Linux support begins in principle with all versions of the 386ers. As already mentioned above, is ensured by the project ELKS ( Embedded Linux Kernel Subset ) the usability of Linux on 286 to better suit embedded Linux systems to the size requirements of small embedded systems. After the 486 Intel Pentium and also the corresponding other manufacturers were supported, which technologically and historically constituted the jump on superscalar CISC processors for Linux. Overall it can be said that the family of x86 an almost complete support of Linux experiences, but that does not ostensibly derived from the embedded space, but of workstations and desktop PCs. This can be justified why the series of x86 despite their wide Linux compatibility in the traditional environment of the embedded systems represents only a small part of the architecture used. More often find ARM, MIPS and PowerPC due to lower complexity and cost -effective way to production.

ARM

The ARM architecture ( Advanced RISC Machine) and the StrongARM are in the area of ​​embedded systems popular processors and indeed primarily due to their low power consumption. Therefore, they came early for embedded Linux systems into account and were supported. Although ARM is also a company that only the licenses are sold for the construction of their processors from her. All known processor manufacturers are licensees in / for ARM. The projects RTAI and RTLinux by the company FSMLabs ( there is a free and a commercial version will be available here ) have specific deals with the use of ARM architectures with regard to hard real -time applications for embedded Linux. The fact that this is for military end applications with highly cost- intensive products, incidentally, shows very clearly that one has very high expectations for Embedded Linux as a hard real- time operating system and does not shy away from a big expense. To mention a great future potential that in embedded Linux systems have often the Java coprocessors of ARMs can also be used.

ETRAX CRIS

ETRAX CRIS refers to a family of processors from Axis Communications. This ETRAX stands for Ethernet, Token Ring, axis (English AXis ), although the term is no longer correct because the support for token ring was removed with the younger models. These processors are based on the Code Reduced Instruction Set ( CRIS). Current models are ETRAX 100LX 100 MHz 32-bit RISC CPU and ETRAX 200FS 200 MHz 32-bit RISC CPU, which has a cryptographic accelerator and a microcode controlled via I / O processor. ETRAX CPUs are optimized for use in embedded Linux and are great by its high configurability, network integration of electronic devices. The Italian manufacturer ACME system has brought on the basis of the 100LX a fully functional Linux single-board computer with LAN and USB under the name Fox board on the market.

PowerPC

For the integration of PowerPC similarly ambitious work is operated as in the ARM architecture. This acronym is composed of two parts: Power is the abbreviation for performance optimization with enhanced RISC, roughly power optimization by advanced RISC and PC stands for Performance chip, so high-performance chip. In some cases, this architecture is also called AIM, which is composed of the initial letters of the developer company Apple, IBM and Motorola. There are 32- bit and 64- bit versions which are equally supported by Linux. In particular, here the real-time RTAI and RTLinux projects are responsible for the PowerPC to use in hard real-time environments on a Linux operating system, and ensure the Java support.

MIPS

Although the MIPS architecture, Microprocessor without interlocked pipeline stages means as much as non-pipelined microprocessor locks, is also characterized by lower complexity and lower costs, the Linux support for this is not yet mature. It may be a matter of time before the 32-bit or 64- bit version keeps in embedded Linux systems catchment; currently, the support is limited to a port of single distributions, since the instruction set of the licensee to licensee sometimes varies greatly. Since the MIPS architecture is originally " grew up" in the workstation and server area, was often tailored to a specific motherboard and Java support was not assured, the use is as the basis of an embedded Linux system is not without controversy, or at least time-consuming and leads to proprietary solutions.

Hitachi SuperH

Hitachi SuperH is a RISC -like processor architecture, which was originally developed by Hitachi and later built under license. It is thanks to their "bandwidth" from 8 to 64 bits (actually only 32 and 64-bit, 8 -bit and 16 -bit are the similar predecessor ) are often used in embedded systems. The use of Linux on this architecture, however, was more common after the development of a version with MMU or after adjustment of μCLinux on MMU - less processors. The same can be said for the address width: Linux was initially only on the 32 -bit versions of the application, wait for the development of μCLinux on 16- bit wide data paths. For this architecture is the fact that it consumes little power and is relatively inexpensive.

Motorola 68000

The 68000 family of Motorola, also called m68k is used with 8, 16 and 32 bit CISC processor as an embedded Linux system with real-time applications. In non- Linux systems, it was also often used when real-time capability was required; here additionally mathematical coprocessors were often related. For this architecture, however, is to say that Linux offers for them currently little support, which may be due to the lack of Java support.

Other hardware components

As mentioned above, the Linux compatibility for a variety of hardware is virtually guaranteed. This applies to buses, interfaces, storage, and networks as well as for O and other peripheral devices. In general, this formulation relates to the first conventional devices. But even if there is still no support for newer hardware such as a satellite receiver, then it means a relatively small expenditure of time to implement their own drivers.

It is also noteworthy that offered drivers often support hardware monitoring. This is done either by watchdogs in the software or as a separate piece of hardware or the interpretation of special monitoring signals of the respective hardware itself

306051
de