An Introduction to Embedded Linux Development, Part 1

Part 1 in a series on embedded development explains the purpose of the project and outlines hardware options

Over the last decade, a sea change has occurred in the world of embedded systems, driven by the appearance of sophisticated new products such as PDAs and cell phones and by the continual increase in the amount of resources that can be packed into a small form factor. The traditional small, narrowly focused embedded systems retain their significant presence, but these newer arrivals can capitalize on embedding a full-featured operating system. The operating system provides a wide selection of capabilities from which to choose. For example, wireless Internet connectivity and a GUI already are built in. Only a few years ago, embedded operating systems typically were found only at the high end of the embedded system spectrum.

Linux, available for many architectures, is an obvious candidate for an embedded system, and it already is being used widely in this area. Its open nature makes it particularly attractive to developers. Development tool suites have begun to appear in response to the perceived need, although one can work without such luxury and employ less integrated tools already available in Linux. New embedded systems companies using Linux have opened for business, and various older embedded systems companies have added Linux to their product line.

Assuming the technology sector of the economy continues to recover, many opportunities for software engineers and programmers should develop in this general area of embedded systems. Many of these potential developers have worked with desktop systems, however, but not with embedded systems. How high is the barrier to making the switch? It used to be that each embedded system developer needed to be somewhat of a hardware guru. However, with a resident operating system, an embedded system project can get by with perhaps one hardware guy and then add application developers as needed. In that scenario, the hardware knowledge is not a barrier, because the hardware guy becomes a shared resource--and others pick up whatever superficial hardware knowledge is efficient for their tasks. In short, in-depth hardware expertise is not a barrier. However, some familiarity with the development environment is necessary. The intent of this article series is to provide enough of the basics to get a reader started.

Choosing a System

If we're going to learn about an embedded Linux development environment, it's best to do so as a hands-on process. A careful reading of these articles without the hands-on component still has some value, though. The typical reader probably has a Linux box to use as a development work station but does not have an embedded target. Let's discuss options for incorporating a target.

Option 1: Stay within the environment of your Linux box and choose a target such as a floppy disk, a CD-ROM, a USB pen drive or something similar. This option offers some prototypical features of what we would like to learn, but it is only a small start.

Option 2: Choose a PDA known to have the capability to support Linux. The Sharp Zaurus SL-5500 comes to mind. It comes with Linux installed, has an active developer community and offers a rather full set of features. Because it is not the most recent Zaurus to hit the market, it can be found at significantly discounted prices. This target is much more prototypical than those suggested in Option 1. However, it still falls short of what we ultimately want. In particular, if we choose this option, we won't have the opportunity to learn much about the bootloader, an important topic.

Option 3: Find a relatively affordable single-board computer (SBC) known to support Linux. This gives us a truly typical target. If we're lucky, we'll find a vendor willing to work with us. It should be noted that I have worked with embedded systems but am not a hardware guru. I might need some input from such a person as this article series evolves.

We are going to go with Option 3. The two other options also offer significant value, however. In fact, the author has a beta version of a course that explores these two options, currently located here. Material based on this series of articles eventually will be added to that on-line course.

I gave a presentation on the beta version of the aforementioned course at the Real World Linux Conference 2004 in Toronto. There, I met Iain Galloway from Engineering Technologies Canada Ltd.. Our discussions led me to choose an SBC from that company to meet Option 3, above. I chose the LBOX with uClinux, which features a Motorola Coldfire MCF5272 processor, Flash memory, a serial port, a fiber port, up to three 10/100 Ethernet ports and more. It's ready to go without first needing to build it into something else. That is, you can power it up with any supply in the 5-12 volt range. The LBOX also has a full expansion port, allowing easy experimentation.

It should be noted that I have no financial connection to Engineering Technologies Canada. The LBOX simply looked like it was a suitable product for which I could receive appropriate help for any glitches encountered along the way. Further, Engineering Technologies Canada is willing to work with students at my institution. In particular, the company is willing to donate some new add-on hardware in exchange for open-source code that would enhance its value--a good deal for both parties.

Part 2 of this series will describe the complete hardware setup comprising our development environment with LBOX as the target and then show how to bring it to life.

Dr. Richard Sevenich is a Professor of Computer Science at Eastern Washington University in Cheney, Washington. There, he teaches courses in operating systems, compiler design and assembly language. He has given presentations at LinuxWorld Expo, O'Reilly's Open Source Conference and RealWorld Linux. Additionally, he gives occasional training courses in Linux device drivers and embedded Linux development.

______________________

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

embedded linux

bisi's picture

could you please explain what is embedded linux development environment(open embedded)

Re: An Introduction to Embedded Linux Development, Part 1

Anonymous's picture

The more articles on embedded linux, the better. I often have difficulty with some of the books on this topic, as I'm not a computer engineer, but a programmer. I've always wanted to dabble in embedded systems but find it difficult to know where to begin (I know there is linuxdevices.com, but their into-guide to embedded systems is a bit outdated, no?).

Looking forward to the next part.

p.s. Has anyone tried using Emac, Inc. Embedded Linux Starter Kit? http://www.emacinc.com/trainers/linux_starter_kit.htm

Error in URL that u provided

Naresh's picture

Hi
http://www.emacinc.com/trainers/linux_starter_kit.htm
.....says not found
can u check once again...
anything else u can suggest to me as I have started Embedded programming from scratch !!! plz

thanks
Naresh.nbhalala@hotmail.com

Error in URL that u provided

Naresh's picture

Hi
http://www.emacinc.com/trainers/linux_starter_kit.htm
.....says not found
can u check once again...
anything else u can suggest to me as I have started Embedded programming from scratch !!! plz

thanks
Naresh.nbhalala@hotmail.com

embedded linux

Anonymous's picture

Take a look at

www.sveasoft.com

---> take hardware readily available for 50-60 $ (the linksys wrt54g or the linksys wrt54gs wireless router), load the firmware
from the guys at sveasoft, and you have a real linux router with kernel 2.4, iptables, ebtables and lots of wireless commands.
The absolutely cheapest solution in my opinion.

Re: An Introduction to Embedded Linux Development, Part 1

Anonymous's picture

This is intresting to learn embedded linux with target board .I am
waiting for next part . plz mention sources for embedded linux
kernel and hardware ....

Regards
Naveen

busybox

Anonymous's picture

is nice to finally see an article (series) on embedded systems.
My first attempt at building an embedded sys was early in 1999
although im not an expert , i was able to build some nice systems
routers, video boxes, etc , out of ordinary computer hardware.
i think it would be appropiate here to mention that i couldn't have done many of this projects without the help of busybox.

White Paper
Linux Management with Red Hat Satellite: Measuring Business Impact and ROI

Linux has become a key foundation for supporting today's rapidly growing IT environments. Linux is being used to deploy business applications and databases, trading on its reputation as a low-cost operating environment. For many IT organizations, Linux is a mainstay for deploying Web servers and has evolved from handling basic file, print, and utility workloads to running mission-critical applications and databases, physically, virtually, and in the cloud. As Linux grows in importance in terms of value to the business, managing Linux environments to high standards of service quality — availability, security, and performance — becomes an essential requirement for business success.

Learn More

Sponsored by Red Hat

White Paper
Private PaaS for the Agile Enterprise

If you already use virtualized infrastructure, you are well on your way to leveraging the power of the cloud. Virtualization offers the promise of limitless resources, but how do you manage that scalability when your DevOps team doesn’t scale? In today’s hypercompetitive markets, fast results can make a difference between leading the pack vs. obsolescence. Organizations need more benefits from cloud computing than just raw resources. They need agility, flexibility, convenience, ROI, and control.

Stackato private Platform-as-a-Service technology from ActiveState extends your private cloud infrastructure by creating a private PaaS to provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your enterprise.

Learn More

Sponsored by ActiveState