Davinci NvM Block配置

存储块的配置方法

在下图中的位置添加Block的时候,Davinci会在NVM模块和Fee模块同时添加Block,并进行关联。且Fee Block的数量由NvM Block的类型决定,当NvM Block是Native时,会生成一个Fee Block;当NvM Block是Redundant时,会生成一个两个Fee Block;当NvM Block是Dataset时,生成的FeeBlock数量取决于Datasets的数量。

Davinci NvM Block配置_第1张图片

NvM Block与Fee Block之间的索引关系

NvM Block与Fee Block之间通过Base Block Number+Dataset Index进行索引。我们以一个类型为Dataset的NvM Block为例:
Davinci NvM Block配置_第2张图片

Datasets配置为4,即一个NVM Block会关联4个Fee Block,在NvM配置中Block Base Number是不允许配置的,但会配置关联到哪个Fee Block(注意这里其实对应的是Fee模块中自动生成的一组Block):
Davinci NvM Block配置_第3张图片
Fee中会生成4个与之相关联的Block:
Davinci NvM Block配置_第4张图片
Fee Block的Block Number会自动生成,但也允许改动,一般不需要改动,我们看上图中生成的Block Number分别为0x40-0x43,这里涉及到下面一个配置:
Davinci NvM Block配置_第5张图片
NvM Block的Base Number = Fee Block Number >> Dataset Selection Bits,这里就是0x4X >> 4 = 0x04.

Dataset Selection Bits配置为4表示的是Fee Block Number中留出4个bit用于Dataset的索引,最终在确定要用哪个Fee Block的数据的时候,按照下面的方法计算Fee Block Number:

Fee Block Number = NvM Block Base Number << Dataset Selection Bits + Dataset Index

比如我们现在想读上面这个Block的第3组数据,先调用接口函数设置Dataset Index = 2(Index从0开始),然后调用NvM_ReadBlock接口,这时协议栈会用上面的方法计算Fee Block Number = 0x04 << 4 + 2 = 0x42,所以去读Block Number = 0x42的Fee Block的数据。

Redundant类型的NvM Block对应两个Fee Block,协议栈会自动确定Dataset Index,无需用户关心。

Native类型的NvM Block只对应一个Fee Block,可以理解为Dataset Index总是等于0.

你可能感兴趣的:(AUTOSAR,AUTOSAR,davinci,NvM)