Embed with Lineo Educational Services
In April, I was invited to attend a new training course from Lineo Education Services on Embedded Linux Programming with uClinux. The class is a full three days costing $1,495 US, 10% of which can be spared by registering three weeks in advance. Never one to turn down something expensive for free (if it costs a lot, it must be worth a lot, right?), I was happy to go.
The course instructor was Phil Wilshire, an experienced embedded systems developer. Each student is given the Lineo Academix kit that includes the uClinux Linux distribution, accompanying literature and the uCsimm microcontroller offering 2MB of Flash, 8MB of DRAM, a 16MHz Motorola DragonBall processor and more on a 3.5" × 1" board. Though the uCsimm is being phased out, it's still a pretty neat little board (anything with LEDs can't be boring). The uCsimm replacement is the uCevolution and includes two, rather than one, serial ports, two USB ports, SDRAM rather than DRAM and a few other upgrades. The uCevolution is currently available as a product and will be used in Lineo Education courses starting around the end of September, though the uCsimm course will continue as long as there is interest. The Academix distro kit is designed to be used for Linux where it can do the most good--in educational environments--and is priced with school budgets in mind.
The class is geared to both embedded programmers with a Windows background and Linux users with no embedded programming experience, giving it a fairly wide appeal. Its four basic goals are to introduce embedded Linux and the uCsimm, introduce cross-development tools available for Linux, explain how an embedded Linux system boots and runs programs and teach how to write and deploy both kernel and user-level code for an embedded system.
In fact, so much is covered in three days that it would be a valuable course for anyone looking to learn just Linux or even some C programming basics. Those without coding knowledge are simply given the code to plug in, with the option to learn as much as desired about it within the time constraints. With the small class size, I saw that tailoring the course to the individual needs of the students was not a problem.
Though the material the course covered is nailed down, it is still somewhat in development as far as course literature. I was fortunate, however, in that two Lineo teachers in training were also observing the class and were available to offer additional help.
The first day covered Linux basics. My experience with using Linux on the desktop gave me a real edge here over the non-Linux programmers in the class, but as the course progressed further into the realm of programming, I found myself frequently asking for explanations and getting a little behind.
The course is intended to give students everything they need to begin programming the uCsimm microcontroller. Though the in-class demonstrations and exercises fly by too quickly for anyone hearing them for the first time to retain, we were provided with a notebook (with over 100 pages) reproducing everything done in class. The first two days were spent cramming students' heads to bursting with information and exercises, and the third engaged in putting it all together.
After selling us on the advantages of Linux as an embedded OS, Phil started in on basic Linux/UNIX filesystems, command syntax and some basic commands and text editors. Our first exercise was to copy a new XF86Config into our systems to improve the resolution on the laptops. Phil's pleasant disposition made it difficult to hold his preference for pico against him. But hey, I did try.
Most of the second day was spent experimenting with make and Makefiles, and additional utilities such as RPM, patch and diff. We also wrote and compiled a ``hello world'' for both x86 and m68k and practiced hardware programming by making the LEDs on the uCsimm turn on and off with a little C. Experience working with the uClinux network was gained by alternating the development and the target system between both the server and client roles.
The last day included updating the kernel build, timers, debugging with GDB and DDD and an introduction to BusyBox and TinyLogin, among other things.
The process of recompiling the uClinux kernel, burning the images to Flash and using initrd to unpack a compressed root filesystem image to RAM on the target system, developing a simple application for the target system, working with make, patch and diff, tar and playing with networking, gave each student a wide range of exposure to skills used in both embedded and desktop programming, network management and just working with Linux on the desktop. The combination of the Academix kit, the literature and the contacts is enough to set any programmer off on his/her own to begin developing embedded applications for the uCsimm.
If you've got limited time for training and are looking for something that covers a broad spectrum, then it's money well spent. You even get a classy certificate upon completion (my first that's not in crayon). My knowledge of Linux has come from using it in an office and home environment (and reading a hell of a lot of articles), and I found that the course filled in many gaps. As with every other contact I've had with Lineo, the corporate impression that comes across in the class is a pleasant mix of amiability and professionalism.
The next course is planned for San Mateo, California, July 24-26, 2001. Registration can be done on-line at http://www.lineo.com/education/registration/.
Richard Vernon is editor in chief of Linux Journal.