What is a firmware design document (FDD) in terms of an embedded system?
I am working on developing an application that would be working on a customised board similar to the Xilinx Zynq Development Board(running on Arm Cortex A9 processor). I am using the SDK IDE provided by Xilinx which provides some in-built libraries for hardware functionalities like SPI, UART, etc for the processor.
Now I have been tasked to write a FDD for the above custom board. What would the FDD include in such a case? Will it include the firmware libraries already provided by Xilinx or the hardware(and/or HDL software) that we are developing on the custom board?
Best Answer
On software design, usually the key document is the SDD, the Software Design Document, which describes in detail how the software works, as it would be finished (e.g. in present time: the system HAS..., it USES...). Since firmware is just a type of software, I assume an FDD would just be an SDD, with specific features related to the firmware.
You will find a lot of gibberish about how to structure your document. I think only on this: a system is a set of interrelated parts (Von Bertalanffy et.al.). So, you need to describe your software system in two parts: the system (statics) and the interrelations (dynamics). Google for SDD templates, and you will see that is the generic structure. So, you will have an introduction, the statics section, the dynamics section, and a conclusive part, that would consider the consequences of the design.
Do not forget that the purpose is not to deliver a document, but to actually think (and allow others thinking) in a systematic manner on the details of the implementation.
The last SDD I've written responded to a set of client requirements (yes, systems have a purpose!). Then, the document had almost this structure:
Feel also free to look other templates and include parts you consider important, but within the structure defined previously.