The Transterpreter Project

Concurrency, everywhere.

The sorry state of embedded development under Linux

This... this is a rant.

It is incredibly frustrating being a Mac and Linux user if you're interested in embedded systems development. In particular, if you are working with the MSP430, one of the only viable parts if you're really, really concerned about power consumption. There simply aren't, at this time, any parts (that I know of) that come close in terms of power saving modes.

On the Mac and under Linux, it is possible to build the MSP430 GCC toolchain. That's a big step, and it integrates nicely into build systems like make and Scons. However, that's only part of the problem. Once you've built the executable for your embedded platform, you need to make the code go from the PC to the embedded device.

By far, the most common way for this to take place is via JTAG. This multi-wire protocol provides a mechanism by which the flash in these little processors can be rewritten from the host PC, as well as (if the tools are available) in-circuit emulation. Of course, both of these assume certain hardware and software connected to and on the host PC. The biggest problem I'm running into right now is that the JTAG programmer MUST be USB-based, or I can't use it---because my Mac doesn't have a parallel port, so even if I'm going to build a Linux virtual machine, it still needs to be a USB-based solution.

For example, both Rowley and Softbaugh produce USB-based MSP430 JTAG programmers; neither provide support for Linux. They have Windows XP and 2000 drivers, but they don't support any open-source platforms; I guess embedded systems developers don't use Linux. (As long as you're paying £150 for a programmer, you might as well pay for your OS as well.) I'm not having much luck discovering which platforms the MSP-FET430UIF does or does not work with; are there Linux drivers? Aren't there?

The problem, quite simply, is that we are an open-source project that builds under Windows, Mac, and Linux; somehow, I'd like to easily build the MSP430 version of the Transterpreter and install code on a development board. Currently, I've been working on the Tmote Sky simply because it has USB---but that's not acceptable looking forward. And, more specifically, I travel a fair bit---I have to have a mobile solution that can work from my MacBook.

It seems to me that most embedded systems developers must not travel much, and have a big workbench where everything is set up just so for the work that they do. These developers all use Windows, and they pay a lot for their tools---because they are not trying to do embedded development under the auspices of an open-source research project. They are, instead, charging what their time is worth, and they can (therefore) afford the tools and bench space to do what they need to do.

I can run a Windows virtual machine on my Mac, and I'll have to; it will run the lite tools provided by Softbaugh, and I'll be able to program MSP430 boards using Tom's (Windows only) programmer over the Texas Instrument flavor of JTAG. (Why, oh why, do embedded developers put up with the lack of standards on flash programmers? Every single chip should be programmable and inspectable over the same protocol.) I can mount my MacBook via Samba, and my development process will look like this:

  1. Edit source on Mac. (Using freely available, open-source tools.)
  2. Compile on Mac. (Using freely available, open-source tools.)
  3. Flip to Windows, and upload the code to the MSP430. (Using expensive, closed-source tools.)

Rinse and repeat.

If anyone has any thoughts on how we can improve this situation, please let me know. It seems to be we should build a device that has USB on one side, a 20-pin header on the other, and we build cables for each chip family we want to support. There is one protocol on the USB side, and the MPU in the middle of those two connectors handles the JTAG translation for each device family on the other side. Then, we demand that TI, AVR, and every other embedded chip developer provide the driver for that device that sits in the middle---and nothing else. If they don't provide that software, we don't use their product. This kills the JTAG programmer market (proprietary hardware that is often tied not only to a single OS, but also a single compiler), but that's fine by me.

This is the end of this rant... for now.


  • Posted: February 28, 2007
  • Author: Matthew Jadud
  • Comments: None
  • Tags: None