Introduction to Embedded Linux – Online Course

Register Now

You will have 90 days to access the on-line course.

Speaker: Mike McCullough, President RTETC, LLC.

Course Summary:

This first of a 2-part series introduces the Linux Operating System and the use of Embedded Linux Distributions. The course focuses on the development and creation of applications in an Embedded Linux context using the Eclipse IDE. The first part of the course focuses on acquiring an understanding of the basic Linux Operating System, highlighting areas of concern for Embedded Linux applications development using Eclipse. The latter part covers the methods for booting Embedded Linux distributions including embedded cross-development and target board considerations.

Who Should Attend: The course is designed for real-time engineers who are building Embedded Linux solutions. It is also targeted at experienced developers requiring a refresher course on Embedded Linux. This course will clearly demonstrate both the strengths and weaknesses of the Linux Operating System in Embedded Systems.

Course Objectives:

To provide a basic understanding of the Linux OS and the Eclipse IDE framework.
To gain an understanding of the complexities of Embedded Linux Distributions and their use in embedded systems.
To give students confidence to apply these concepts to their next Embedded Linux project
Hardware and Software Requirements

The student should have a working Linux desktop environment either directly installed or in a virtualization environment. The desktop Linux should have the GNU compiler and binary utilities (binutils) already installed. A working Eclipse C/C++ installation or prior knowledge of C-based Makefiles is useful for completion of lab exercises. Lab solutions are also provided with the course. An Embedded Linux target hardware platform is useful but not absolutely required for this course.

Additional Reference Materials
Linux Kernel Development by Robert Love
Linux System Programming by Robert Love
Linux Debugging and Performance Tuning by Steve Best
Optimizing Linux Performance by Phillip G. Ezolt
Embedded Linux Primer by Christopher Hallinan
Pro Linux Embedded Systems by Gene Sally
Embedded Linux Development Using Eclipse by Doug Abbott
Linux Device Drivers by Jonathan Corbet et al
Essential Linux Device Drivers by Sreekrishnan Venkateswaran
Course Downloadable Content:

Video Lecture
Hands-On Lab Instructions
Hands-On Lab Solutions
Additional Related Materials

The Basics
Linux Terminology, History and Versioning
The Linux Community: Desktop & Embedded
The GPL
Linux References (Books and Online)

Getting Started
Kernel Source Code
Building the Kernel
Embedded Linux Kernels
Linux 2.6

Basic Kernel Capabilities
Process and Threads Management
Signals and System Calls
Synchronization, IPC and Error Handling
Timing and Timers
Memory Management and Paging
The I/O Subsystem: A Tale of Two Models
Modularization

Debugging
Process-Level and System-Level Debug
GDB and KGDB
GDB Server and Remote Debugging

An Eclipse Debug Example
Other Debug and Test Tools
Other System-Level Debug Approaches
Process & Threads Management
What are Processes and Threads?
Virtual Memory Mapping
Creating and Managing Processes and Threads
Thread-Specific Data (TSD) POSIX
The Native POSIX Threading Library (NPTL)
Kernel Threads

Signals
System Calls
Scheduling
Linux 2.4 and 2.6 Scheduling Models
The O(1) Scheduler
The Completely Fair Scheduler (CFS)

Synchronization
Via Global Data
Via Semaphores, Files and Signals

Inter-Process Communications (IPC)
Message Queues
Semaphores Revisited
Shared Memory
Pipes, FIFOs and Futexes
Remote Procedure Calls
Networking

Error Handling
errno and perror
strerror and strerror_r
oops, panics and Segmentation Faults
Timing
How Linux Tells Time
Kernel, POSIX and Interval Timers
High-Resolution Timers (HRTs)

Memory Management and Paging
Demand Paging and Virtual Memory
Allocating User and Kernel Memory
Mapping Device Memory
The Slab Allocator
The OOM Killer
Memory in Embedded Systems

Modularization
Creating a Module and Module Loading
Dependency Issues
In Embedded Systems

Shared Libraries
A Shared Library Example
Static and Dynamic Libraries

The I/O Subsystem: A Tale of Two Models
The Original Device Driver Model
The Standard I/O Interface
The New Device Driver Model and Kernel Object Classes
Initialization
Platform Devices, Busses, Adapters and Drivers
Comparing the Two Models

Embedded Linux Trends
Development, Monitoring and Testing

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 development tools, training and consulting for the embedded systems market

Course Fee Schedule: Registration is On-Going

Cost: $350

Upon request – a Certificate of Completion can be provided.