Highlights
- Developing for embedded Linux
- The Linux kernel
- Kernel modules
- Device driver basics
- Kernel debugging
- Sysfs and proc
- Wait queues and completions
- Kernel locking
- Advanced character driver functions
- Time and timers
- Interrupts
- Accessing hardware
- Sharing memory
Course Details
Developing for embedded Linux
- Getting and configuring a cross toolchain
- Linux bootloaders: U-Boot
The Linux kernel
- Where to get the kernel source
- Board support packages
- Kernel configuration options
- Building and loading a kernel
Kernel modules
- Writing a module and compiling "out of tree"
- Loading and testing on the target
- Passing parameters
- Modules and the GPL license
Device driver basics
- Types of device driver
- Different ways for applications to interact with the driver
- Character drivers
- Building and testing a simple “misc” character device driver
Kernel debugging
- Review of printk and the magic sysrq key
- Interactive debugging using kgdb
- What to do when the board won't boot
Sysfs and proc
- Classes of driver: /sys/class
- Driver attributes
- Extending the proc file system
Wait queues and completions
- Waiting for things to happen: wait queues
- One-shot events: completions
Kernel locking
- Mutual exclusion using kernel mutexes
- Spinlocks
- Atomic operations
Advanced character driver functions
- Notifying events: poll and fasync
- Driver specific interfaces: ioctl
Time and timers
- Getting the system time: high resolution timers
- Delays and sleeps
- Kernel timers
Interrupts
- Installing an interrupt handler
- Synchronising using using spin_lock_irq
- Deferred processing using tasklets and work queues
Accessing hardware
- Memory regions
- Allocating and freeing memory
- Overview of device tree and how to extract information from a device tree
- Mapping in device memory: ioremap
- DMA buffers: coherent and stream mappings
- Memory barriers
Sharing memory
- mmap: sharing device registers
- mmap: sharing DMA buffers
- get_user_pages: how to access user memory
Who should attend
Feedback
4.8 out of 5 average
"Our tailored course provided a well rounded introduction and also covered some intermediate level topics that we needed to know. Clive gave us some best practice ideas and tips to take away. Fast paced but the instructor never lost any of the delegates"
Brian Leek, Data Analyst, May 2022
“JBI did a great job of customizing their syllabus to suit our business needs and also bringing our team up to speed on the current best practices. Our teams varied widely in terms of experience and the Instructor handled this particularly well - very impressive”
Brian F, Team Lead, RBS, Data Analysis Course, 20 April 2022