Introduction to Embedded Linux – Part I (EL201) – 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:

  1. Video Lecture
  2. Hands-On Lab Instructions
  3. Hands-On Lab Solutions
  4. Additional Related Materials

Course Schedule Day 1

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

Course Schedule Day 2

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)

Course Schedule Day 3

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

Course Schedule Day 4

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.