当前位置: 首页 > news >正文

AUTOSAR NvM Block的三种类型

Native NVRAM block

Native block是最基础的NvM Block,可以用来存储一个数据,可以配置长度、CRC等。

Redundant NVRAM block

Redundant block就是在Native block的基础上再加一个冗余块,当Native block失效(读取失败或CRC校验失败等)时,可以从Redundant block中恢复数据。
Redundant block中的NvMNvBlockNum要配置为2.
在这里插入图片描述

Dataset NVRAM block

顾名思义,Dataset是一个数据组,可以针对一个数据存储多个不同的值,同时还支持部分数据存放在NvM中,部分数据固化在ROM中。举个例子:座椅位置是RAM中的一个数据,车上的座椅位置记忆功能支持记忆四个位置的数据,这四个位置数据存放在NvM中,可以由用户修改,还有座椅最前和最后两个位置的数据是固定的,存放于ROM中,不支持修改。这种场景下就可以用Dataset这种存储方式。

Dataset类型的数据在配置的时候类型要选择NVM_BLOCK_DATASET,如下图所示,可以配置一个RAMBlock和ROMBlock,ROMBlock可以是一个数组。

在这里插入图片描述
注意下NvMNvBlockNumNvMRomBlockNum这两个配置参数,NvMNvBlockNum代表NvM中存储的数据个数,可读可写,NvMRomBlockNum代表ROM中存储的数据个数,只可读,不可写,同时NvMRomBlockDataAddress 配置项中配置的ROMBlock数组的大小也要等于NvMRomBlockNum。例如:

uint32 RAMBlock_DatasetTest;
const uint32 ROMBlock_DatasetTest[2] = 
{0x11223344,0x55667788
};

在读写数据的时候,要先调用 Std_ReturnType NvM_SetDataIndex(NvM_BlockIdType BlockId, uint8 DataIndex) 接口设置要读写的Block索引,索引是NvBlock的块在前,RomBlock的块在后。比如上图中NvMNvBlockNum配置为4,NvMRomBlockNum配置为2,那么NvBlock各个块的索引就是0-3,RomBlock两个块的索引就是4-5.
可参考下面标准中的图:

在这里插入图片描述
读写数据的代码举例如下:

	//读NvM_SetDataIndex(NvMConf_NvMBlockDescriptor_NvMBlock_DatasetTest, DatasetTestIndex);NvM_ReadPRAMBlock(NvMConf_NvMBlockDescriptor_NvMBlock_DatasetTest);//写NvM_SetDataIndex(NvMConf_NvMBlockDescriptor_NvMBlock_DatasetTest, DatasetTestIndex);NvM_WritePRAMBlock(NvMConf_NvMBlockDescriptor_NvMBlock_DatasetTest);

还要注意一点,Dataset类型的Block不支持NvM_ReadAll,ETAS会报错,但我在标准中好像没找到相关的描述,存疑。NvM_WriteAll是支持的。下面是ETAS生成时候的报错。

在这里插入图片描述

当未调用NvM_SetDataIndex API设置索引时,默认使用的是第0块。

http://www.lryc.cn/news/127400.html

相关文章:

  • Vue+ElementUI实现选择指定行导出Excel
  • SNMP简单介绍
  • 使用python对图像加噪声
  • 以 Java NIO 的角度理解 Netty
  • Maven自定义脚手架(多module模块)+自定义参数
  • 爬虫逆向实战(七)--猿人学第十六题
  • Qt 杂项(Qwt、样式等)
  • Python程序设计——列表
  • NPDP含金量高吗?难考吗?
  • windows pip安装出现 error: Microsoft Visual C++ 14.0 is required
  • 威胁分析风险评估(TARA)影响和攻击可行性评估参考
  • 【教程】H5匿名信源码下载一封来信系统安装流程搭建教程
  • PyTorch训练简单的生成对抗网络GAN
  • django实现文件上传
  • Java地图专题课 基本API BMapGLLib 地图找房案例 MongoDB
  • vue实现可缩放拖拽盒子(亲测可用)
  • python一次性导出项目用到的依赖
  • 移动端网页中的前端视频技术探索
  • 题解:ABC277C - Ladder Takahashi
  • 7.11 Java方法重写
  • Android Stodio编译JNI项目,Cmake出错:Detecting C compiler ABI info - failed
  • 6.2 Spring Boot整合MyBatis
  • 在CentOS 7上使用kubeadm部署Kubernetes集群
  • 这6个免费设计素材网站,设计师都在用,马住
  • uni-app引入sortable列表拖拽,兼容App和H5,拖拽排序。
  • Redis-内存淘汰算法
  • Git 合并分支时允许合并不相关的历史
  • 世界上最著名的密码学夫妻的历史
  • 二维码网络钓鱼攻击泛滥!美国著名能源企业成主要攻击目标
  • 前端面试题-CSS