Embedded Linux Board Support Packages and Device Drivers – Fall 2017

Fall 2017 Course

Dates: Mondays, November 13, 27, December 4, 11 and 18

Time: 6 – 9 pm

Decision date: Friday, November 3, 2017

Early Registration Date deadline: Wednesday, November 1, 2017

Embedded Linux BSP Register Now

Before Early Registration Date:
Members $450
Non-members $490

After Early Registration Date:
Members $490
Non-members $525

WHERE: Crowne Plaza Hotel
15 Middlesex Canal Park Drive
Woburn, MA 01801
USA

Phone 781-245-5405
email sec.boston@ieee.org
Fax 781-245-5406

If paying by check, the check must be received before the appropriate dates for Early Registration and Decision Dates.

Make Checks payable and send to:
IEEE Boston Section
One Centre Street, Suite 203
Wakefield, MA 01880

Course Summary – This 5-day technical training course provides advanced training in the development of Embedded Linux Board Support Packages (BSPs) and Device Drivers. 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

• 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 Ethernet, 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
Embedded Linux Training Overview
Linux Terminology, History and the GPL
Building the Kernel Source Code
Embedded Linux Kernels
BSPs and SDKs
Linux References (Books and Online)
BSP Requirements
U-Boot and Bootloader Development
Embedded Linux BSP Development Basics
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 and Exception Handling in BSPs
BSP Deployment Issues and Practices
Embedded Linux SDK Basics
The 3 Pieces of an SDK
Embedded Linux Distributions and the GNU Compiler Collection (GCC)
Other Embedded Linux Development Tools
Library Support, Glibc and Alternatives
SDK Deployment and Support

Course Schedule Day 2
Debugging
GDB, GDB Server and the GDB Server Debugger
Other Debug and Test Tools
An Eclipse Remote Debug Example
Advanced Debug with printk and syslogd
System-Level Debug
System-Level Debug Tools
The /proc and sys Filesystems
Advanced Logging Methods
KGDB and KDB
Crash Dumps
Debugging Embedded Linux Systems
Configuring Embedded Linux
Config Methods
Config Syntax
Adding Code to the Linux Kernel
Booting Embedded Linux
Processor Startup
Initial Functions
The initcalls
Using __init Functions
NFS Booting
Root File Systems
RAMdisk Booting with initrd
RAMdisk Booting with initramfs
initrd vs initramfs
Root File System Development
Busybox Development
Building a RAMdisk for an initrd
Building a RAMdisk for an initramfs
Flash File System Development

Course Schedule Day 3
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
Virtualization
Measuring Embedded Linux BSP Performance
Common Considerations
Uncommon Considerations
BootLoader Optimizations
Boot Time Measurements
Effective Memory and Flash Usage
Filesystem Performance Measurement
Some Ideas on Performance Measurement
The Original UNIX Device Driver Model
The fops and file structs
The inode and dentry structs
Major and Minor Numbers
Embedding Channel Information
Deferring Work
The /proc Filesystem
Configuring the Device Driver
A Simulated Device Driver
Modularization Revisited

Course Schedule Day 4
The Evolution of a New Driver Model
The Initial Object-Oriented Approach
Platform Devices and Drivers
A Generic Subsystem Model
The Generic Subsystem Model in Detail
Subsystem Registration
The Probe and Init Functions
The Show and Store Functions
User Access via the /sys Filesystem
Configuring the New Device Driver
The udev Linux Application
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
Linux Device Driver Subsystems
Direct Connect Device Drivers
Serial/Console Drivers, I2C & SPI
Real-Time Clocks and Watchdogs
GPIO and the Pinmux
Flash MTDs and Direct Memory Access
USB, Power and CPU Management
Video and Audio
PCI and VME
Block Devices
RAMdisk and Flash Filesystems
MMCs and SD Cards

Network Device Drivers
MAC and PHY Device Drivers
net_device and net_device_stats
Network Device Initialization
Device Discovery and Dynamic Initialization
Network Interface Registration
Network Interface Service Functions
Receiving and Transmitting Packets
Notifier Chains and Device Status Notification

Course Schedule Day 5
Unwired Device Drivers
Wireless Device Drivers (WiFi, WLAN)
Bluetooth and BlueZ
Infrared and IrDA
Cellular from 2G to 5G
Drivers in User Space
Accessing I/O and Memory Regions
User Mode SCSI, USB and I2C
UIO
High-Speed Interconnects
PCIe
iSCSI
Infiniband
FibreChannel
Debugging Device Drivers
kdb, kgdb and JTAG
Kernel Probes
Kexec and Kdump
Kernel Profiling
User Mode Linux
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 LynuxWorks, 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.