Course Description:
This course demonstrates how to port an embedded Linux
system from version 2.4 of the kernel to 2.6. It describes
the differences between the two versions and the new
features. Using a practical example it covers changes to
kernel configuration and compilation, device drivers, the
driver model, the Native POSIX Threads Library, POSIX
timers, message queues and shared memory. Throughout,
the emphasis is on embedded and real-time applications.
Overview:
A two day course offering a practical approach to porting
applications to Linux 2.6.
Who Should Attend:
It is suitable for developers who are currently working on a
Linux 2.4 project and are considering moving to Linux 2.6.
Pre-Requisites:
• Good ‘C’ programming skills
• Familiar with Linux 2.4 configuration and application
programming
• Some knowledge of Linux device drivers.
Duration:
Two days.
Course Materials:
Student workbook.
Related Courses:
• EL-503 Developing for Embedded Linux
• EL-504 Developing Linux Device Drivers
• RTOS-201 Fundamentals of Real-Time Operating
Systems
Course Workshop:
Using an ARM9 (Digi ConnectCore Wi-9C) development board as an example, students will go through the steps of porting from Linux 2.4 to 2.6 and enhancing the system to make full use of the new features in 2.6.
|
Course Outline:
Introduction to Linux 2.6
- new kernel features, real time
enhancements, driver model, i/o
scheduler
- additional POSIX application interfaces
- implications for the tool chain
Moving to a 2.6 kernel
- Configuring and compiling 2.6
- Changes to modules
- Building out-of-tree modules
The Linux driver model
- What it is and how to use it
- Device classes and attributes
- User’s view of the device model: sysfs
The Linux event model
- How events propagate via hotplug
- Customising event notifications
- The hotplug event handler
- Creating device nodes using udev
- Udev vs devfs
Debugging kernel and modules
in 2.6
Kernel threads in 2.6
Changes to interrrupts handlers
and locking code
- Deferred processing using work
queues
Changes to the block driver
interface
- I/O schedulers
Posix threads
- Native Posix Threads Library vs LinuxThreads
- Thread Local Storage
- Named semaphores
New Posix interfaces
- Posix timers: timer resolution; the high
resolution timers patch
- Posix message queues
- Posix shared memory
System profiling using Oprofile
Realtime and 2.6
- Kernel preemption
- Lock-breaking
- Developments expected in the near
future: IRQ threads, PMutexes
|