ECE497 Instructor's Guide
Embedded Linux Class by Mark A. Yoder
There are many choices that have to be made when designing a college course. The open source world gives you even more choices. The following takes you down the path I have chosen for my 32-bit embedded Linux course (ECE497 - 32-bit Embedded Linux, Rose-Hulman). As we travel I'll point out what decisions needed to be made, what the options were and why I made my choice. Once you see where I've taken you, it should be easier for you to pick a path for your class.
There are many hardware platforms out there that support embedded Linux, how do you pick one? In my case, Texas Instruments (TI) approached me and asked if I was interested in developing materials using the BeagleBoard. I looked it over and said yes. It's not a bad choice since over 120,000 have been sold and it has a very active community.
There are many flavors of the Beagle. (Original, xM, Bone White, Bone Black). I'm using the BeagleBone Black since it is only $45 and is very capable.
Bare Metal, or Linux
The original Beagle and the xM has both an ARM and a DSP, you could choose to focus on either. If you main interest is DSP and you want to approach the Beagle as traditional DSP hardware I suggest you contact Mike Marrow. He has pioneered the 'bare metal' approach to using an OMAP processor.
I decided to focus on Linux running on the ARM since the Bones don't have a DSP.
Linux has many embedded distributions. There seem to be three that are most active on the Beagle at this time.
I use Angstrom. That's what comes on the on board flash. I have Android installed on one of my SD cards and have played with it some. Although Android is based on Linux, I found Angstrom to be a more familiar environment. You mileage may vary.
You can also try the Super-Jumbo image from AlwaysInnovating. It has four OSes on one image, though it only runs on the xM. I'm not sure how easy it is to teach with.
Which OS for the Host Computer
The BeagleBoard is powerful enough that real development (editing, compiling, etc.) can be done on it without need of another computer. However, one can do much more using a host computer for development. It is generally agreed that if your target computer is Linux, the host computer should be too.
So which distro should you use? I'm running Ubuntu 12.04 LTS, 64-bit. The LTS means Long Term Support, which means it's supported for 3 years from its release data (April 2012). This also means you won't be having to upgrade every time you teach the class.
Native or Virtual Install
Windows is the standard OS on my campus, so the first year I ran the course I ran the host OS in a virtual machine. It worked fine, though there may have been a slight loss of performance. I started with the free VMware Player, but later switched to the free Virtual Box on the recommendation of my students.
This year I'm running Ubuntu native on a desktop and a laptop. One of the things I gain is the desktop is always on so I can login to remotely and do things such as start a long download. I share the keyboard and mouse with my Windows machine by using Synergy. Synergy allows cutting and pasting between machines which helps when producing handouts.
What Topics Should be Covered?
Here is a list of topics that I've covered. The list includes labs and exercises for nearly every topic.
A major part of the course grade is based on a major project. Here are some of the projects that have been done, or that I'm proposing: ECE497 Project Ideas
Here are some questions to start an FAQ.
- I'm new to the BeagleBoard and I'm looking for materials I can read and labs I can execute to teach myself embedded Linux. How do I get started?
- I'm an instructor who would like to teach embedded Linux using a BeagleBoard. What materials are available to give me a starting point for building my course?
- I just stumbled upon this category of pages. What is ECE497?
- Also, while there is significant open-source support, do we need Development Tools from TI to program/compile/debug the software on the board? If so, how can we obtain a license for this software?
- Presently there are free ARM compilers; however if you use the DSP you need to get the 'C6x compiler from TI. It's free, but you have to agree to their license.
Embedded Linux Class by Mark A. Yoder