HACKER Q&A
📣 astennumero

How to learn Firmware Programming?


Hello, I came across this [1] article about Framework recently. This got me wondering about what firmware programming languages/softwares people use these days. Do we have a widely used language that is used to build firmwares for many/most embedded devices? Where do I learn this language?

[1] https://arstechnica.com/gadgets/2024/04/frameworks-software-and-firmware-have-been-a-mess-but-its-working-on-them/


  👤 RetroTechie Accepted Answer ✓
This depends entirely on the device. And "firmware" comes in many shapes & sizes: from a few KB binary flashed into a microcontroller, a bitstream configuring an FPGA, to GB+ OS images installed on say, a smartphone or tablet.

So please define what you mean by "firmware". And be specific - make, model (+ revision?).

> Do we have a widely used language that is used to build firmwares for many/most embedded devices?

For smaller devices, yes: assembly (many different ISAs), or C. Just asking that question suggests firmware coding isn't for you.

But as you look into more powerful devices, the landscape becomes much more varied. C++, target-specific SDKs, multiple pieces of firmware for different components in a system (and multiple ways to install those), etc etc.

Also note that some firmware can't be updated by end users. If at all. Comes in ROM, or one-time programmable, or IC pins were used in factory but not accessible on a circuit board in the final product, chip only takes signed updates (and only manufacturer has the signing key used for that), ...