Barr Group FacebookBarr Group TwitterBarr Group LinkedInBarr Group Vimeo

Course Length: 
3 Days
CEUs: 
2.0

Whether you are developing Linux device drivers for unsupported peripherals or writing a board support package (BSP) to port the operating system to custom embedded hardware, there's a steep learning curve. Through a mix of lectures and hands-on programming exercises on real hardware, this course will help you quickly move on to developing your own Linux driver code. Major topics include the Linux driver model and device frameworks, debugging tools and techniques, as well as hardware initialization and interfacing, interrupt support, multithreading, and synchronization.

Audience

  • Embedded software developers learning to write drivers for Linux (or Android)
  • Embedded software developers responsible for porting Linux to custom hardware

Outline

The following outline is provided as a summary of the major course topics and should not be taken as literally the section-by-subsection lecture breakdown.

  • Introduction
    • Linux Architectural Overview
    • ARM SoC Overview
    • GNU Toolchain
    • Linux Build System
    • Building and Testing
  • Linux Kernel Architecture
    • Kernel Frameworks
    • ARM Linux Boot Process
    • ARM Linux Machine-Specific Initializations
    • Introduction to Platform Bus Devices
    • Kernel Debugging
  • Loadable Kernel Modules
    • Introduction to Kernel Modules
    • Kernel Module Framework and Lifecycle
    • GNU Makefiles
    • Building an LKM Out-Of-Tree
    • Loading and Testing LKMs Using ADB
  • Linux Drivers
    • Linux Device Model
    • Sysfs Attributes
    • Bus Devices and Frameworks
    • Bus Device Drivers
    • Class Devices and Frameworks
    • File Operations
    • MMUs and Caching
    • Kernel Memory Allocation
    • Passing Data Between Kernel and User-Space
    • Accessing Peripheral Controller Registers
  • Kernel Interrupts And Synchronization
    • Interrupt Handling
    • Kernel Threads
    • Waiting / Sleeping
    • Kernel Workqueues
    • Concurrent Access
    • Atomic Variables
    • Critical Sections

Attendees will complete approximately half a dozen hands-on exercises on an ARM board that they'll be able to keep when the course is over.

Prerequisites

Attendees should have prior programming experience in the C programming language.

Find out More

To find out more about our upcoming public trainings, go to our Training Calendar.

Contact Us to find out more about this course or to enquire about an on-site training at your company.

Recording Policy

All Barr Group Training Public and On-site courses may not be videotaped or photographed without consent from Barr Group's executive team.