Embedded Linux

When facing the task of assembling an embedded Linux system, one may easily feel overwhelmed by the multitude of possible variants and available packets. But what do I really need in order to fulfill my set of requirements? And how can I achieve these requirements by means of open source software?

On the one hand, this training course aims at providing a guideline for a first draft and the design of a specific target system. On the other hand, it presents available tools and their target-oriented application in the context of an embedded Linux system.

During this training course, you will acquire practical skills by building an embedded Linux system, starting with the JTAG-connection and continuing from the bootloader to the kernel including a root file system. A complete embedded Linux system will be built from bare-bone hardware, an industry-standard ARM-based motherboard provided by Wiesemann und Theis Ltd.

Each participant will have a dedicated board at his disposal. The exercises are designed platform independently, thus enabling the easy transfer of acquired skills to the context of your own projects. Only open source components available across all established architectures will be used.

The training course is structured into four parts:

  • Components and design of embedded Linux
  • Design of an embedded Linux system
  • File systems for embedded Linux
  • Programming with embedded Linux

The participant will acquire the necessary skills required to indepentently create an embedded Linux system. The tools shown are of exemplary nature and knowledge acquired can be transferred easily to other tools.

Trainer und Dozenten

Andreas Klinger is a freelance tutor, consultant and developer. As a Linux specialist, he is engaged in internal Linux kernel structures, and especially its deployment in Linux-based embedded systems.

As an author of professional artcles and convention speaker, he is communicating open source technologies.

Voraussetzungen

The participant should have basic knowledge about emdedded systems and first experiences with Linux in a server/desktop setting, comparable to our training courses Linux for developers and Linux admin basics.

Inhalt

Components and design of embedded Linux

  • Differences between embedded and desktop/server Linux
  • Development system, cross-development toolchain
  • Bootloaders tasks, u-boot, barebox und grub
  • Debugging the bootloader (JTAG, OpenOCD, u-boot, gdb)
  • Individual board adaptations
  • Configurieren, creating and installing the Linux kernel
  • Adapting the kernel to specific boards

Structure of the embedded Linux systems

  • Root filesystem structure, mandatory components
  • Libraries: glibc, uClibc, eglibc und dietlibc
  • Generation tools: buildroot, open-embedded
  • Important demons: inetd, web server, SSH server, syslogd
  • Adaptions on the target system and their generation

File systems for embedded Linux

  • Linux file systems: ext2, ext3 und ext4, squash-FS
  • FTL-flash with controllers (CF-Card, USB-stick, SD-card, ...)
  • Raw-flashes (NAND, NOR): Structure, function and requirements
  • Flash filesystems: JFFS2, UBIFS
  • Network file systems: NFS, samba, CIFS
  • Pseudo-FS: Temp-FS, RAM-FS, procfs, sysfs, debugfs

Developing embedded Linux applications

  • Debugging: strace, ltrace, gdb, gdbserver
  • Files, pipes and processes
  • Posix-IPC: Message-Queue, semaphore, shared memory
  • Multithreading, native Posix threading library (NPTL)
  • Thread synchronisation: Mutex, RW-lock, barrier