
Developing for Embedded Linux
5 days
Télécharger le descriptif au format pdf
This course is delivered in co-operation with Doulos' training partner
Feabhas , who specialise in training courses for real-time embedded developers.
Course description
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.
Overview
A 5-day course showing how to implement Linux on a typical development board (ARM core).
Course Objectives
After completing the course attendees will:
• 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
Delegates will learn
• How to configure and build a customised Linux 2.6 kernel
• How to construct a compact root file system from scratch
• How to develop and debug code for the target board, using the Eclipse IDE
• How to write single and multi-threaded programs using POSIX functions
• Which aspects of the system affect real-time performance and how to reduce scheduling latencies
Pre-requisites
• Good "C"™ programming skills
• General knowledge of an RTOS or embedded operating systems
• Experience of using Linux or a version of Unix will be useful, but not essential
Who should attend?
Software engineers who are developing applications for embedded or real-time Linux. Engineers wishing to assess the suitability of Linux for their next application.
Materials
• Student workbook
Related courses
• Developing Linux Device Drivers
Course workshop
The course presents embedded and real-time concepts applied to Linux using an ARM9 development board as the target (a Digi ConnectCore Wi-9C).
The host development system is a standard PC running Linux. We use the target as an example of a simple embedded system which can control hardware
via a simple digital I/O interface. Lab sessions follow a logical sequence, and result in oethe world™'s first Linux-powered web-controlled washing machine.
Course Outline
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
F• ile-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
Top of Page