What is a "Programmer" in the context of Bios Recovery?
I was reading about BIOS recovery and ran across the word "programmer".
(No, it's not talking about people.)
What is it referring to?
The BIOS is usually stored on an EEPROM chip -- an Electrically Erasable Programmable Read-Only Memory. Under ideal conditions you can flash it with a little bit of software. If things go spectacularly bad (i.e. the system is bricked), you'd have to pop the chip out of the motherboard, pop it into a programmer, rewrite the chip with it, then pop it back into the system.
In this case, the programmer is a device which programs a chip. They are often used to program microcontrollers, flash chips, EEPROM chips, PROM chips and so on.
The two most basic types of programmers are the in-circuit programmer and the traditional programmer. The in-circuit programmers such as this AVR ISP mk.II connect directly to the circuit which is programmed.
The little header goes to appropriate connector on the circuit board and once the programing is done, it can be removed form the circuit. Also the advantage is that the memory being programmed does not need to be removed from the circuit.
This one is so called "bitbanging" programmer. It is also in-circuit programmer, but it uses a computer's (in this case) serial port to generate signals for programming the device. They are very cheap to make, but don't work as well with USB to serial chips. The other end of the cable goes to the circuit being programmed.
And now we have the classical programmers. They require the chip to be removed from a circuit and placed on the programmer itself. They are sometimes also called parallel of high-voltage programmers.
Here we have a bit-banging programmer which programs the chip in the socket. It's home-made and its main advantage is its low price, but on the other hand it needs a parallel port on the host computer to work.
Here's another programmer into which device needs to be inserted.
It is common to see different types of sockets on these programmers because related families of chips with similar programming interfaces are often available in several different packages.
The main difference between those two types of programmers is that the in-circuit programmers actually need a chip which is set to accept programming. Sometimes because of bad programming or by design (for example if there aren't enough pins available on the device, so no pins may be left just for programming, or the device's firmware isn't expected to be upgradeable, or because the device simply doesn't support in-circuit programming) the device is left in such state that it cannot be programmed in its own circuit. In such cases it must be removed and placed in external programmer. Usually in-circuit programmers work by connecting to the device and using a bit of firmware to download the new firmware into the device. On the other hand, the classical programmers can force writing directly to device's memory so it can be used even when it's not responsive.
So to connect this to BIOS chips. Motherboards usually have some sort of integrated in-circuit programmer which will update the BIOS chip. In case the BIOS is incorrectly written onto the BIOS chip, the programmer may become inaccessible and external programmer may be needed to flash correct BIOS onto the chip.