in case of D-Flash, everything is up to user – user is responsible to erase a block, program new data to flash. It is possible to write one double word (64bits) at a time. The double word must be fully erased prior to programming. It is not allowed to program doubleword which is not in erased state. If it is not in erased state, whole block must be erased (2KB in case of FlexNVM). This is the main disadvantage – if you need to modify a doubleword which is not in erased state and if you need to keep the rest of the content, it is necessary to load the data to RAM, erase flash sector and program all data back to flash… Another option is to develop some kind of circular buffer mechanism when new data are stored to flash one by one. Once the sector is full, erase it and then continue…
If Emulated EEPROM is used, user just read/write FlexRAM. Flash controller will ensure that data records are loaded from flash to RAM after reset and it ensures that new records are programmed to flash when user writes FlexRAM. This is convenient solution when it is required to store some data to flash frequently. If the ratio between user data / allocated size of FlexNVM is low enough, it also extends the lifetime of flash (number of program/erase operations) significantly.