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: http://rtai.org (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.
Abbreviations:
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 http://www.intellimetrix.us/downloads.htm
: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.
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.