Standard ARM microcontrollers are finding a home in portable equipment, replacing many of the custom ARM processors. They have also opened up the development to companies and individuals that did not have the ability to create a new chip from scratch. Freescale's latest iMX LiteKit takes this a step further by providing a platform that incorporates a standard ARM-based microcontroller.
The LiteKit (see Fig. 1) is a combination of Freescale's processor, Cogent Computer System's modules, and Microcross' software-development tools including GX-Linux. The 4- by 4-inch package has everything you need to get started on a multimedia solution that includes a color LCD screen with touch pad support. The breakout board contains the LCD, USB host and device connections, Ethernet jack, and audio connections with a Wolfson WM8731 audio codec. There are sockets for Secure Digital Multimedia Card (SD/MMC) and CompactFlash. The serial port can be used for debugging.
The 1.75- by 2.5-inch processor module (see Fig. 2) plugs into the back of the breakout board. My version had an i.MX1 microcontroller. The module has 64 Mbytes of SDRAM and 8 Mbytes of flash. There is a micro-USB connector that is used by the Macraigor's usbDemon JTAG emulator. This eliminates the need for an external JTAG box. There are two buttons: one for power and one undedicated. In addition, the module can be used without the breakout board.
The module incorporates a 3.3-V, 4-A switching power supply that can power the breakout board as well as the module. Power can be supplied through the processor module or from the device USB connection, although the latter does not have enough power to drive the Ethernet and audio support.
The breakout board has four push buttons and four status LEDs, and the package is small enough to fit in your hand. It's a relatively easy task to get a custom box to put a pretty face on the raw electronics. It is always easier to imagine a final product with something that is close to that solution than with an on-screen simulation.
The hardware is just the start. It's the software from Microcross that makes it shine, as much as an LCD can shine. Microcross provides three parts to the puzzle. The first is the uMon boot monitor. This flash-based system is accessed via the serial port. The second is the X-Tools tool suite based on the GNU development tools for Arm 9 and Arm 11 processors. The third is GX-Linux based on the 2.6 Linux kernel.
I started with the standard CD-ROM installation on Windows. This installs the open-source Cygwin development environment that includes the GNU gcc C/C++ compiler and linker. It is possible to install tools for different processors on the same system, although you must make sure the Cygwin versions are the same or similar. I have had problems in the past mixing Cygwin-based products. Microcross handles the installation in one step. The same CD-ROM handles Linux installation as well. Both provide identical functionality.
I tried uMon first using a terminal emulator. I won't go into all the details of uMon. Suffice it to say that it is very functional and provides network configuration including support for TFTP and BOOTP. It does not run telnet, but uMon has something better. It maintains a flash memory file system and you can add commands in the form of applications. This is also the way to test standalone applications versus using GX-Linux. Each loaded application has a name and it's a simple matter of typing the name to run the application. Command line parameters are accessible and a scripting system lets you do just about anything with uMon, including installing a telnet application.
Sample applications are included with uMon. A tutorial provides additional examples that can drive peripherals on the breakout board, such as the LCD test program. This make uMon all you need for building a standalone application. Although it provides basic debugging capabilities, I preferred the Visual GDB debugger for real debugging chores.
The X-Tools are command line tools with minor exceptions like Visual GDB. You can use your favorite text editor or add a graphical development environment such as Eclipse. I was able to download and install the stock version of Eclipse. I also downloaded the Eclipse CDT (C/C++ Development Tool) that works with GNU tools, so it was a simple matter to take advantage of the X-Tools. I stayed with Visual GDB for debugging standalone applications so that I didn't have to fiddle with Eclipse configuration options. I was able to use Eclipse's GDB debugger when I switched to GX-Linux since I could use a TCP/IP Ethernet connection.
This version of GX-Linux is tuned for the i.MX architecture. It includes drivers for on-board peripherals. Instructions are provided for building and downloading the operating system. It is possible to include applications as well, and that is what I did for handheld operation. But for development, I prefer to use a network connection. Setting up GX-Linux for NFS operation is relatively straightforward. It is possible to use Samba to access Windows drive shares.
Having a network drive means an application can be compiled and linked to the network drive. The application is then downloaded when it is run, or debugged on the i.MX. It definitely streamlines the process and makes debugging much quicker. It also eliminates limitations on the flash memory file system.
Macraigor's usbDemon was very helpful for really tough debugging chores and to reflash uMon. Microcross includes Macraigor support that lets you use the tool by itself or in conjunction with other debuggers. It's especially useful when working with a standalone application. I've used Macraigor's standalone units before (ED Online 9050, USB JTAG: Debugging In A Small Package). The LiteKit version was just easier to use since there is nothing to plug in except a USB cable.
At only $499, Freescale's iMX1 LiteKit is a bargain. The cost of any one piece, including the usbDemon, is normally this much. Installation is not idiot-proof and it does help to read the directions, but any developer with a little seasoning will fly through the process.
Portable Hard Drives
One advantage of GX-Linux is the peripheral support and applications that are available, including CompactFlash support. This time around I used Cornice's 3-Gbyte hard disk (see Fig. 3). Cornice has an evaluation kit that includes the company's evaluation board with a USB/CompactFlash hard drive and a non-operable unit that can be used for mechanical evaluation.
The board has a jumper that selects USB or CompactFlash mode. There is a small USB connector or a CompactFlash socket on the edge connector. I used the board in CompactFlash mode. GX-Linux was able to utilize this as a storage device and I was able to exchange data with a Linux laptop PC using a CompactFlash/PC Card adapter.
Cornice's hard drive is a good match to an ARM-based portable device. The eval kit board is not the greatest option for a portable prototype because the board extends out too far. However, it is a relatively easy exercise to build a new board with a different orientation so that the hard drive can fit under the Cogent breakout board.
So, if you are planning the next killer handheld multimedia application, then check out a LiteKit.
Cogent Computer Systems