Embedded Linux Workshop


  • The course is designed for individuals with experience in software design. A Basic knowledge of a programming language such as C++ or Java will be helpful. Background in embedded system development will be a plus.
  • The application of the Linux Operating system in embedded systems design is exploding. More and more new and unique applications are being designed and deployed everyday. Programmers and hardware designers will benefit from this 4 day opportunity to develop real world embedded Linux skilled through hands on exercises, labs, and design projects.

What you will learn

Learn practical, hands on Embedded Linux skills with real world expert instructors who've "been there".  Gain insights and up to date expterise in Embedded Linux.

Who Needs to Attend

Software and hardware developers interested in embedded Linux design and development.  This course is intended for HW and SW developers, it is not suitable for Linux Sys Admins and IT personnel.


sw development experience, ideally you have reasonable familiarity with at least one generic Linux distro, however this is not a manditory requirement.

Recommended Prerequisite Courses

Detailed Course Outline

Introduction to Linux

Overview of Linux

  • Linux development tools and software
  • Supported hardware architectures 
  • C library and cross-compiling
  • Embedded system development tool
  • BusyBox
  • Lightweight tools for embedded systems
  • System building tools 

Embedded Systems Overview

  • Embedded Systems Overview
  • Process and Application environment in embedded systems
  • Memory management in embedded systems
  • I/O in embedded environment
  • Software development environment
  • Real time, hard real time distinction

Linux Operating System Details

  • Processor model
  • Kernel overview
  • Kernel code
    • Kernel subsystems
    • Linux versioning scheme and development process
    • Legal issues: licensing constraints and advantages
    • Kernel user interface

Embedded Linux System Details

  • Boot sequence
  • System loading, syslinux, Lilo, grub, …
  • Root file system
  • Binaries required for system operation
  • Compiling and booting
  • Linux kernel sources
  • Getting the sources Using the patch command
  • Structure of source files Online kernel documentation
  • Linux kernel size Accessing development sources
  • Kernel source manager
  • Kernel configuration
  • Compiling the kernel
  • Generated files Kernel compiling tipS
  • Overall system startup
  • Bootloaders
  • Linux device file
  • Kernel booting
  • Kernel command line 1st user-space program
  •  Booting on network with NFS
  • Cross-compiling the kernel 
  • Real time scheduling
  • Hard real time issues with Linux
  • Linux Boot process
  • Interrupt processing in Linux
  • Device drivers
  • Kernel Modules
  • Driver development
    • Memory management
    • Character drivers
    •  I/O memory and ports
  • Android Requirement on Drivers
    • Building an Android-ready driver
    • Accelerometer
    • Gas gauge 
  • Real Time Linux
    • Real Time Overview
    • Linux as a real time OS
    • Linux suitability for real time
    • Linux Real Time options from vendors
    • Embedded Linux Vendors and solutions
  • Overview of embedded Linux vendor solutions
    • MontaVista
    • RtLinux
    • Lineo
    • Embedded Linux examples
    • MP3 players
    • Karbango
  • Android Development Overview
    • What is Android
    • Android kernel patches details
    • Platform-specific configuration
    • Stack overview
    • Native libraries
    • Dalvik
    • Application framework
    • Applications
    • Native Libraries 

Final Course Design Project

View Schedule