Bill Home
Course Description

Embedded Linux Jumpstart

Linux Penguin Embedded Linux is all the rage these days, and for good reasons: it’s powerful, portable, and Free. That makes Linux the right choice for many kinds of embedded systems, but it doesn’t make Linux easy to adapt for use in your next embedded design.

Embedded Linux Jumpstarttm to the rescue! This multi-day workshop goes over the nuts and volts of getting Linux running in an embedded system. Soak up useful and relevant information on how to port and use embedded Linux on embedded hardware, then try it yourself on hardware that is yours to keep at the end of class.

New! The lab exercises for this class now incorporate hardware for controlling a custom-designed N-scale model train layout. You apply what you are learning as you learn it, on a training platform that looks more like your own hardware than anything else currently available anywhere in an instructional setting.

You won’t find an embedded Linux course of this depth and breadth anywhere else. Bill Gatliff is a seasoned embedded developer, instructor and author on a variety of important embedded Linux subjects. As a result, each course presentation and lab exercise is concise, enlightening, and filled with immediately useful information that you will put to work on your own embedded projects as soon as you get home.

Course Outline

Here is a recent table of contents from the course materials.

Free and Open Source Licenses

  • Free vs. Open Source, and what the differences mean
  • Overviews of the GPL, LGPL, BSD and other popular licenses
  • How license terms affect application design

Userspace I/O

  • Controlling hardware from user applications
  • Performance and architecture considerations


  • The user interface
  • Implementing a PWM device driver

POSIX.1b Real-Time API

  • Prioritizing applications
  • Getting and measuring real-time performance


  • The user interface
  • Implementing and using a GPIO device

Kernel Modules

  • A basic model
  • Kernel parameters and information
  • Demand loading, locking


  • Handling interrupts in kernel space
  • Interacting with user applications

Device Interfaces

  • Miscdev
  • Blocking and non-blocking I/O techniques

Kernel Concurrency Facilities

  • Spinlocks, mutexes
  • Completions, kernel threads

Pthreads Programming

  • Introduction to multithreaded programming
  • Real-time considerations


  • Adding a browser interface to your embedded application
  • Coordinating between CGI scripts and applications
  • Security considerations

Additional topics include:

Building an Embedded Linux System

  • ... from scratch
  • Kernel configuration and compilation
  • Setting up a runtime environment

Adapting a Linux Kernel to Your Platform

  • The bootloader startup process
  • The kernel startup process
  • Enabling and disabling kernel features

Linux Kernel Debugging Techniques

  • Debugging using JTAG adapters
  • Debugging via kdb
  • Deciphering OOPS messages

Embedded Linux Jumpstart uses Cogent CSB7xx single-board computers. The Cogent CSB737 is an AT91SAM9263-powered system, the CSB725 uses a PXA270. Both boards were designed to Bill Gatliff's specifications.

Other single board computers are available by special request. Send me an email for more information. Students are also encouraged to bring their own hardware, to use with lab exercises as time permits.


This advanced workshop is ideal for embedded developers who are evaluating or using Linux in an embedded application. The course materials presume familiarity with the C programming language, and an understanding of the basics of operating system and embedded system operation. Prior experience with the GNU toolchain, or training via Embedded GNU Jumpstart is helpful but not required. Prior Linux experience in non-embedded environments is encouraged, but not required.

Each student must provide their own laptop computer, except by prior arrangement. The computer must have either a recent Linux distribution (RHEL/Fedora, Debian, Mandrake, etc.), Mac OS X, or a Win32 operating system installed before class begins. Course activities will require one available DB9 serial port, one 10/100T ethernet port, and approximately 1GB of available disk space. Students are strongly encouraged to bring their OS installation CDs to class.

Frequently Asked Questions

If you don’t see your question answered here, please feel free to send me an email.

Why do I have to bring my own computer?

Put simply, how else are you going to take your new GNU toolchain, embedded Linux kernel, and other course materials home with you at the end of class?

This course offers a unique combination of intensive, embedded Linux training and take-home hardware that you won’t find anywhere else. The goal is to for the student to be a proficient embedded Linux developer and user in one week, and to carry that knowledge back home after class is over. Bringing and using your own computer is the best way to meet that objective.

Why is this course so much cheaper than other, apparently similar offerings?

Bill Gatliff is an individual, freelance embedded developer. He is not a multinational corporation with an overhead of hundreds of engineers to support. In addition, an emphasis has been placed on controlling the cost of every aspect of the course, in order to bring quality GNU training to developers who don’t have deep pockets to spend out of.

This course is all about free software. Why is it so expensive?

Actually, the course is about Free (speech) software, not free (gratis) software.

Linux is a powerful and flexible operating system, but it takes more than a few minutes to learn to apply that power and flexibility to your own embedded development needs. The most cost effective way to get started is by working under the direction of an experienced and competent teacher for a week, instead of trying to gain the knowledge yourself over a period of weeks or, in most cases, months.


Site Design by: One Hat Design Studio.