The R8C family is only offered with flash memory. The single-voltage flash memory technology R8Cs use has been designed to function reliably and maintain data integrity. Each memory cell is tightly managed by a control block that provides advanced features such as a command decoding, timing and voltage control. Further protection mechanisms are also incorporated in the MCU that can be used to limit access to the on-chip memory. The ROM code protection feature prevents a parallel programmer from re-writing or reading memory contents. The ID code protection can also be invoked to secure the flash memory from unauthorized tampering by a serial programmer. Unless the programmer sends a specific series of bytes matching the ID stored in the MCU, the contents of memory cannot be altered. In some newer devices there is an additional level of protection called the Data Protect Function. This feature enables or disables re-programming of each flash memory block independently. In terms of flexibility, there are three main ways to re-program the flash memory in R8C devices. The first one is the programmer mode, which can take advantage of a serial or parallel programmer. The Boot mode allows designers to use a built-in bootloader for programming the device through a standard serial interface. Finally, for those applications that require self-programming for remote firmware upgrades, users can take advantage of the CPU/User Mode. All these modes can be used with no separate power supply, thus simplifying system design.