Emerson Linux Class
Here is the tar file for the driver examples
we discussed in the class.
Linux Learning Kit -- New bootloader
The Mini2440 that is currently shipping has a new boot loader in NOR flash
called Superboot. Perhaps not surprisingly, it behaves rather differently
than the Supervivi boot loader described in the manual. Consequently, the
process of reloading the NAND flash has changed. This document explains how
to reprogram the NAND flash using Superboot.
Reprogramming the Mini2440 with Superboot.pdf
A few copies of the CD got out without the
images/ directory mentioned in the above document. Here's a tar file
Update for Linux for Embedded and
Real-Time Applications, 3rd Ed. and The Embedded Linux Learning Kit
Some configuration errors in the Linux 3.5.3
kernel that ships with the kit, and is recommended in the book, prevent the
application examples from working correctly. This tarball provides
corrections. Untar it in your home directory and see the README file.
Linux for Embedded and Real-time
Applications, 3rd Ed.
Here is the sample code for the book:
Embedded Systems Conference
Here are some papers I've presented at the
Embedded Systems Conference in San Jose in recent years.
Device Trees -- A Database Approach to
Device Drivers Demystified
-- They Really Aren't All That Mysterious
Introduction to POSIX
Threads -- Asynchronous Programming in the Unix/Linux Environment
Another ELLK Software
has shown up in the install_tools.sh script when run under Ubuntu. The
symptom is that the install.sh script can't create or populate the .working/
install_tools.sh uses the LOGNAME environment variable to change the
ownership of target_fs/home and everything in it. LOGNAME is initially set
to the user name you log in as. Under Fedora and Red Hat distros, when you
su or sudo to become root, LOGNAME retains its initial value. However under
Ubuntu, when you become root the value of LOGNAME changes to "root", which
kind of defeats the purpose.
The workaround is to manually change the ownership of home/ and everything
under it to your user name, create home/.working/ and copy the files from
the CD. Do this as root of course.
Embedded Linux Learning Kit Software
users have reported problems with running the installation scripts provided
on the ELLK CD. It seems that some Linux distributions arbitrarily
reset the execute bit on mounted removable media so that install_tools.sh and
install.sh are not recognized as executable. There are a couple of work-arounds:
- Copy the scripts to your home
directory, set the execute bits, and execute them there.
- Execute bash /media/EmbeddedLinux/install_tools.sh
followed by bash /media/EmbeddedLinux/install.sh.
GoGo and Dash Courses Embedded Linux
This is the code and data
required for the Eclipse exercise in Module 5
Embedded Linux Development Using
Here is the sample code
for the exercises in the book.
Linux for Embedded
and Real-time Applications
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.
however, one “gotcha”.
RPM works some magic to put the install directory, in this case “/home/doug”, into absolute path strings in the
cdt/. The consequence is that building a
program fails because the compiler can’t find the library files, among
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
The printf family of functions can sometimes
be a problem in embedded environments. You rarely need all the functionality
of printf (floating point formats for example). The functions are large and
they tend to be stack hogs.
Here's a small public domain version of printf that came out of Embedded
Systems Programming some time back. I added some
minimal floating point support.