Embedded Linux Board Support Packages and Device Drivers

#Linux
Share

This 4-day technical training course provides advanced training in the development of Embedded Linux Board Support Packages (BSPs), Device Drivers and Distributions. The first part of the course focuses on BSP and Software Development Kit (SDK) development in an Embedded Linux context with a focus on application performance measurement and improvement. The latter part of the course covers Embedded Linux Device Driver development including key device driver decisions and deployment considerations for Embedded Linux BSPs.

  Date and Time

  Location

  Hosts

  Registration



  • Date: 11 Nov 2013
  • Time: 10:00 PM UTC to 02:00 AM UTC
  • Add_To_Calendar_icon Add Event to Calendar
  • 15 Middlesex Turnpike
  • Woburn, Massachusetts
  • United States 01801
  • Building: Crowne Plaza Hotel

  • Contact Event Host






Agenda

Who Should Attend:

The course is designed for real-time engineers who are developing Embedded Linux BSPs and Device Drivers for Embedded Linux distributions. It is also targeted at experienced developers requiring a refresher course on Linux BSP and Device Driver development.

Course Objective:

To gain an understanding of the complexities of BSP and SDK development and their uses in Embedded Linux systems.

To provide a basic understanding of the Linux I/O Subsystem and the Device Driver Models provided with Embedded Linux distributions.

To gain an in-depth understanding of character-based device drivers in Embedded Linux

To understand key device driver subsystems including relatively slow I/O interconnects such as I2C, SPI and USB as well as high-speed interfaces such as USB 3.0 and PCIe

To give students the confidence to apply these concepts to their next Embedded Linux project.

Course Schedule Day 1

Getting Started with Embedded Linux

Linux and the GPL

Building the Kernel Source Code

Embedded Linux Kernels

BSPs and SDKs

Linux References (Books and Online)

Embedded Linux BSP Development Basics

BSP Requirements

U-Boot and Bootloader Development

Basic BSP Development

Files and Filesystem Support

The I/O Subsystem: Talking to Hardware

Memory Management and Paging

Error Handling in Embedded Linux BSPs

Timing and Timers

Interrupt Handling in BSPs

BSP Deployment Issues and Practices

Embedded Linux SDK Basics

The 3 Pieces of an SDK

Embedded Linux Distributions

The GNU Compiler Collection (GCC)

Other Embedded Linux Development Tools

Library Support

Glibc and Alternatives

SDK Deployment and Support

Debugging

GDB, GDB Server and the GDB Server Debugger

Other Debug Tools

An Abatron Board Bring-Up Example

An Eclipse Remote Debug Example

Advanced Debug with printk, syslogd and LTTng

System-Level Debug

System-Level Debug Tools

The /proc Filesystem

Advanced Logging Methods

KGDB and KDB

Crash Dumps

Course Schedule Day 2

Configuring Embedded Linux

Config Methods

Config Syntax

Adding Code to the Linux Kernel

Booting Embedded Linux

The Linux Boot Process

NFS and RAMdisk Booting

Root and Flash File System Development

Building the RAMdisk

Busybox Development

Testing and Debug of Embedded Linux BSPs

Kernel Debug and Kernel Probes

Kexec and Kdump

The Linux Test Project (LTP)

Performance Tuning Embedded Linux BSPs

User Mode Linux and Virtualization

Measuring Embedded Linux BSP Performance

Common Considerations

Uncommon Considerations

BootLoader Optimizations

Boot Time Measurements

Effective Memory and Flash Usage

Filesystem Performance Issues

Some Ideas on Performance Measurement

Course Schedule Day 3

The Original Device Driver Model

The fops struct and Char Drivers

The inode and dentry structs

Major and Minor Numbers

Embedding Channel Information

Deferring Work

The /proc Filesystem

Configuring the Device Driver

Modularization Revisited

The New Device Driver Model

An Object-Oriented Approach

Platform Devices and Drivers

Subsystem Registration

The Probe and Init Functions

The Show and Store Functions

The /sys Filesystem

Configuring the New Device Driver

Comparing the Two Driver Models

The Flattened Device Tree (FDT)

openBoot and its Effect on Embedded Linux

The Device Tree Script (dts) File

The Device Tree Compiler (dtc)

The Device Tree Blob (dtb) File

Building a dtb File

Hybrid Device Drivers

Other fops Functions

The Need for Ioctl

A Simulated Char Device Driver

The SIM Device Driver

Initialization

Open and Close

Read and Write

The /proc Driver Interface

MMAP Support

Course Schedule Day 4

Linux Device Driver Subsystems

Serial Drivers

The RTC Subsystem

Watchdogs

I2C & SPI

Block Devices

PCI

USB

VME

Video

Sound

What’s Missing?

Memory Technology Devices

What is an MTD?

NAND vs NOR Flash Interfaces

The Common Flash Interface (CFI)

Driver and User Modules

Flash Filesystems

Drivers in User Space

Accessing I/O Regions

Accessing Memory Regions

User Mode SCSI, USB and I2C

UIO

High-Speed Interconnects

PCIe

GigE

iSCSI

Infiniband

FibreChannel

Serial RapidIO

Debugging Device Drivers

kdb, kgdb and JTAG

Kernel Probes

Kexec and Kdump

Kernel Profiling

User Mode Linux and Kernel Hacking

Performance Tuning Device Drivers

Some Final Recommendations