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


  • Linux features and characteristics
  • Protected memory
    • Processes
      • Foreground vs. background
    • Users and Groups
    • Root user
    • Graphical desktop environment—KDE
  • Filesystems
    • Root filesystem
    • Privileges
    • Links
    • “Mounting” filesystems
    • Filesystem Hierarchy Standard (FHS)
      • Special places
  • The Shell
    • Redirection and pipes
    • Keyboard shortcuts
    • Scripts
  • Development Environment
    • Install software
    • Configure the host
    • Configure the target
      • Flash filesystems
    • Network Filesystem (NFS)
    • Our first program
  • Eclipse
    • Creating and building C projects
    • Debugging with Eclipse


Embedded Application Programming

  • Accessing hardware from User Space
    • Data acquisition example
  • A simple simulation environment
    • Thermostat example
  • Multi-processing vs. multi-threading—Pthreads
    • Threads
    • Mutexes
    • Adding settable parameters to thermostat
  • Device drivers – moving hardware access to Kernel Space
    • User space view of I/O
    • Miscellaneous devices
  • Network programming
    • Sockets
    • Client/server paradigm
    • Networked thermostat
    • Multiple monitor threads
    • Embedded web server
  • Using the LCD display
    • Console and framebuffer drivers


Components and Tools

  • The Linux kernel
    • The kernel source tree
    • Configuring and building the kernel
    • Kernel modules
    • Booting via TFTP
  • Busybox
    • Configuring and building Busybox
  • Bootloader – u-Boot
    • Role of the bootloader
    • The boot process
    • U-Boot features
    • Configuring and building u-boot
  • The Yocto Project
    • What is it?
      • Why Yocto?
    • Elements of Yocto
    • Setting up Yocto
    • Other framework projects
      • Buildroot
      • OpenEmbedded
      • Linaro
  • System initialization -- Getting ready to ship the product
    • The initialization process – inittab
    • Minimizing boot time
    • Loading images to flash
      • MTD partitions



  • Review
  • Where to go from here


View Schedule