Linux for Embedded and Real-Time Applications

ISBN-13: 978-0-7506-7932-9, 2. edition 2006


Language: English.
MH Rating: 5/10. Read sep-nov 2008.


Good things: A lot focus on problems and solutions regarding real-time applications.


Bad things: Many of the examples in the book can not be well understood without installing code from the CD. The book is referring a bit too much to the CD examples (my opinion).


Page 9: External links.

Page 18-20: Copy-on-write strategy. fork() on page 18, and execve() at page 20.

Page 23: Information in /proc is generated on the fly, and only when the file is needed.

Page 40-41: make

Page 76-77: gdbserver over ethernet for debugging remote target.

Page 77-83: Example on how DDD is used.

Page 82: Changing standard editor for DDD.

Page 91: Advantages of using kernel modules during development.

Page 98: Difference between character device and block device explained.

Page 100: errno and perror()

Page 101-106: Parallel port driver example. Too difficult for a medium linux user to understand, and needs source code from CD to follow the text in the book  :-(  Or not very well written?

Page 108: Kernel debugging with printk().

Page 109-110: Using /proc for debugging the kernel, e.g. showing how many reads and writes the parport module has made.

Page 111: Using gdb for debugging the kernel.

Page 123: Socket client/server example.

Page 134: SMTP, POP3 examples (email).

Page 143: Interrupts.

Page 151 : Preemption.

Page 153 : Create kernel task, delay.

Page 155 : Sharing resources through semaphores, mailboxes, queues and pipes.

Page 160: Priority inversion (so that a high priority task is not waiting on an event from a low priority task), solving performance problems.

Page 163: Critical sections, where interrupts are disabled.

Page 167: Good explanation on why Linux is not suited for Real-Time applications.

Page 168: Measuring latency.

Page 170: Latency improvement by preemption.

Page 171: Scheduler improvement in kernel 2.6. Turning off virtual memory.

Page 172: Interrupt Abstraction (2 running linux kernels on the same CPU, where one is running time-critical tasks in kernel space, and the other is running low priority tasks) with RTLinux and RTAI (Embedded Linux Distributions). It is patented.

Page 174: Nanokernel (without breaking the patent).

Page 177: Links to real time linux sites.

Page 179: (Real Time Application Interface)

Page 192: Achieved true hardware real-time performance (in latency test example).

Page 197: Posix threads.

Page 209: gdb/DDD debugging multithreaded programs.

Page 215: BusyBox

Page 222: TinyLogin

Page 224: uClinux

Page 233-239: Eclipse. Difficult to understand, or not very well written ? (

Page 239-240: Eclipse install. Built in Eclips tutorial after installation (try it).

Page 240: C Development Environment called “CDT”.

Page 243: Debugging with Eclipse.



JTAG: Joint Test Access Group

BDM: Background Debug Mode

GDB: Gnu DeBugger (page 76)

DDD: Data Display Debugger (page 76)




Updates (viewed 2008-11-10) from :inux for Embedded and Real-time Applications

There are reports that the version of BlueCat Lite distributed on the book CD doesn’t install in certain environments.  This appears to be due to some incompatibilities in the RPM utility.  Here is a bzipped tar of my BlueCat installation.  You can untar this in your home directory and have almost the same thing you would otherwise get from following the BlueCat install process.

bluecat.tar.bz2 (106 MB)

There is however, one “gotcha”.  RPM works some magic to put the install directory, in this case “/home/doug”, into absolute path strings in the binaries under cdt/.   The consequence is that building a program fails because the compiler can’t find the library files, among other thing.

The solution, kindly provided by redhat_blues on the book’s Yahoo group, is to create the directory /home/doug and in there set up a symbolic link to your BlueCat installation directory thusly:

ln –s <your_install_directory>/Bluecat Bluecat


Reviewed 2008-11-10 by MH.