Sei sulla pagina 1di 1

EL-504: Developing Linux Device Drivers

Course Description: Course Outline:


Linux is now being designed into everything from super The GNU/Linux kernel
computers down to mobile phones. Fortunately, to deploy − Introduction to the Linux community
Linux in your design very few applications require the − A high level overview of the kernel and
knowledge to re-program the actual Linux kernel. terminology including: virtual memory;
However, most applications do require some user/kernel space; processes; threads;
customisation for the specific hardware devices in their tasklets
design. This course caters for the many engineers − How to download, patch and build the
needing only the skills to design and test a Linux device kernel
driver. − How to set up a cross-development
Course Objectives: environment
• To provide an overview of the Linux kernel internal The kernel programming environment
mechanisms available to a driver developer − Firstly the kernel and process
• To become a proficient Linux driver developer for debugging tools including: gdb, strace,
character, block and network devices printk, ksyms, Ismod and logging
• To recognise resource eating inefficient drivers, and daemons
tailor to minimise RT latency. − Insmod: Adding driver modules to the
kernel, Loadable modules: utilities,
Delegates will learn: symbols, parameters, revisions and
• The kernel module development cycle: edit, compile, compatibility
load, test and unload kernel module drivers − /proc: Talking directly to the kernel
• To write, compile and link simple application
programs to test drivers Driving the Kernel through /dev
• To build a kernel with a new built-in driver − /dev/File: Device Driver Interface:
special files, driver types: character
• To obtain a high-level appreciation of the relationship
and block, major-minor numbers
between GNU, Open Source, GPL, and LGPL.
− /dev: Registering: device <-> files
Pre-requisites: interface operations (read, write, ioctl,
• Good C poll…)
• Knowledge of embedded micros, interrupts etc. Kernel Mechanisms for the Driver
• Some Linux or any form of Unix familiarity would be − User <-> Kernel memory allocation,
helpful virtual-physical, paging, mapping, I/O
• This course would be an excellent compliment to the Ports
Feabhas EL-503: Developing for Embedded Linux. − Interrupts: Registering and Handling,
This is not mandatory though. Sharing, Disabling, SMP, Fast and
Who Should Attend: slow handlers; Bottom half and tasklets
Engineers interested in interfacing to custom hardware on − Task Queues, Scheduling and Linked
a Linux platform. Linux application programmers lists
interested in accessing Linux at a lower level. − Timing: sources of time, short/long
Communications engineers interested in the Linux TCP/IP delays, current time, jiffies, kernel
protocol stack. timers
− Blocking, Waiting and Sleeping:
Duration: queues, interrupting and waking up
Five days. − Polling and select application
Course Materials: interfaces
• A delegate handbook containing all the theory Advanced Kernel Issues
presentation slides and laboratory exercises − Network drivers
• CD containing all kernels and utilities for the − Race conditions, semaphores and
laboratory exercises. spin-locks
Related Courses: − Benchmarking; real time behaviour
EL-503 Developing for Embedded Linux. − Peripheral Buses: PCI and USB
− Adding a driver to the kernel boot
Course Workshop: image; creating your own Board
Drivers are written or customized to explore all theoretical Support Package (BSP)
material. The early sessions make use of a desktop PC
running Red Hat Linux. Further exercises then move to a
PowerPC embedded target running Linux for the more
Feabhas Ltd advanced driver testing. The exercises demonstrate that,
5, Lowesden Works through networking, Linux offers a rich and rapid cross-
Lambourn Woodlands development environment.
Hungerford, Berkshire Throughout the exercises we make extensive reference to
RG17 7RY, UK the kernel source, browsing with tools such as rgrep and
the GUI-based source navigator. For driver debugging,
Tel : +44 (0) 1488 73050 exercises include using conventional printk and oops
Fax: +44 (0) 1488 73051 methods, as well as advanced sessions using the GNU
debugger, gdb . The workshops are completed by adding
Email info@feabhas.com a driver “permanently” to a kernel image.
Web : www.feabhas.com

Last update 30/03/04

Potrebbero piacerti anche