LFD450 Embedded Linux Development

Embedded Linux Development is designed to provide experienced developers a solid grounding in the methods used to adapt the Linux kernel and user-space libraries and utilities to particular embedded environments, such as those in use in consumer electronics, military, medical, industrial, and auto industries. This five day course includes extensive hands-on exercises and demonstrations, focused upon the tools necessary for developing embedded Linux devices. Upon mastering the material you will have a basic understanding of:

  • The Linux kernel architecture, emphasizing the essential points relevant to adapting the kernel to a custom embedded platform.
  • The techniques for right sizing the system to meet project constraints
  • The multitude of resources available for constructing a cross development environment for embedded projects
  • The options available for populating libraries and application user-spaces to meet the goals and constraints of embedded systems

You will step through all of these phases of Embedded Linux Development with laboratory exercises on an embedded board (provided by Linuxhotel). These exercises give you hands-on practice you can take directly back to your project. After class, students will get to take their embedded Linux development kit home for further practice.

Voraussetzungen

The course is primarily intended for experienced developers programmers and engineers who are interested in learning how to adapt Linux to an embedded system, especially those who have been assigned to a team tasked with designing such a system. The purpose here is to shorten the learning curve by providing a guided tour of the relevant points within the architecture of Linux systems.

While there is some discussion of kernel programming and how to write device drivers and other kinds of kernel modules, LFD411 is not primarily a programming class.

While there is some discussion of applications, this course focuses on the plumbing, the internals and design of embedded devices, not on how to write applications to run on them.

Knowledge of basic kernel interfaces and methods such as how to write, compile, load and unload modules, use synchronization primitives, and the basics of memory allocation and management, such as is provided by LFD420. Pre-class preparation material will be provided before class.

Inhalt

  1. Introduction
  2. Embedded and Real-Time Systems Concepts
  3. Cross-Development Environments: Goals and Needs
  4. Cross-Development Toolchain
  5. Setting Up a Target Development Board
  6. KBuild System
  7. Boot loaders and U-Boot
  8. Kernel Configuration, Compilation, Booting
  9. Device Drivers**
  10. Device Trees**
  11. Target Filesystem Packaging
  12. Build Target Root Filesystem
  13. Root Filesystem Choices
  14. Configuring uClibc
  15. Build BusyBox Utility Suite
  16. Kernel Monitoring and Debugging
  17. Right-Sizing
  18. Memory Technology Devices**
  19. Compressed Filesystems
  20. System Upgrades
  21. Real-Time Extensions

** These sections may be considered in part or in whole as optional. They contain either background reference material, specialized topics, or advanced subjects. The instructor may choose to cover or not cover them depending on classroom experience and time constraints.