I'm currently working on a project where I'm writing the firmware for an electronic system in C, and have been asked to produce documentation on the development/evolution of the software for the embedded devices. Having developed software in the object oriented paradigm I know to use UML to document the software such as class diagrams with objects, however this does not work for documenting the development of my embedded system. So what should I produce to document the development of my firmware?

3 Answers
3

Even for a system that is not designed according to the OO paradigm, you can still use UML notation to document the system, possibly extended with some Data Flow Diagrams (as I can't immediately find a corresponding diagram in UML).
Diagrams worth looking into, even for non-OO systems are:

State (Transition) Diagrams

Use Case Diagrams

Sequence Diagrams

When modeling a non-OO system, you may have to be a bit flexible as to what you model as a 'class'.

You do the same design only with conceptual modules (like you really should've done in OO design) rather than explicit classes. In C, those modules tend to be functions, structures, or some bundle of functions, structures or both.