Embedded Linux

from Wikipedia, the free encyclopedia

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

species

Embedded Linux systems are usually classified based on their various system characteristics rather than their locations. That u can. a. the scalability , the support for certain processors , the power consumption, the time behavior ( real-time capability ), the degree of possible user interactions or other essential factors.

construction

general structure

An embedded Linux system can be roughly divided into three layers. The lowest layer is provided by the underlying hardware. The drivers of the following layer cover almost everything in terms of hardware that a 32-bit processor offers. The second layer consists of the actual kernel , which is again three-layered. The lowest layer of this is a low-level interface, which offers a first hardware abstraction with a small API for the layers above. This is followed by small modules for the (preliminary) interpretation of structured data from the file system and network protocols, which the kernel receives and sends. At this point, the first steps towards standards at higher levels can be set. The last kernel layer is also called the high-level abstraction layer and is already the same or similar in many Linux derivatives and Unixes. With a few exceptions, this layer is hardware-independent; here z. B. processes, threads, files, sockets and signals generated or processed. In the last layer of the embedded Linux system there are various C libraries (or memory-optimized replacement libraries especially for embedded systems) and the application software. The libraries are usually linked dynamically with the applications.

Kernel overview

Development environments

When developing embedded Linux systems, a rough distinction can be made between cross-development and standalone setups (i.e. non-cross-development). Cross-development can also be divided into the two subgroups Linked Setup and Removable Storage Setup . One example of cross-development is OpenWrt .

Linked setup is the development environment that represents classic cross-development. A host system is used on which a larger IDE ( Integrated Development Environment ) can run to implement the actual source code. This code is transferred via the links (hence the name Linked Setup) to the target, on which a bootloader, the kernel and a (minimal) root file system or network file system are located. The links are serial connections such as RS232 or Ethernet or both together. Due to the higher speed, Ethernet is often used for uploading the code to the target and the connection of the RS232 for the reverse direction for debugging with less data traffic.

The structure of the Removable Storage Setup is basically based on that of the Linked Setup, but during development an intermediate storage device is made available on which the second boot loader, the kernel and the root file system from the host are stored. At first there is only the first boot loader on the target, which then boots the rest of the system from the cache.

When developing with a so-called standalone setup , you do without a large, separate development platform in favor of a stand- alone, developable target. Obviously, this indicates a certain size of the target, because the development environment is now on itself. Given the hardware, this option is popular because all components to be developed then run in their natural working environment from the outset .

Hardware used

A large number of different hardware can be used in embedded Linux systems. This not only applies because, after all, drivers can be written from scratch ( i.e. from scratch ) with hardware that is not yet supported , or because even finished off the peg distributions can use a large part of the potential hardware without adjustments, but because it is simply an overwhelming one Most of the potentially available hardware is supported by Linux. John Lombardo wrote in 2001:

Your application will determine what type of I / O devices you need. Fortunately, a veritable army of Linux programmers have had years to develop and refine the necessary device drivers to support nearly any hardware imaginable.

This statement only referred to usable input and output devices or interfaces, but one can say with a clear conscience that this is applicable to most of the hardware, with the exception of the processors. The supported hardware components are listed here without claiming to be exhaustive. Because of Lombardo's statement, the consideration of the remaining (i.e. non-CPU) hardware can be omitted and the focus can therefore be placed on the processor families. Processor types not mentioned are not automatically not supported, but simply used less often and mostly represent individual solutions.

x86

A very commonly used processor family is the x86 . Linux support basically begins with all versions of the 386. As mentioned above, the ELKS (Embedded Linux Kernel Subset) project also ensures the usability of Linux on 286s in order to better adapt embedded Linux systems to the size requirements of smaller embedded systems. After the 486, Intel's Pentiums and the corresponding makes from other manufacturers were also supported, which technologically and historically represented the leap to superscalar CISC processors for Linux. Overall, it can be said that the x86 family is supported almost completely by Linux, which, however, does not come primarily from the embedded area, but from workstations and desktop PCs. This explains why the x86 series, despite its broad Linux compatibility, only makes up a small proportion of the architecture used in the traditional environment of embedded systems. ARM, MIPS and PowerPC find their way into production more often because of their lower complexity and lower costs.

POOR

The ARM architecture (Advanced RISC Machine) as well as that of the StrongARM are popular processors in the area of ​​embedded systems, primarily due to their low power consumption. Therefore, they were considered for embedded Linux systems early on and were supported. Although ARM is also a company, they only sell the licenses to build their processors. All known processor manufacturers are licensees at / for ARM. The projects RTAI and RTLinux from the company FSMLabs (a free as well as a commercial version are offered here) dealt more specifically with the use of ARM architectures with regard to hard real-time applications for embedded Linux. The fact that these are military end applications with very cost-intensive products shows very clearly that people have very high expectations of Embedded Linux as a hard real-time operating system and do not shy away from high costs. It should be mentioned as future -oriented that the Java coprocessors of the ARMs can often be used in the embedded Linux systems .

ETRAX CRIS

ETRAX CRIS is the name of a processor family from Axis Communications. Here is ETRAX for E thernet, T oken R ing, A (Engl. Chse AX is), 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 C ode R educed I nstruction S et (CRIS). Current models are ETRAX 100LX with 100 MHz 32 bit RISC CPU and ETRAX 200FS with 200 MHz 32 bit RISC CPU, which has a cryptography accelerator and an I / O processor that can be controlled via microcode . ETRAX CPUs are optimized for use under Embedded Linux and, thanks to their high degree of configurability, are ideally suited for the network integration of electronic devices. The Italian manufacturer ACME Systems has launched a fully functional Linux single-board computer with LAN and USB under the name Fox Board based on the 100LX.

PowerPC

The work involved in integrating the PowerPC is as ambitious as with the ARM architecture. This acronym consists of two parts: Power is the abbreviation for Performance optimization with enhanced RISC , i.e. roughly performance optimization through extended RISC, and PC stands for Performance Chip, i.e. high-performance chip. In some cases this architecture is also called AIM, which is composed of the first letters of the developer companies Apple, IBM and Motorola. There are 32-bit and 64-bit versions, which are equally supported by Linux. In particular, the real-time projects RTAI and RTLinux are in charge of using the PowerPC in hard real-time environments under a Linux operating system and ensuring Java support.

MIPS

Although the MIPS architecture , microprocessor without interlocked pipeline stages, means something like microprocessor without pipeline locks, is also characterized by lower complexity and thus lower costs, Linux support for this is not yet fully developed. It may be a matter of time before the 32-bit or the 64-bit version finds its way into embedded Linux systems; Support is currently limited to porting individual distributions, as the instruction set can vary greatly from licensee to licensee. Since the MIPS architecture originally “got big” in the workstation and server area, was often tailored to a special motherboard and Java support was not ensured, its use as the basis of an embedded Linux system is not undisputed or at least complex and leads to proprietary solutions.

Hitachi SuperH

Hitachi SuperH is a RISC-like processor architecture, which was originally developed by Hitachi and later also built under license. Thanks to its "bandwidth" of 8 to 64 bits (actually only 32 and 64 bits; 8-bit and 16-bit are the similar predecessors), it is often used in embedded systems. The use of Linux on this architecture only became more common after the development of a version with MMU or after the adaptation of μCLinux to MMU-less processors. Something similar can be said for the address width: Linux was initially only used on the 32-bit versions, and only after the development of μCLinux was also used on 16-bit data paths. The advantages of this architecture are that it consumes little electricity and is relatively cheap to produce.

Motorola 68000

The 68000 family from Motorola, also known as the m68k, is used with 8, 16 and 32 bit as the CISC processor of an embedded Linux system with real-time applications. It was also often used in non-Linux systems when real-time capability was required; often mathematical coprocessors were also used here. Regarding this architecture, however, it should be said that Linux currently offers only little support for it, which may also be due to the lack of Java support.

Other hardware components

As mentioned above, Linux compatibility is virtually guaranteed for a wide variety of hardware. This applies to buses, interfaces, memories and networks as well as to I / O and other peripheral devices. In general, this formulation initially applies to conventional devices. But even if there is no support for newer hardware such as satellite receivers, it means a relatively low expenditure of time to implement your own drivers.

It is also worth mentioning that the drivers offered often support hardware monitoring. This is done either via watchdogs in the software or as a separate hardware part or via the interpretation of special monitoring signals from the respective hardware itself.

literature

  • Jürgen Quade: Learn Embedded Linux with the Raspberry Pi: Build and program Linux systems yourself. , dpunkt Verlag, Heidelberg 2014, ISBN 978-3-86490-143-0
  • Karim Yaghmour: Building Embedded Linux Systems. O'Reilly, Beijing [et al. a.] 2003. ISBN 0-596-00222-X

credentials

  1. Via OpenWrt Buildroot . Retrieved on May 15, 2012. A brief description

Web links

Commons : Embedded Linux  - collection of pictures, videos and audio files