欢迎光临散文网 会员登陆 & 注册

AUTOSAR学习教程-BSW标准解读

2023-08-09 17:32 作者:嵌入式物联网小学妹  | 我要投稿

需要教程的小伙伴,v:xiaoying121416,备注【AUTOSAR】哦~

1、AUTOSAR BSW标准解读 – NvM

NvM的全称是NVRAM Manager。NVRAM是用来保存NV(Non Volatile,非易失)数据的,所谓的非易失数据指的是那些在掉电以后不会丢失的数据,而NvM模块是用来提供Nv数据管理的,用来维护NV数据。

满足AUTOSAR标准的NVRAM内存结构如下图,从这张图,我们能够比较清晰的看到AUTOSAR的NvM设计逻辑:

 

NvM的数据存储结构

NvM中的的数据承载是以块(Block)出现的,总共有四种类型的数据块,又可以称为基础存储对象(Basic Storage Objects),他们分别是:

1. NV Block:这种类型的块必须要有的,它存储了非易失的数据,对于NvM是可见的,对于应用程序不可见;

2. RAM Block:这种类型的块用于应用程序访问数据,它又分为permanent和temporary两种,两者的区别是,permanent类型的RAM在调用NvM读取接口的时候(readall,readblock)会自动的将NV Block里边的数据读取到permanent RAM block,而temporary类型的RAM必须作为readblock接口的参数,在readblock调用的时候会被填充,对于应用程序和NvM均为可见;

3. ROM Block:这种类型的块提供了数据的默认值,是可选的,对于NvM可见,对于应用程序不可见;

4. Administrative Block:这种类型的块用于提供NvM数据管理用到的信息,对于NvM可见,对应用程序是不可见的。

每一种块的结构可以参考下面三张图,对于Admin Block,与具体的NvM实现相关,AUTOSAR并没有规定它的具体结构:

 


 

值得注意的是,以上提到的Block的概念是NvM中的概念,是抽象出来的和具体实现无关,大家不要和普通的RAM/ROM以及FLASH/RAM/DLFASH/EEPROM等概念混淆。下边这个实现样例表格可以帮助大家加深一些理解:

NvM的寻址方式

NvM模块为程序运行提供了数据管理,因此很多模块会和NvM有交互,跟NvM交互的模块有RTE,DEM,EcuM,DET,MemIf,SchM,CRC Library。

为了实现存储管理NvM需要对FLASH或者EEPROM进行操作,这种操作并不是直接进行的,而是通过MemIf模块,MemIf模块把位于它下面的FLASH或者EEPROM抽象成线性的32位地址空间(包含了16位的逻辑块编号和16位的逻辑块内地址偏移),这个规定决定了NvM允许的最大逻辑块数为65536块,而每一块的大小为64K。 而逻辑块编号又可以分成两部分(块标识和dataset标识),这两部分的长度是可以通过NvMDatasetSelectionBits来配置的,它代表了dataset标识符的长度,出去dataset标识符部分就是块标识符了,dataset标识符最长为8个bit(最多256个datasets)。下边可以通过简单的一个示例图直观的看出这个概念:

 

NvM的逻辑数据块管理类型

NvM的逻辑块有三种类型:

1. NVM_BLOCK_NATIVE:包含1个NV Block,1个RAM Block,0到1个ROM Block,1个Admin Block。最简单的NvM类型,效率最高

2. NVM_BLOCK_REDUNDANT:包含2个NV Block,1个RAM Block,0到1个ROM Block,1个Admin Block。比NATIVE类型具有更高的稳定性和容错能力,使用两个NV Block能够在一个NV Block失效的情况下从另外一个NV Block读取数据。

3. NVM_BLOCK_DATASET:包含1到255个NV Block,1个RAM Block,0到n个ROM Block,1个Admin Block。

NvM模块提供了相应的接口函数管理逻辑块,为了能够使NvM更广泛的应用到汽车领域,根据不同的硬件资源,这些API可以被裁减使用,这种裁减分类三类:

1. Class3 – 所有API都是支持的

2. Class2 – 中等程度支持

3. Class1 – 简单程度支持,这种裁减下,NVM_BLOCK_DATASET是不支持的

具体对应的的API列表在规范中可以查到,这里就不列出来了


AUTOSAR学习教程-BSW标准解读的评论 (共 条)

分享到微博请遵守国家法律