Course Description: An advanced course focused on
the design and development of Board Support Packages (BSPs) and Device
Drivers for the Linux Operating System (OS). The first part of the course
focuses on gaining an understanding of the Linux BSP, highlighting areas
of concern for real-time embedded application development using Linux
including device driver issues and the BSP certification process. The
second part of the course focuses on gaining an understanding of the Linux
I/O sub-system, the APIs necessary for each type of device driver as well
as advanced device driver issues such as how to deliver device drivers for
Linux.
Overview: This course introduces the Embedded
Linux BSP and Linux Device Drivers. The course focuses on the development
and creation of Linux BSPs and Device Drivers for use in Linux
applications.
Course Objectives:
-
To provide an initial understanding of the Linux
BSP and practical experience of developing Linux BSPs.
-
To provide an understanding and practical
experience of developing Linux device drivers for real-time and embedded
systems.
-
To give you the confidence to apply these new
concepts to your next Linux project.
Students will learn:
-
Terminology and use of Linux BSPs and Device
Drivers
-
Understanding the BSP Layout
-
Development Tools and Debugging
-
Board Initialization
-
File Systems that are available in Linux
-
Understanding the basic Linux I/O APIs
-
Testing, Compliance and Device Driver Issues
Pre-requisites:
Who Should Attend:
The course is designed for real-time engineers who are
building or modifying their own BSP using customized or new Device
Drivers. It is also targeted at experienced developers requiring a
refresher course on BSPs and Device Drivers.
Course Materials: Student Handbook
Course Workshop:
The course makes use of Linux target hardware or the Red
Hat Linux desktop during the real-time practical exercises. For on-site
courses it may be possible for us to target other hardware on request, or
offer the course without target hardware if you are building a custom
board.
Course Outline:
Introduction:
Terms
Getting Help
Linux Models
Platforms and Toolsets:
Board Support Packages
Software Development Kits
Linux File Systems:
The Root File System
The Virtual File System
The /proc File System
Native Linux File Systems
Flash File Systems
The Basic Linux I/O System:
init_module()
cleanup_module()
struct file_operations
open() and release
read() and write()
ioctl()
Development Tools and Debugging:
When an Emulator is Necessary
Bootup Debugging
Key BSP Files
Understanding the SDK Layout:
Key SDK Directories
Key SDK Files
GCC Cross_Compile Executables
GCC Standard Executables
Testing and Compliance:
BSP Validation Testing
BSP and SDK Certification Issues
Kernel Modules vs Applications:
The Kernel Symbol Table
Initialization and Shutdown
Automatic and Manual Configuration
Data Transfer from Kernel to User Space:
Kmod and Modularization:
Loading Modules on Demand
Intermodule Communication
Version Control in Modules
Key Device Driver Types:
Char and Block Devices
Network Devices
Virtual Devices
The Full Char API
Advanced Char Driver Functions
The Block Device Driver API
Time Management and Device Drivers
Memory Management for Device Drivers
kmalloc
get_free_page
vmalloc
I/O Ports and I/O Memory
Advanced Char Driver Functions
MMAP and DMA
Advanced Char Driver Functions
The Network Device Driver API
Interrupt Handling
Installing and Controlling Interrupt
Handlers
Implementing a Handler
Bottom-Half Processing and
Tasklets
More Driver APIs
Real-Time Clock (RTC)
Watchdog (WDT)
NVRAM
Error Handling in the Kernel
Access to Peripherals
PCI, PC104 and cPCI
VME
ISA
Lecturer – Mike McCullough is Director of
Professional Services for Embedded Planet. Mike has a BS in Computer
Engineering and an MS in Systems Engineering from Boston University. A
20-year electronics veteran, he has held various positions at Wind River
Systems, Lockheed Sanders, Stratus Computer and Apollo Computer. Embedded
Planet is a provider of embedded systems hardware, Eclipse-based software
development tools, training and consulting services for the embedded
systems market.