It's an embedded kind of day

There's always a lot going on in the world of embedded systems development. Today we saw a spike in news about the embedded world. On Slashdot alone, there were three articles on embedded development - one about this announcement about the Android platform from Google, another article asking "Where are tomorrow's embedded developers?", and a third about the new release of the LLVM compiler infrastructure project.

Huh? Compilers? How is that a story about embedded development?

It's pretty safe to say that embedded developers are closer to their tools than just about any other brand of developer. Oh, sure - we use compilers, linkers, debuggers, just like anyone else. Chances are, though, that if you poll a group of embedded developers, you'll find a disproportionate number of folks who have had to hack on their compiler in some way. They've either had to patch their tools to deal with a new architecture variant, or work around a compiler bug, or something. For an embedded developer, a toolchain isn't just a static collection of programs that you feed source through to get a final product. For better or for worse, building, tweaking, and fine-tuning your tools is as much a part of embedded development as writing a device driver, compiling a kernel, or getting some user-space apps up and running on a new system.

As a result, things like LLVM and TinyCC are more than mildly interesting for embedded developers. They aren't just toy projects - instead, they represent exciting possibilities for a whole new set of tools. A whole new degree of freedom in tweakage that exists beyond choosing a standard C library or a set of user-space utilities. Remember, we're talking about developers here who get excited at the idea of writing their own memory managers. Giving them a whole new way of building something is like waving a steak in front of a starving dog.

They might decide they don't like the taste of it, for whatever reason... but they will at least try it, just to see if there might be an advantage to using a different toolchain. In that trying, they will shake out a lot of bugs and help those projects mature to the point where less bleeding-edge projects will be willing to give them a try.

No comments: