Bill Home
Course Description

Embedded GNU Jumpstart

GNU Head GNU development tools are simply unmatched in their power and adaptability for solving tough embedded development problems. But all that power can be a challenge to master quickly. Wouldn't it be nice to round the GNU learning curve in less than a week, instead of in fits and starts over several months?

Now you can! Embedded GNU Jumpstarttm is a unique combination of formal presentations and hands-on lab exercises that turn you into a GNU power user in less than one week. The course program is led by an experienced embedded GNU user, and lab exercises are performed on real embedded hardware, which is yours to keep at the end of class!

You won't find a course of this depth and breadth anywhere else. Bill Gatliff is a seasoned embedded developer and instructor who makes his living actually using GNU tools, not just talking about them. As a result, each presentation and lab exercise is jam-packed with valuable, immediately useful information that you'll 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 manual.

Free and Open Source Licenses

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

Building and Installing the GNU Toolchain

  • From scratch, for Linux, Mac OS X and Win32 hosts
  • Using commercial toolchains

Building and Managing Applications

  • Compiling and linking from the command line
  • Using gcc with a Makefile
  • Converting to output formats like Motorola S Record
  • Disassembling object files and applications
  • Merging application images, jump tables data tables
  • Interleaving images for Flash and ROM programming
  • Constructing, managing and using libraries
  • Understanding application startup and crt0

The GNU Linker Command Syntax

  • Putting things at their proper places in memory
  • Filling and padding images
  • Supporting initialized data

Porting newlib to Embedded Hardware

  • Building and installing newlib
  • Understanding newlib's reentrancy and other features
  • Making dynamic memory allocation work under newlib
  • Integrating newlib with an RTOS and/or debugging agent

Gcc's Inline ASM Syntax, and Other C Language Extensions

  • Sectioning, alignment, and other commands
  • Integrating assembly code with the C runtime environment
  • Implementing an interrupt handler in C with gcc

Debugging Under GNU

  • Simulation, JTAG, BDM and other options
  • Reviews of some commercial debugging products

Using Gcc for Embedded Development in C++

  • Brief observations on performance and safety
  • Building the GNU C++ compiler
  • Getting new and delete to work properly
  • How gcc implements common C++ constructs

Embedded GNU Jumpstart uses Cogent CSB6xx single-board computers. The Cogent CSB637 is an AT91RM9200-powered system, the CSB625 uses a PXA255. Both boards offer 64 MB SDRAM, Ethernet, USB, Compact Flash, SD/MMC, GPIO and VGA out.

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 the GNU toolchain 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.

Each student must provide their own laptop computer. 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, approximately 600MB of free disk space, and a Pentium-III/400MHz/128MB performance level or better. 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 and other course materials home with you at the end of class?

This course offers a unique combination of intensive, embedded GNU toolchain 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.

The GNU toolchain is flexible and powerful, 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.