First of all we have to clarify that a firmware update is not equivalent to a driver update, since while the driver that we install on the PC is used by applications to communicate with the different components and devices. The firmware, on the other hand, tells you how it should work at all times.
We must not forget that many devices contain a microcontroller for their management, which we can consider a computer by itself. Which recursively executes a program that is inside it where it is found how to do things and when. These processors that are found in the different pieces of hardware do not interact, therefore, in their operation with the CPU and the rest of the system in terms of communication, but they are essential in order to access all the capabilities of our hardware. .
What are the benefits of upgrading the firmware to a component?
Suppose we have a monitor with support HDMI 2.1 which is not complete, the manufacturer has decided not to include functions such as the VRR inside it and the bandwidth it supports is less than 48 Gbps. One day through a firmware update we have access to those features without having to buy a new model.
Updating a firmware can also positively affect a CPU, since its control unit and even the memory controller are microcontrollers themselves that have a specific firmware. We can find a performance increase in certain instructions or support for faster memory thanks to updating the processor firmware. However, its capabilities can also be reduced, either for security reasons or due to the fact that there is a feature that conflicts with other products from the same company.
Although its greatest advantage is in the fact that being able to carry out a firmware update means that we and the manufacturer do not have to carry out replacements and repairs to solve certain problems that affect our hardware. So it saves big headaches for both sides, since it saves us having to send the device under warranty and the manufacturer having to manage complex shipping and returns logistics, as well as having to stop production.
In any case, updating the Firmware does not give it capabilities beyond those that the hardware itself can execute, but rather what it does is optimize the operation of its functions to make it more efficient and lock or unlock its functions. Nor can we forget that the process can also involve solving errors in previous versions of it.
How does updating a firmware work?
There are two ways in which a manufacturer can update the firmware of their hardware, both of which depend on the type of memory used to store the firmware, since not all manufacturers want users to have easy access to its content.
Using a programmable ROM
In some cases this is in a EEPROMwhose content can only be modified by the manufacturer using specialized tools or by replacing the chip that contains it with another of the same type, but which stores an updated version, for example, in the case of graphics cards in PCs.
As its name indicates, a ROM is read-only and its content cannot be replaced by another, in addition, in many cases, they are pieces small enough that those who do not have knowledge of handling small electronic parts will have problems to handle them. What’s more, many times its assembly in the factory has been carried out by a high-precision robot.
Via internal Flash memory
Instead, most hardware usually contains the firmware content in a non-volatile RAM or Flash memory that is inside the microcontroller included in the device itself. Which tells us that the user does not need to manipulate the hardware to update the firmware.
Devices with direct access to RAM
If we are talking about a device that has direct access to RAM, be it the CPU, the motherboard chipset or a PCI Express device, then the update is obviously done through the DMA unit included in the component to be updated. Let’s not forget that what a DMA unit does is give an external device access to RAM by temporarily blocking access to the IMC of the rest of the components in order to copy the contents of one physical memory to another. In this case it was the memory that stores the firmware inside the controller.
The memory addresses that are specifically used to update the firmware are not known by the user, but by the specific component and are carried out in a completely transparent way to the operating system. The component to be updated simply looks at that part of the RAM periodically and stores the information. In many cases, the flash memory usually includes space for two Firmware, one for the current version and one for the update. The reason? Simple, in case the update is broken and gives serious operating errors, to be able to go back to the previous one.
Components without direct access to RAM
In changed for peripherals that connect via USB or other ports that do not have direct access to memory and depend on the IOMMU they simply receive the firmware update directly, so there is no DMA drive running the process in the middle.
For example, a mouse or keyboard that are input and not output peripherals, but the interface they use is bidirectional. So it is only necessary to send them data to update their firmware or even to store certain information such as key or button macros.