Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

ARM websites use two types of cookie: (1) those that enable the site to function and perform as required; and (2) analytical cookies which anonymously track visitors only while using the site. If you are not happy with this use of these cookies please review our Privacy Policy to learn how they can be disabled. By disabling cookies some features of the site will not work.

Developing for Embedded Linux by Doulos Ltd

Training

Product Description

This course is delivered in co-operation with Doulos' training partner Feabhas, who specialise in training courses for real-time embedded developers.
Linux is often used as an embedded operating system, and yet it is still regarded as something of a black art by many. This course aims to remove the mystique by showing exactly how to deploy Linux on a typical embedded target board through a combination of theory and practice.
Starting a board with no operating system, delegates will go through a simulated product cycle during which they will build and boot a Linux kernel, build a root file system, write a device driver and a multi-threaded application. Finally, they will review the performance of the resulting system and consider what changes could be made to improve it's real-time performance.
* Describe the four essential components of an embedded project: toolchain, kernel, bootloader and root file system
* Show how to control hardware from a device driver (in outline, see EL-504 for a more in-depth treatment)
* Give an overview of application development, profiling and debugging
* Show how to configure NOR and NAND flash memory for robust code and data storage
* Look at the issues of real-time and Linux
Introduction
Linux in an embedded context • The 4 basic elements: toolchain, bootloader, kernel, root file system
The Linux Kernel
Virtual memory • configuration and cross-compiling
Booting Linux
The Linux boot sequence • boot-loaders: U-boot • loading images using TFTP
The root file-system
Creating a minimal root file-system using Busybox • The C library: glibc vs uClibc. • Creating a RAM disk image
Network configuration
Static and dynamic IP addresses • mounting the root file system over NFS
Device drivers
How to write a simple driver to access GPIO pins • kernel modules
Debugging
Logging using , syslogd • remote debugging using Eclipse and gdbserver.
POSIX programming
Processes: fork and exit, scheduling • signals and signal handlers • time and timers • pipes, message queues, semaphores, shared memory
POSIX Threads
Threads vs processes • synchronising threads using mutexes and condition variables.
Flash memory
the Linux Memory Technology Devices Layer
File systems
File-system suitable for embedded applications • Study of cramfs, tmpfs, jffs2 and yaffs
Real time Linux
Typical Interrupt latency. kernel pre-emption modes • the real-time patch • practical considerations
Profiling
Profiling using using gprof and Oprofile
Real time sub-kernels
Introduction to writing hard real-time tasks using RTAI

Developing for Embedded Linux

Market Segment(s)

  • General Purpose Products/Services
 
ARM Connected