 The earliest microcontrollers used mask ROM to store firmware.Later microcontrollers (such as the early versions of the Freescale 68HC11 and early PIC microcontrollers) had EPROM memory, which used a translucent window to allow erasure via UV light, while production versions had no such window, being OTP (one-time-programmable).Firmware updates were equivalent to replacing the microcontroller itself, thus many products were not upgradeable.