The Embedded Linux Learning Kit Version II from Intellimetrix
Do you know some Linux and need to get up to speed on embedded development? Have you been Googling till your fingers bleed and reading blogs till your eyes glaze over? Doug Abbott* has distilled down the essentials of embedded development using Linux and ARM; even step by step setup of an Eclipse environment. This is what you have been looking for. Abbott is an experienced author and teacher of embedded design in the Univ. of California system.
Learn how to:
|Set up boot parameters and boot Linux |
|Configure and build the Linux kernel|
|Access peripheral devices with and without device drivers|
|Build and debug application code over the network with NFS|
|Create network-based applications including a simple web server|
The Embedded Linux Learning Kit teaches embedded Linux in a practical, self-paced, hands-on environment, taking you step-by-step through the process of building and testing real embedded applications on real hardware. Note: You will need a Linux PC environment. You can use a virtual system like the free VMWare Player and install Fedora or other distro in a virtual environment on a Windows PC. XPpro works well with VMWare.
Note: In some systems the E.L.L.K. CDs mount as cdrom0 (or similar) instead of 'EmbeddedLinux'. This prevents the installation scripts from functioning. This is easy to fix. Move the two install scripts to your home directory. install_tools.sh and install.sh. Change one line in each file DEV="/media/EmbeddedLinux" to DEV="/media/cdrom0" and follow the directions, but execute from your home directory.
Hey! I already have a Min2440! What about me? Yes, and me! I want a 7" display! You are both in luck! You can get the CD and Book for $99 and we will install the special u-boot and kernel if you need a different LCD. The kit includes installation instructions to set up your Mini2440. Follow this link.
Mini2440 Single board computer with:
405 MH ARM9 processor (Samsung S3C2440)
|64 MB RAM|
2 MB NOR Flash
128 MB NAND Flash
|3.5 inch color LCD panel (320 x 240)|
|10/100 Ethernet port|
|USB host and device ports |
|RS-232 serial port for debugging|
|Multi-channel A/D converter|
|User-programmable LEDs and switches|
|Power supply (100 to 240 volt input, North American plug)|
|Ethernet crossover cable|
|Pre-installed Linux kernel -- 2.6.32|
CD with support software:
|Kernel source -- 2.6.32|
Tutorial code samples
Here are the section titles from the table of contents:
The Host Development Environment
Installing the kit software
The Terminal Emulator, minicom
What can go wrong?
Flash Memory and File Systems
Flash Memory – NAND and NOR
Root file system in flash
Eclipse Integrated Development Environment
The C Development Environment (CDT)
Creating a Project
The target execution environment
Remote debugging with GDB
Debugging with CDT
Debugging with DDD
Working with Hardware
ARM I/O Architecture
Accessing I/O from Linux
A Real-World Application
Host workstation as debug environment
Creating a Linux Process – the fork() function.
The thermostat with threads.
Linux Device Drivers.
The Low Level I/O API.
Changes required in thermostat.c.
Debugging threaded programs.
The Server Process.
The Client Process.
And much more, like a web server, building the kernel, booting over the network, the LCD driver, BusyBox, Flash File Systems, and references.
*Doug Abbott is the author of several popular Linux and embedded programming books. See here http://astore.amazon.com/intellimetrix-20
People who buy the ELLK also buy the USB to Ethernet converter so that they can have one Ethernet port set to static IP for the ELLK and another connected to their network in the usual way. Check the Cable Kit CMOS Camera USB to Serial.
E.L.L.K. user blog - CTO Charlie
March 15, 2011 Hi all. I'm going to write a little here as I work through the E.L.L.K. experience. Of course, I'm writing about things after I do them and so far I can report that this has been very rewarding in very little time.
I'm starting from a clean slate with a new system. For a Linux work station I ordered a Bare Bones desktop from Tiger Direct with an AMD Phenom quad core CPU, 4 GBytes of RAM, a 1 TByte hard drive and a DVDRW, all for $280. In fact it was this one. There was an Acer 20" 1600x900 display on sale for less than $130 --room to view several windows-- and I stopped by Office Depot and grabbed a basic MS mouse and a small keyboard, one of the little ones with no numeric keypad or cursor keys. I like the extra room on my desk top.
I knew I would need to use the Ethernet for the Mini35. To keep networking simple I found a WN321 USB WiFi in the lab for network access, and the development Ethernet connection could be set up with static IP. The WN321 can be found for $8 to $12 these days. Total cost for this development host was less than $450 and it is pretty quick. Add the cost of the E.L.L.K. and you can have a professional development station with Mini2440 and 3.5" LCD for under $700 with all new equipment. I think you can do all this on a Windows system using virtualization like the free player from VMWare or the popular Sun virtual system software. And of course if you are already using Linux it will be a snap. By the way, the kit assumes you have some Linux knowledge in order to configure your work station and directories, etc.
I had a new Fedora 14 disk from a Linux magazine and did the install. It went smooth as silk. I like KDE for a desktop and somehow wound up with Gnome! Oh well. It isn't much different. Doug Abbott uses KDE in his text.
For the first item of business I wrote down the passwords for my home user and for root. For a setup like this I make a label and tape it to the monitor. Security? We don't need no stinking security!
The E.L.L.K. software install is straight forward. The author has a script to install tools. Minicom was not present so I installed it over the network with the Fedora tools. The Wifi link worked fine for internet access. I followed the E.L.L.K. author's directions and configured the serial port to communicate with the Mini35. The Mini is pre-loaded with a custom u-boot that is all set for NFS, the Network File System that is going to make this all work so nicely. There were a few little details like setting the permissions on the serial port so that they are correct whenever I start the work station, and setting a static network IP for the Ethernet port. I had a little frustration here with the Gnome graphical tool for this. I had to force a restart of the network after making the changes or they would not stick. This is all covered in the text.
Once Minicom was working and the host network configured, I started NFS service on the host using the Gnome graphical tool for Administration. I connected the Mini35 with the Ethernet cross cable in the kit and the serial cable. I made sure the Mini was set to NAND and powered on. Amazingly, all was well and I saw the boot process on Minicom. The kernel loaded from NAND and the file system loaded from my home directory on the host using Ethernet; all very quickly. That reminds me. Minicom runs in a console window and required that I run it as root.
The process ended with a prompt from the Mini and I logged in through the console on Minicom. root is the only user and there is no password.
Eclipse was installed with the other tools from the E.L.L.K. disk. Eclipse needs a Java run-time. Fedora already had a Java run-time so there was no need to install one. The Eclipse startup was easy. In literally a matter of minutes I had loaded a project to blink the LEDs on the Mini35 and was running it. In fact Eclipse had built the project in the process of importing it! A few pages later I was using GDBserver on the ARM9 hardware and stepping through code with breakpoints and looking at variable values. This was in both C and assembly language with the disassembler in the Eclipse environment. I was up and running already. Amazing! I have not been this excited about doing embedded work in ages. It helps that the author has written a book on using Eclipse for embedded development. Building application code on the host and in the directory in my home location and ./ executing it from the Mini2440 console is a blast. This is old hat to experienced Linux users but getting past all the fiddly details and running under a properly configured Eclipse is a huge time saver and productivity booster. This is an early conclusion. I will see what happens as we continue.
I looked ahead a couple of chapters. Next stop: forks, threads, and network servers. Then mutexes and sockets and embedded web serving.
Over the weekend I made a little platform for development. I keep single sided PCB panels around from the old days of doing "skywire" analog design above a ground plance. The mounting holes for the Mini2440 are on a 92mm square. Now it just needs some sort of stand to put it in a convenient position for work. I'll add some solderless breadboards and breakouts for the interrupts, SPI, I2C, CMOS Camera, and GPIO. If you don't have the room or inclination, just mount the LCD on the back side of the Mini2440 so that you have easy access to all the buttons and connectors.