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.hqwc.cn/news/70728.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速实现SAP的移动化和流程优化

热门议题: 1、企业如何快速解决人员移动办公的需求,比如在苹果安卓手机,平板电脑,MAC登录SAP。2、企业如何解决用户经常抱怨的流程复杂,操作繁琐,难以使用等问题 公司介绍: Synactive,Inc. 是…

leetcode 1171.从链表中删去总和值为零的连续节点

⭐️ 题目描述 🌟 leetcode链接:从链表中删去总和值为零的连续节点 思路: 在链表的 head 前新增加一个哨兵卫的头结点,方便计算前缀和。遍历链表,依次把每个节点的 val 相加到 sum 中去,再判断 sum 0 依…

C++笔记之unique_ptr转移堆内空间的所有权

C笔记之unique_ptr转移堆内空间的所有权 code review! 文章目录 C笔记之unique_ptr转移堆内空间的所有权一.C笔记之unique_ptr转移堆内空间的所有权方法1.使用std::move函数方法2.使用std::unique_ptr的reset方法方法3.返回unique_ptr方法4.std::unique_ptr的swap方法 二.uniq…

华为云MetaStudio多模态数字人进展及挑战介绍

// 编者按:数字人作为AI能力集大成者,涉及计算机视觉、计算机图形学、语音处理、自然语言处理等技术,正在金融、政务、传媒、电商等领域应用越来越广。LiveVideoStackCon 2023 上海站邀请到华为云的李明磊为我们介绍华为云在数字人领域当前…

每天一道leetcode:1192. 查找集群内的关键连接(图论困难tarjan算法)

今日份题目: 力扣数据中心有 n 台服务器,分别按从 0 到 n-1 的方式进行了编号。它们之间以 服务器到服务器 的形式相互连接组成了一个内部集群,连接是无向的。用 connections 表示集群网络,connections[i] [a, b] 表示服务器 a …

你知道什么是Curriculum Training模型吗

随着深度学习技术的飞速发展,研究人员在不断探索新的训练方法和策略,以提高模型的性能和泛化能力。其中,Curriculum Training(课程学习)模型作为一种前沿的训练方法,引起了广泛的关注和研究。本文将深入探讨…

【PubMed】生物医学文献数据库检索指南

【文献检索一般步骤】 搜索关键词,筛选结果,阅读摘要,获取全文。 第一步:访问PubMed 打开浏览器并进入PubMed网站(https://pubmed.ncbi.nlm.nih.gov/)。 第二步:构建查询 在PubMed首页的搜…

Stable Diffusion AI绘图教学

课程介绍下载 这门课程将教授学生使用Stable Diffusion AI绘图工具进行数据可视化和图形设计。学生将学习基本的绘图原理、数据分析技巧,以及如何使用Stable Diffusion AI创建高质量的图表和可视化作品。通过实践项目和案例研究,学生将提升绘图技能&…

js IntersectionObserver简单案例

效果 源码 <!DOCTYPE html> <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…

2023国赛数学建模E题思路分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…

SQL server中substring 的用法

一&#xff1a;substring函数是SQL中截取字段数据中的其中一部分 --列&#xff1a;提取abdcsef中的abc数据&#xff0c;使用substring实现select substring(abdcsef,1,3) --‘1’表示截取的起始位置是从第一个字符开始,‘3’表示截取后得到的字符串长度为3个字符 二&#xff1…

C语言实例_调用SQLITE数据库完成数据增删改查

一、SQLite介绍 SQLite是一种轻量级的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是一个开源的、零配置的、服务器端的、自包含的、零管理的、事务性的SQL数据库引擎。它被广泛应用于嵌入式设备、移动设备和桌面应用程序等领域。 SQLite的特点包括&…