Eclipse CDT
Possibly the most important, and most overlooked, aspect of any embedded software shop (including board bringup and BSP development) is the software tool chain. It’s hard to imagine that we live in an age when the availability of processing power has grown to such phenomenal ends yet people continue to use a tool chain barely updated since its invention in the 1980s. In fact, a friend of mine (let’s call him Code Monster) who develops for a major game console company, has patents on nothing more than software tools. We both agree a life spent making better embedded software engineering tools would be a life that hasn’t been wasted.
At work, we essentially use a variant on the “not since the 1980s” technology. Most of the engineers use a text editor that provides text coloring and some searching, then switch over to Platform Builder for flashing and debugging. Debugging is basically a mix of logging over Ethernet and a Microsoft-built system for injecting debug breaks and doing stack and memory analysis. In short, it’s your standard debugger. Now, granted, we could be using a more integrated system through Visual Studio, but we opt not to because it gives us a bit more control over the build process.
In fact, I understand the need for control like that, and that pushes most engineers to almost worship a minimal tool system, even if tools would make them more productive. I do not, however, think it’s necessary to get control only through giving up productivity, and I’m trying to reflect that choice in my own tool stack at home.
In another life, I was a Java developer, and probably the most powerful tool for any Java developer, outside of Java itself (which is its own tool stack), is Eclipse. I remember when I switched to Eclipse. I was easily doing my work in half the time. Its incredible powers to check my code without a recompile, place compiler errors in the IDE so code could be reviewed quickly, and auto-hint valid expressions (with documentation) all changed my work life. I was no longer hunting through docs to remember a parameter list, or trying to remember what returned what. I was free to focus on the things requiring real intelligence — algorithm design and general subsystem architecture. If my team had been large enough to need tools for source control, bug tracking, and code review, Eclipse could have handled it, too. To this day, I still haven’t seen a more rich tool set, and I think everyone should try it for at least a few months. My mantra at work has often been “I’d get so much done if my tools stopped getting in my way.” I’ve rarely opined that about eclipse.
Of course, if you escalate all warnings to errors, C and C++ have a type strength close to Java (within reason), so you could a very similar tool stack, even for embedded development. Others seem to have caught on, and Eclipse has, for a few years, been working to make inroads on C developers through the Eclipse CDT project. I figured I’d give it a try over the weekend, especially since you can adapt this IDE to become an Arduino development environment and I would, in the near future, like to start poking around in its boot code.
Unfortunately, it seems every project I create hangs Eclipse shortly after it makes the project folder and some of its metadata. I don’t know what’s wrong yet. I have a bug in with the CDT team and I will see if it’s Vista related by trying to install CDT from my computer at work. The problem must be something simple because they’d have never released code with such a basic feature broken. Watch this space!







