Embedded/Real-Time Linux Dev.

Course Description

Linux has become increasingly popular as an embedded operating system. Such characteristics such as its reliability, robustness, open source, license-free nature, and successful implementation on a wide range of hardware, are some of the key reasons.

Overview

This four and one-half day course provides substantial practice with the key steps in developing an embedded Linux product. The course shows attendees how to configure a small Linux kernel, develop code within the kernel, such as for new system functionality or device drivers, and how to measure and obtain real-time performance with Linux.

 

The course begins with a complete, simple, project that walks the attendees through the entire process of creating a special version of the Linux kernel, creating a root file system, including just the libraries that are needed, and constructing a custom boot sequence.

 

Attendees will spend approximately 50 percent of the class time actually gaining hands-on experience with these topics.

 

Course Objectives
Attendees will learn:
Who Should Attend:

The course is designed for real-time or embedded engineers who are new to real-time or embedded Linux. Attendees should have experience with C and be able to perform basic Unix commands.

Duration

Four and one-half days

Course Materials

The workshop materials include a comprehensive student workbook and CD. The workbook contains all of the slides used in the course as well as hands-on lab exercises.

 

The CD contains the lab exercise code as well as a large amount of embedded and real-time Linux software.

 

This course may optionally be taught with the use of a representative embedded Linux device.

Course Workshop:

The workshop makes use of standard PC's with a desktop Linux distribution for development. The PC will be used as an example target for both real-time and embedded. Alternative platforms such as those with MIPS or PPC CPUs will be used as examples. Since Linux has been effectively ported to many architectures, the principles taught in the workshop are appropriate for a wide range of target platforms.

Embedded and Real-Time Linux
Development Outline

Embedded Linux Development

Objectives and format

What/Why/How/Who/Where of embedded Linux

Overview Of Project

Building an mp3 playing, web browser controlled, appliance

Configuring a Linux kernel

Building A Root File System

What directories are required?

Making busybox

Configuring the boot sequence

Configuring networking

Building A System Image

Device drivers

Inserting drivers

Stacked drivers

Libraries

Applications

running an embedded web server

mp3 software

Making A Boot Image

Syslinux

Putting the pieces together

Creating A Filesystem image

Bootloaders

U-Boot

GRUB, Syslinux

File Systems

Flash Devices

Read-Only File Systems

CRAMFS

Journaling File Systems

Benchmarking File Systems

Programming with Gnu tools

gcc

optimization

linker

debugging with gdb

Cross development

Cross compilation

Libraries and tool chains

How to configure the kernel for cross-compiling

Building the kernel and modules

Tools

Integrated Development Environments

Tracing

Finding Memory Errors

Profiling

Kernel And System Programming

Writing a system call

System call basics

Shared memory

Threads

Synchronization, Scheduling

Memory locking

Linux and Real Time

What is real time?

a real-time time line

user space vs. kernel space

issues

latencies

low latency patch

linear scheduling

Non-preemptive kernels

latency test tool

Real-Time Subkernels

RTLinux overview

Building RTLinux

Installing RTLinux

Programming with RTLinux

RTAI characteristics

Building RTAI

Installing RTAI

Programming with RTAI

Preemption

Preemptibility

Low Latency

Preemptible Kernels

Comparing Preemptible Solutions

Other Preemptibility Features

Benchmarking

Performance overview

System loads

Benchmark capabilities