For novel ideas about building embedded systems (both hardware and firmware), join the 40,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.
By Jack Ganssle
I used to be in the in-circuit emulator business, back in the glory days when developers routinely forked over $5k, $10k or more for an ICE. Cross compilers ran $3-5k, licenses for RTOSes might start at $20k/seat plus royalties. Few engineers complained, their companies seemingly happy - or at least resigned - to spend large sums to get a product to market. For that was the way we always had done things, and there were few alternatives.
In the ICE business, at least, this has changed. Emulators for higher end processors mostly don't exist, killed off by their rapidly increasing costs and competition from other tools like BDMs and JTAG debuggers. Today most developers use these inexpensive tools that offer far less performance than an ICE. This blows my mind, since the problems we're solving today are far more complex, using much more code, and a bigger real time component, than projects of old. More code, more complex code, and less capable tools - do you sense a disconnect here?
I'm big on automated source code analysis software. An example is Lint - in my opinion programming without Lint is like riding motocross without a helmet. Also important are metrics tools, software that evaluates source code to find excessive complexity. We know that convoluted code is error-prone and maintenance-resistant; a complexity analyzer quantitatively identifies sections of source that must be simplified. (Here's a cool site with freebies: http://www.chris-lott.org/resources/cmetrics/).
A commercial version that gets great reviews is Programming Research's QA-C (http://www.programmingresearch.com/solutions/qac2.htm). Yet it's a $5k tool. Most developers recoil in horror when they discover the price.
$5k is a lot of $k. Add on top of that maybe another 3 to 5 for a cross compiler, a few thousand for a BDM with source level debugger, hundreds to thousands for version control, editor, IDE, and before long a basic development environment might cost $10k to $15k. Put 10 developers on the team and the total tool costs exceed $100k, a lot of money by any standard.
And yet. the latest programmer salary survey (http://www.sdmagazine.com/documents/s=8939/sdm0311a/sdm0311a.html?temp=RdNwy-oCyH) shows developers earn around $80-90k in the USA. Loaded with benefits that approaches $150k per person per year. That ten person team sucks a cool million five from the organization. $100-200k for tools starts to sound cheap, especially when one amortizes the cost over a multi-year project, or over multiple projects.
For some reason it's different on the hardware side. EEs routinely get logic analyzers ($10k to $100k), scopes ($5k to $30k), various signal generators, analyzers, monitors, schematic capture, PCB layout, and simulation. Back when I had a boss getting approval for anything from Tektronix or HP (now Agilent) was easy; software tools- forget it.
What's different? Is it because EEs produce something visible, something management can see and fondle, whereas we're just cranking invisible bits? Or has the GNU movement convinced management that free is the norm?
Every day new software development tools appear. Some look pretty awesome; others actually are. The cost to develop code continues to skyrocket. It seems to me that anything that shaves just a bit of the development costs is a must-have.
Does your company make you get by with a minimal toolchain? Why?