图1 NVRAM 个构成(BSO)
Application(以后简称App)层的SoftWare Component(以后简称SWC)需要存储非易失性数据(NV Data)时,就使用NVM Manager 生成不同的NVRAM Block。NVRAM Block包含不同的BSO成分,每一个NVRAM Block包含哪些BSO在配置时决定,配置时每个NVRAM Block都会有一个 NVRAM block descriptor ,一旦 block descriptor 固定,则NVRAM Block的构成也就固定(fixed)了。每一个NVRAM Block都会被分配一个 Block ID,NVM模块就使用 Block ID 来选择要访问的single block。每一个NVRAM Block都可以为其配置 block management type(Native,Redundant,Dataset)。
所有地址偏移都是相对于 NVRAM block descriptor 中RAM或ROM的起始地址(这里认为是block ID,待确认)给出的。一般认为起始地址为0。(如果需要,相应的设备驱动程序将添加设备特别定义的基址或偏移量)。
前面提到:每一个NVRAM Block都可以为其配置 block management type(Native,Redundant,Dataset)。
NVRAM Block的管理类型有3种:
native
redundant
dataset
Native NVRAM块是最简单的块管理类型。
包含2个NV block。如果一个 NV block 块被认为是无效(invalid)的(例如read fail),则会使用另一个有效的NV block 中的数据来恢复无效的 NV block(即将有效NV block 中的数据写到无效的 NV block中)。如果恢复失败,则应将该错误报告给DET(错误码为:NVM_E_LOSS_OF_REDUNDANCY)
NvMDatasetSelectionBits 在NVM module中是可配置项,用作Dataset类型的NVRAM Block中的NV block的寻址,即dataset中,NVblock的dataindex 可以为 0,1,2... (2^bit-1)。NvMDatasetSelectionBits被定义之后,则block base number的大小也随即确定(用作对base number寻址的bits个数 == 16-selectionbits), 即NVRAM Block ID可以为 0,1,2,... (2^basenumberbits-1)。
NVM模块的 NvMNvBlockBaseNumber, NvMDatasetSelectionBits 和FeeEA 模块的 EA_BLOCK_NUMBER / FEE_BLOCK_NUMBER 的关系换算关系是:
即两个类型的 bit 合计共有16个。
例 1:
NvMDatasetSelectionBits == 2 (即被配置为2bit),则可以用作NvMNvBlockBaseNumber 的是14bit。由此:
1、 Range of NvMNvBlockBaseNumber: 0x1..0x3FFE(2^14个,即:1 ~(2^14-1-1))
2、 Range of data index: 0x0..0x3(=2^NvMDatasetSelectionBits-1) (2^2个,即:0 ~ (2^2-1))
3、Range of FEE_BLOCK_NUMBER/EA_BLOCK_NUMBER: 0x4..0xFFFB (0x1<<2bit + 0)
对于一个 native NVRAM block,如果其 NvMNvBlockBaseNumber = 2:
则其对应的NV block 在 Fee/EA 层的 FEE/EA_BLOCK_NUMBER = 8
对于一个 redundant NVRAM block(有2个NV block)如果其 NvMNvBlockBaseNumber = 3:
其1st NV block (data index = 0)在 Fee/EA 层的 FEE/EA_BLOCK_NUMBER = 12 (=3<<2+0,)
其2nd NV block(data index = 1) 在 Fee/EA 层的 FEE/EA_BLOCK_NUMBER = 13(=3<<2+1)
对于一个 dataset NVRAM block 如果其 NvMNvBlockBaseNumber = 4, NvMNvBlockNum = 3 (即有3个NV block):
其 1st NV block(data index = 0) 在 Fee/EA 层的 FEE/EA_BLOCK_NUMBER = 16 (4<<2 +0)
其 2nd NV block (data index = 1)在 Fee/EA 层的 FEE/EA_BLOCK_NUMBER = 17(4<<2 +1)
其 3rd NV block (data index = 2)在 Fee/EA 层的 FEE/EA_BLOCK_NUMBER = 18(4<<2 +2)
————————————————
阅读原文,关注作者博客
版权声明:本文为CSDN博主「慕容静羽」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明,已获取作者转载权限。
浅析特斯拉Model 3的热管理策略
基于UDS的Bootloder详解
关于整车上下电流程的理解
关于车载以太网 Switch Vlan的理解
AURIX TC3XX系列的SOTA机制详解
一文详解奥迪e-tron内部系统 |附下载
ID.3 和大众的电气化平台 |附下载
一文详解CAN总线错误帧|附下载
DoIP协议介绍,资料分享!
详解车载网络 OTA系统的开发|文末附下载
一文了解汽车嵌入式AUTOSAR架构|附下载
特斯拉Autopilot系统安全研究|附dbc下载