The impact of Agile on a development process involving multiple suppliers can be compared to what happens when a company goes JIT.
In order to deliver JIT, each of the company's suppliers has to deliver JIT.
function deliversJIT( company ) {
return company.isJIT() && map( deliversJIT, company.suppliers() );
}
Likewise, if you want a complex product to be developed according to Agile methodologies, every subgroup in the chain should be able to work that way.
In terms of 'incremental' development (a.k.a. Tracer Bullets of 15 years ago), this would imply that the 'core' is released really soon to the driver guy, and that the basic driver be available to the integrator, and that the GUI would be developed, beit with one single button and an edit box, at the same time.
The hard part is convincing the hardware designers, coming from a solid think-upfront engineering discipline, to join our tinkerer society.
The second hardest part is finding a way to enable incremental development in a world where a hardware print is to be ordered 3 weeks in advance. I'm thinking emulators, fpga's here. I'm not a hardware guy though.
If you are willing to drop on incremental hardware development, you can, just like on the borders of a JIT chain, foresee a buffering mechanism that allows the Agile teams to advance.
Let's not be blind: Agile does have to deal with heavy-weight processes, too! Don't ask the Agile team to now 'refactor' their Java code base to Python in the next sprint. It is only because some of the parts are really really stable that we can dance our Agile moves on top of them.