This depends <i>entirely</i> 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.<p>So please define what <i>you</i> mean by "firmware". And be specific - make, model (+ revision?).<p>> Do we have a widely used language that is used to build firmwares for many/most embedded devices?<p>For smaller devices, yes: assembly (many different ISAs), or C. Just asking that question suggests firmware coding isn't for you.<p>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.<p>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), ...