We (my company - Atomic Object) got challenged by a customer a while back that Agile Methodologies can't possibly work in embedded software. At first we agreed. Then we took it as a challenge as we're very big into Agile methods. We started by concentrating just on Test Driven Development and how to make it work well in tiny systems using C or even assembly.
Embedded projects seem less volatile in terms of requirements and feature changes - especially if there's little or no user interface. Thus, that of Agile that helps the customer manage changing needs seems to be less important in embedded software than in other systems. Now, of course, we've only been working in pretty small systems; something like consumer electronics or home theater components might be an entirely different story. So while we're still getting our arms wrapped around Agile in embedded software in a broad sense, we have been making good strides in TDD.
We feel like we're starting to make headway with some very interesting work so we want to share. Links to what we've developed and learned are below. We see ourselves doing more embedded work in the future because it's the wild frontier for developing good process. We're certainly curious to hear the thoughts of hard core embedded system developers. We haven't been finding a lot of movement in the Agile + embedded space though that seems to be changing. We think there's gains to be had. Though our work below might seem to carry with it lots of overhead, we're finding that's actually not the case. Process and convention are proving fruitful for us and really increasing quality for our customers.
Mike Karlesky Atomic Object
TDD in Embedded Software using Model-Conductor-Hardware design pattern: an IEEE paper
CMock - (Ruby based) mock tools for C
A small collection of embedded software posts and resources on our blog
Our Agile Software Development/Testing Custom Search Engine (just launched)