NvM block model
一个block就是以字节为单位的连续的序列,他可以被细分为Data block和CRC block,Data block用于存放user data, CRC block则存放根据userdata算出的对应的checksum。
根据block存放的位置不同,我们可以将block分为以下三种:
►ROM block
► permanent RAM block
► temporary RAM block
如果一个block位于rom,那么他就叫ROM data block。NvMRomBlockDataAddress定义了rom block 的地址,rom block中的数据必须是连续的, ROM block中没有CRC。
如果block位于ram中,那么就可以称为RAM data block。一般有两种RAM data block, the
permanent RAM data block 和the temporary RAM data block。 区别在于如果NvMRamBlockDataAddress 有配置一个固定的地址,那么他就是permanent RAM data block。而 temporary RAM data没有定义一个固定地址。
Permanent RAM blocks 和使用显性同步机制的RAM blocks 应该被放在 POWER_ON_INIT section。
如果对应block使能了CRC就被叫做RAM CRC,他会在运行时间被放在permanent RAM中。默认情况下,NVM负责给CRC blocks提供RAM 空间,但是NvMUserProvidesSpaceForBlockAndCrc使能后可以由application's RAM area预留。
一个RAM block可以有一个或多个RAM data block 和 RAM CRC block(可选)构成,NvMRamBlockDataAddress用于定义RAM block的first permanent RAM data block的地址。NvMNvBlockLength定义user data的长度,这个长度并不包含CRC的长度,该长度与EaBlockSize/FeeBlockSize对应。
另外,NVM包含一个administrative block,他用于记录block状态,write protection状态,正在使用的data index等block信息。
下图为NVRAM Manager block model overview