When a device's firmware is stored in
mask ROM or
one-time programmable PROM, it cannot be modified without physically replacing the
integrated circuit, so such a device cannot be field-programmable in the modern sense.
Erasable PROM-based firmware can be erased and reprogrammed, but only after lengthy exposure to a high-intensity ultraviolet light source. Thus, field-programmable devices were not practical until the invention of
EEPROM and
flash memory in the 1980s. Early EEPROMs could only be reprogrammed with expensive, dedicated
programmer hardware, since they required high voltages (10-20
V, compared to typical 3-5 V
logic levels) and there was no standard programming
protocol; as a result, field-programming was mostly performed by professional technicians and service engineers. However, as of the early 2000s, many devices were expressly designed to be field-programmed by ordinary consumers. Several developments have made this possible: • Modern
EEPROM and
flash devices contain internal
charge pumps which eliminate the need for high voltages. • Most consumers have access to
personal computers, which can perform arbitrary programming protocols. • Ubiquitous
Internet access provides a convenient means to rapidly distribute firmware images. Standard protocols for programming non-volatile memory devices have emerged. For example,
JTAG may be used to read and program the EEPROM and Flash chips in many
consumer electronics devices. Many such devices include
JTAG headers internally for factory programming and
quality control, even though no external
connector is exposed in the finished product. == Programmable logic ==