We use C and Assembler to design our firmware. And we naturally supply comprehensive software documentation to accompany all the solution concepts and structured software design flows that we develop.