Standard industrial/automotive requirements would be:
- CRC-based checksum. A CRC checksum could in theory cover a very large NVM segment, though to reduce compution time and to be kinder to the NVM cell. Therefore one typically adds a checksum to each and every NVM segment (IEC 61508-7 A.4.4). Whoever wrote the Freescale app notes about eeprom emulation is completely unaware of such a basic thing as this.
- Block replication / mirror segments. Each NVM constant in the eeprom must be saved twice, in different segments. These segments are compared with each other after writes to NVM, and also before the variable is used, to ensure data integrity (IEC 61508-7 A.4.5). This is particularly encouraged if the "mirror" segment is stored in a physically different memory area.
- Deterministic access time. When accessing a variable in NVM, you would expect next to no delay. With Freescale's eeprom emulation, you get a non-deterministic access time of "Big O(n)"where each n =(NVM_address - NVM_offset) * lookup_execution_time.
Needless to say, this access time is not acceptable. Especially not if n=1k (Coldfire), n=2k (Kinetis) or n=16k (MPC56) .
---
Conclusion:
If block replication is used with Freescale eeprom emulation, I will have to allocate 4 times the needed memory. Because the eeprom emulation algorithms assume there's a spare segment to use when the first one is full. So if I have for example a MPC56 application where I wish to store one byte in NVM at runtime, I will have to allocate 16k x 4 = 64k byte data flash. On a 68HC11 I would have to allocate 4 bytes of eeprom to store 1 byte with block replication.
68HC11 vs MPC56 = 1-0
When doing some worst-case calculations to amuse myself, I found out that my good old 68HC11 running at 8MHz were several thousand times faster at accessing NVM than a "eeprom emulation" MPC56 running at 100MHz.
68HC11 vs MPC56 = 2 - 0.
Apparently I'm the only one in the whole world finding it odd that a sluggish 8-bitter from the early eighties is devastatingly better than Freescale's newest 32-bit CPUs when it comes to eeprom storage.