IEEE Boston Section Tech Site IEEE Logo

Serving Eastern Massachusetts

Course Description

Course Name: C11 - Embedded Linux Board Support Packages and Device Drivers
Time & Date: 6:00 - 9:00 PM, Tuesdays, May 1, 8, 15, 22
Location: Holiday Inn Select Hotel, 15 Middlesex Canal Park Road, Woburn, MA
Speaker: Mike McCullough, CEO, RTETC

Course Summary

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.

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 Objectives

OUTLINE

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

Lecturer

Mike McCullough is President and CEO of RTETC, LLC. Mike has a BS in Computer Engineering and an MS in Systems Engineering from Boston University. A 20-year electronics veteran, he has held various positions at Tilera, Embedded Planet, Wind River Systems, Lockheed Sanders, Stratus Computer and Apollo Computer. RTETC, LLC is a provider of Eclipse-based software development tools, training and consulting services for the embedded systems market.

Decision (Run/Cancel) Date for this Courses is Friday, April 20, 2012

FEES

Payment received by April 17: IEEE Members $390

Payment received by April 17: Non-members $410

Payment received after April 17: IEEE Members $410

Payment received after April 17: Non-members $435

Register online here.