Saturday, April 7, 2007

The Five Software Development Tools You Wish You Had

Last week I went to the embedded systems conference (ESC) in San Josa, CA. This is my second time going and last time I was unimpressed. This time however there were five technologies which really shook my cookie.

All of the products come from different vendors so there is no chance that we will get all of them in a single bundle any time soon. Also, they all cost big $$$ so don't expect them to be GPL'd either.

5) WindRiver's Sensor Points - This is a pretty cool technology which is like an automatic update API for arbitrary code. It allows you to send and run arbitrary code to any system running VxWorks. Thus if you find a bug after your product has been released, you can send a patch to the system while its still running. There are some security concerns here which I never got an answer to, but I'm going to assume (hope) that WindRiver has got those worked out.

4) Virtutech Hardware Simulators - These are some pretty insane simulators. Once you define your hardware model they run the hardware on your host as a Virtual Machine. In many cases it can run even faster than real-time. But thats not all, you can turn on checkpointing in the simulator and record the state of the simulator over time. They you can actually run the simulator backwards and forwards, and even send the checkpoints over the internet so others can see view its state as well.
Sounds great right? The catch is creating the hardware model. Making new models is both technically challenging and can take months. They have a number of models already created but if you have your own funky hardware you're probably going to have to do a lot from scratch. Virtuatech makes their money by creating the model for you... which can be expensive.

3) QNX's Multi-Core Analysis Tool
Multi-core is taking off and managing all of those cores is not going to be trivial. I took a look at this tool and I was pretty impressed. You can see what each of your cores is doing at any given moment. It tracks which programs are running and what types of system calls and interrupts are occurring on each core in a nice easy to use graphical interface.

2) Coverity Static Analysis (and others)
This product has got enough of its own publicity so I'm not even going to go further here. However I will add that it is really cool, and everyone should be using some sort of static analysis (if they can afford it).

1) Green Hills Software and Lauterbach's Back-in-Time Debuggers
These technologies are really cool... you have to see em to believe em. They record the state of your system at every point in time and lets you go back in time and check out memory, registers and more. This would be helpful for tracking down hard bugs and extremely useful just in general.

The catch is that you need special hardware to run this stuff though green hills has some workaround technology called TraceEdge.