It is designed for those who want to get a start on gaining a solid understanding of how to adapt the Linux kernel and customized user-space libraries and utilities to embedded platforms.
In order to save time, time-consuming steps such as the compilation of major components from source, assembling root filesystems, etc, are explained and results are provided. In addition somel sections of the full course are abbreviated or skipped, depending on the needs and interests of the audience.
This class is designed to give you the necessary tools to develop an embedded Linux device. It will cover the following topics:
1 – The Linux kernel architecture, with emphasis on the essential points needed to adapt the kernel to a custom embedded application
2 – The techniques for right sizing the system to meet project constraints
3 – The multitude of resources available for constructing a cross development environment for embedded projects
4 – 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 target device to provide hands-on practice you can take directly back to your projects.
The course is primarily intended for experienced programmers and engineers who are interested in learning the fundamentals of adapting Linux to an embedded system, especially those who have been assigned to a team tasked with designing an embedded system.
The purpose is to shorten the learning curve by providing a guided tour of the relevant points within the architecture of Linux systems. To get the most use out of the course, some prerequisites are:
1 – Be proficient in the C programming language.
2 – Be familiar with basic Linux (Unix) utilities, such as ls, rm, grep, tar,
3 – have a familiarity with command shells and scripts.
4 – Be comfortable using any of the available text editors (e.g., vi, emacs.)
5 – Know the basics of compiling and linking programs, constructing Makefiles etc.; i.e., be comfortable doing application developing in a Linux or Unix environment.
6 – Have a good understanding of systems programming in a Unix or Linux environment, at least from the standpoint of writing applications.
Experience with any major Linux distribution is helpful but is not strictly required. The course will survey the wide range of CPUs supported by the Linux community that are used in embedded systems, as well as some other hardware components that have good support.