Wind River Linux Device Driver and Board Support Package Development

Wind River Linux Device Driver and Board Support Package Development

The Wind River Linux Device Driver and Board Support Package Development course provides engineers with a fast, cost-effective way to acquire the skills necessary to develop, deploy, and debug their own customized Linux device drivers and BSPs in the Wind River® Linux environment.

Subscribe

rate limit

Code not recognized.

About this course

WIND RIVER LINUX DEVICE DRIVER AND BOARD SUPPORT PACKAGE DEVELOPMENT

Buy Now

Course Description

The Wind River Linux Device Driver and Board Support Package Development course provides engineers with a fast, cost-effective way to acquire the skills necessary to develop, deploy, and debug their own customized Linux device drivers and BSPs in the Wind River® Linux environment.

After this course, participants will be able to perform the following:

  • After this course, participants will be able to perform the following:
  • Develop and manipulate Linux kernel modules
  • Develop Linux device drivers for the various types of devices supported in Linux
  • Describe the workings of the different kernel subsystems and how they impact the structure of a device driver
  • Debug Linux device drivers
  • Create a new BSP, and customize, patch, and validate the BSP
  • Port Wind River Linux platform projects to new boards

Products Supported

  • Wind River Linux LTS 21
  • The following targets are available: QEMU simulated target (Intel® x86-64)

Course Format

  • This four-day expert-led course consists of lectures and lab sessions.
  • Students gain hands-on experience and receive personal guidance from expert Wind River instructors.
  • Specific questions are addressed.

Audience

  • Developers new to device driver and BSP development in Linux
  • Linux application developers who need insight into the Linux kernel
  • Developers interested in the interface between the Linux kernel and device drivers
  • Developers who plan to use Wind River Linux on an unsupported board (hardware architecture is supported)

Prerequisite Skills

  • Familiarity with the Yocto build environment
  • Familiarity with makefiles and the GNU toolchain
  • Understanding of how to deploy and debug Linux-based applications in a cross-development environment
  • C or C++ programming experience on Linux/UNIX
  • Familiarity with the Helix Platform hypervisor

Prerequisite Courses

  • Introduction to Linux

Related Courses

  • Wind River Linux CLI Essentials

Syllabus

DAY 1

INTRODUCTION TO LINUX DEVICE DRIVERS

  • Linux architecture overview
  • Linux device driver overview
  • Device driver types
  • Linux device model

LINUX KERNEL SOURCE CODE

  • Configuring the kernel
  • Building the kernel
  • Patching the kernel
  • LAB: Getting Started with the Wind River Linux Lab Environment
  • LAB: Managing Simulated Targets from the Command Line

INTRODUCTION TO LINUX KERNEL MODULES

  • Overview
  • Building modules
  • Installing modules
  • Managing modules
  • Module parameters
  • LAB: Managing Kernel Modules
  • LAB: Developing Kernel Modules

CHARACTER DEVICE DRIVERS

  • OverviewDriver Life Cycle
  • Major and Minor Numbers
  • Character driver entry points
  • Blocking operations
  • Controlling a device
  • Querying the read/write ability
  • Restricting operations
  • LAB: Developing a Character Device Driver

DAY 2

MANAGING MEMORY IN THE LINUX DEVICE DRIVERS

  • How Linux manages memory
  • Allocating memory with kmalloc( )
  • Page-based memory allocation
  • Manipulating memory
  • Memory-mapped I/O
  • Accessing user space memory
  • Implementing the mmap operation
  • LAB: Managing Memory in Kernel Code

CONCURRENCY IN LINUX DEVICE DRIVERS

  • Concurrency
  • Race conditions
  • Locking primitives
  • Deadlock
  • Atomic variables
  • LAB: Managing Concurrency in Kernel Code
  • LAB: Managing Execution of Driver Code

HANDLING INTERRUPTS IN LINUX DEVICE DRIVERS

  • How interrupts work
  • IRQs
  • Interrupt handlers
  • LAB: Implementing Interrupt Handlers

DEBUGGING LINUX DEVICE DRIVERS

  • Debugging by printing
  • Debugging by querying
  • Debugging by observation
  • Using a kernel debugger
  • LAB: Implementing Debugging Strategies in Kernel Code
  • LAB: Configuring KGDB
  • LAB: Kernel Debugging with GDB

DAY 3

LINUX PCI DEVICE DRIVERS

  • PCI configuration space
  • Identifying devices
  • Matching devices and drivers
  • Driver registration
  • The probe( ) function
  • Memory and I/O regions
  • DMA
  • The remove( ) function
  • LAB: Driving Devices over PCI

LINUX USB DEVICE DRIVERS

  • USB architecture
  • Matching devices and drivers
  • Driver registration
  • The probe( ) function
  • Communicating with the device
  • LAB: Driving Devices over USB

BLOCK DEVICE DRIVERS

  • Driver Life Cycle
  • Major and Minor Numbers
  • Block Layer Architecture
  • Block Driver Entry Points
  • Processing Requests
  • Controlling a Device
  • LAB: Developing a Block Device Driver

LINUX NETWORK DEVICE DRIVERS

  • Overview of network devices
  • Implementing the driver
  • Packet transmission and reception
  • NAPI drivers
  • LAB: Developing a Network Device

Day 4

WIND RIVER LINUX BSP OVERVIEW

  • The role of a Wind River Linux BSP
  • The Wind River Linux BSP structure
  • Setting up the build environment
  • Configuring and patching a kernel
  • Configuring user space

CREATING WIND RIVER LINUX BSPS

  • BSP development overview
  • Starting from scratch
  • Starting with third-party code
  • Enabling supported boards
  • Cloning BSPs
  • Packaging Wind River Linux BSPs
  • LAB: Creating a BSP
  • LAB: Customizing the BSP
  • LAB: Patching the Kernel in the BSP Layer

ADDITIONAL BSP CONSIDERATIONS

  • BSP documentation
  • Boot loaders
  • Legal requirements
  • Validating a BSP
  • LAB: Validating the Kernel

 

Buy Now

COURSE DETAILS SUMMARY

  • Duration: 4 Days
  • Course Information: View
  • Format: Lectures and Labs
  • Type: Instructor-led, Remote delivery available

CONTACT US

About this course

WIND RIVER LINUX DEVICE DRIVER AND BOARD SUPPORT PACKAGE DEVELOPMENT

Buy Now

Course Description

The Wind River Linux Device Driver and Board Support Package Development course provides engineers with a fast, cost-effective way to acquire the skills necessary to develop, deploy, and debug their own customized Linux device drivers and BSPs in the Wind River® Linux environment.

After this course, participants will be able to perform the following:

  • After this course, participants will be able to perform the following:
  • Develop and manipulate Linux kernel modules
  • Develop Linux device drivers for the various types of devices supported in Linux
  • Describe the workings of the different kernel subsystems and how they impact the structure of a device driver
  • Debug Linux device drivers
  • Create a new BSP, and customize, patch, and validate the BSP
  • Port Wind River Linux platform projects to new boards

Products Supported

  • Wind River Linux LTS 21
  • The following targets are available: QEMU simulated target (Intel® x86-64)

Course Format

  • This four-day expert-led course consists of lectures and lab sessions.
  • Students gain hands-on experience and receive personal guidance from expert Wind River instructors.
  • Specific questions are addressed.

Audience

  • Developers new to device driver and BSP development in Linux
  • Linux application developers who need insight into the Linux kernel
  • Developers interested in the interface between the Linux kernel and device drivers
  • Developers who plan to use Wind River Linux on an unsupported board (hardware architecture is supported)

Prerequisite Skills

  • Familiarity with the Yocto build environment
  • Familiarity with makefiles and the GNU toolchain
  • Understanding of how to deploy and debug Linux-based applications in a cross-development environment
  • C or C++ programming experience on Linux/UNIX
  • Familiarity with the Helix Platform hypervisor

Prerequisite Courses

  • Introduction to Linux

Related Courses

  • Wind River Linux CLI Essentials

Syllabus

DAY 1

INTRODUCTION TO LINUX DEVICE DRIVERS

  • Linux architecture overview
  • Linux device driver overview
  • Device driver types
  • Linux device model

LINUX KERNEL SOURCE CODE

  • Configuring the kernel
  • Building the kernel
  • Patching the kernel
  • LAB: Getting Started with the Wind River Linux Lab Environment
  • LAB: Managing Simulated Targets from the Command Line

INTRODUCTION TO LINUX KERNEL MODULES

  • Overview
  • Building modules
  • Installing modules
  • Managing modules
  • Module parameters
  • LAB: Managing Kernel Modules
  • LAB: Developing Kernel Modules

CHARACTER DEVICE DRIVERS

  • OverviewDriver Life Cycle
  • Major and Minor Numbers
  • Character driver entry points
  • Blocking operations
  • Controlling a device
  • Querying the read/write ability
  • Restricting operations
  • LAB: Developing a Character Device Driver

DAY 2

MANAGING MEMORY IN THE LINUX DEVICE DRIVERS

  • How Linux manages memory
  • Allocating memory with kmalloc( )
  • Page-based memory allocation
  • Manipulating memory
  • Memory-mapped I/O
  • Accessing user space memory
  • Implementing the mmap operation
  • LAB: Managing Memory in Kernel Code

CONCURRENCY IN LINUX DEVICE DRIVERS

  • Concurrency
  • Race conditions
  • Locking primitives
  • Deadlock
  • Atomic variables
  • LAB: Managing Concurrency in Kernel Code
  • LAB: Managing Execution of Driver Code

HANDLING INTERRUPTS IN LINUX DEVICE DRIVERS

  • How interrupts work
  • IRQs
  • Interrupt handlers
  • LAB: Implementing Interrupt Handlers

DEBUGGING LINUX DEVICE DRIVERS

  • Debugging by printing
  • Debugging by querying
  • Debugging by observation
  • Using a kernel debugger
  • LAB: Implementing Debugging Strategies in Kernel Code
  • LAB: Configuring KGDB
  • LAB: Kernel Debugging with GDB

DAY 3

LINUX PCI DEVICE DRIVERS

  • PCI configuration space
  • Identifying devices
  • Matching devices and drivers
  • Driver registration
  • The probe( ) function
  • Memory and I/O regions
  • DMA
  • The remove( ) function
  • LAB: Driving Devices over PCI

LINUX USB DEVICE DRIVERS

  • USB architecture
  • Matching devices and drivers
  • Driver registration
  • The probe( ) function
  • Communicating with the device
  • LAB: Driving Devices over USB

BLOCK DEVICE DRIVERS

  • Driver Life Cycle
  • Major and Minor Numbers
  • Block Layer Architecture
  • Block Driver Entry Points
  • Processing Requests
  • Controlling a Device
  • LAB: Developing a Block Device Driver

LINUX NETWORK DEVICE DRIVERS

  • Overview of network devices
  • Implementing the driver
  • Packet transmission and reception
  • NAPI drivers
  • LAB: Developing a Network Device

Day 4

WIND RIVER LINUX BSP OVERVIEW

  • The role of a Wind River Linux BSP
  • The Wind River Linux BSP structure
  • Setting up the build environment
  • Configuring and patching a kernel
  • Configuring user space

CREATING WIND RIVER LINUX BSPS

  • BSP development overview
  • Starting from scratch
  • Starting with third-party code
  • Enabling supported boards
  • Cloning BSPs
  • Packaging Wind River Linux BSPs
  • LAB: Creating a BSP
  • LAB: Customizing the BSP
  • LAB: Patching the Kernel in the BSP Layer

ADDITIONAL BSP CONSIDERATIONS

  • BSP documentation
  • Boot loaders
  • Legal requirements
  • Validating a BSP
  • LAB: Validating the Kernel

 

Buy Now

COURSE DETAILS SUMMARY

  • Duration: 4 Days
  • Course Information: View
  • Format: Lectures and Labs
  • Type: Instructor-led, Remote delivery available

CONTACT US