Autosar存储入门系列02_NVM之CRC校验及显隐式同步机制

本文框架

  • 0.前言
  • 1. NVM中CRC校验
  • 2. NVM的显隐式同步机制
    • 2.1 隐式同步
    • 2.2 显式同步

0.前言

本系列是Autosar存储入门系列,希望能从学习者的角度把存储相关的知识点梳理一遍,这个过程中如果大家觉得有讲得不对或者不够清晰的地方,还请一定指出来,一起探讨,加深学习。

另外根据本人多年的开发经验,做了一些AutosarMCAL配置,通信,诊断,模式管理等实战总结,如果您有需求可以参见AutoSar 实战进阶系列专栏,快速链接:AutoSar实战进阶系列导读

本篇介绍一下Autosar中NVM存储的CRC校验及同步机制,基本框架如下:
在这里插入图片描述

1. NVM中CRC校验

对于NVM中各Blcok存储的基本内容分为三部分:Block Header + Block Data + CRC Data,其中Block Header(Block ID,size等信息)及CRC校验信息为可配置内容。
在这里插入图片描述
在NVM读写时会对CRC进行校验:
在读取时如CRC校验不过,会采用默认值,如无特殊默认值将默认为0;
如在写入时CRC校验一致即认为需要存入NVM的数据没有发生改变,则跳过写操作请求,CRC校验不一致则将数据及CRC一起写入DFLASH中,该CRC值将参与下一轮比较。

在NVM模块配置时,如选择CRC校验,则还需要选择校验的类型:
在这里插入图片描述

2. NVM的显隐式同步机制

在访问NvM Blcok对应的RAM数据时,根据访问方式的不同可支持两种类型的同步机制:
隐式同步(Implicit synchronization)
显示同步(Explicit synchronization)

2.1 隐式同步

在隐式同步中,Application和NvM可以同时访问公共RAM块。应用程序通过调用NvM API将数据写入RAM或从RAM读取数据。

在这种情况下,一个NvM Block的 RAM 块被映射到一个SW-C,不推荐共享RAM。此外,为了保证数据的一致性,当SWC调用NVRAM接口进行读写操作时,SWC不能改变RAM中的值,直到NvM完成正在进行的操作,在此期间,应用程序可以使用轮询来获取请求NVM的状态,也可以通过回调函数异步通知。

适用场景:适用于下电写的Block,即在程序RUN的过程中不存,下电前将RAM中最后的值存进去。
在这里插入图片描述

2.2 显式同步

在显示同步中,NVM会再定义一个RAM Mirror与应用层进行数据交换,App在调用NVM实时写接口时将应用层RAM数据写到RAM Mirror中,应用层可以随意更改应用层RAM,仅需要在发起写入请求时,将应用层RAM拷贝到RAM Mirror中即可修改应用层RAM而无需等待NVM读写完成。
在这里插入图片描述
与隐式同步相比,在显式同步中,应用层RAM可以由多SWC共享,缺点同样由于增加了RAM Mirror会增加Ram资源的消耗量。
适用场景:适用于实时存储的Block,应用层可以更新RAM Block中的值,等上一轮写完再调用NVM接口进行写入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/97551.html

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

相关文章

如何做好服务性能测试

一、什么是性能测试 新功能上线或切换底层数据库或扩容调优,根据实际业务场景的需要,做必要的性能压测,收集性能数据,作为上线的基准报告。 性能测试一般分一下几个阶段: 1. 性能测试 并发量小(jmeter 并…

windows服务器下java程序健康检测及假死崩溃后自动重启应用、开机自动启动

前两天由于项目需要,一个windows上的批处理任务(kitchen.bat),需要接到mq的消息通知后执行,为了快速实现这里我们通过springboot写了一个jar程序,用于接收mq的消息,并调用bat文件。 本程序需要实…

Field injection is not recommended

文章目录 1. 引言2. 不推荐使用Autowired的原因3. Spring提供了三种主要的依赖注入方式3.1. 构造函数注入(Constructor Injection)3.2. Setter方法注入(Setter Injection)3.3. 字段注入(Field Injection) 4…

【Unity每日一记】SceneManager场景资源动态加载

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

【Redis基础篇】浅谈分布式系统(一)

一、浅谈分布式系统 1. 单机架构:只有一台服务器,这个服务器负责所有的工作。 如果遇到了服务器不够的场景怎么处理? 开源:增加更多的硬件资源节流:软件上的优化,优化代码等…一台服务器资源使用有限,就…

【剖析STL】vector

vector的介绍及使用 1.1 vector的介绍 cplusplus.com/reference/vector/vector/ vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是…

删除有序链表中重复的元素-II(链表)

乌!蒙!山!连!着!山!外!山! 题目: 思路: 双指针,slow和fast,并且增加标记flag初始为1。 如果slow指向节点值等于fast指向节点值&…

Kubernetes+EFK构建日志分析平台

目录 Fluentd 工作原理 1.1、主机初始化配置 1.2、部署docker环境 二、部署kubernetes集群 2.1、组件介绍 2.2、配置阿里云yum源 2.3、安装kubelet kubeadm kubectl 2.4、配置init-config.yaml 2.5、安装master节点 2.6、安装node节点 2.7、安装flannel 3、部署企业…

LeetCode 142.环形链表II

文章目录 💡题目分析💡解题思路💡深度思考🔔接口源码 题目链接👉 LeetCode 142.环形链表II👈 💡题目分析 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环…

优化GitHub网站访问慢的问题

方法一、修改host文件解决 大型网站服务器都不会是只有一台服务器,而是多台服务器组成的集群一起对外提供服务。 使用站长工具测速,找一个速度比较快的服务器。 图中可以看到140.82.121.4这个ip比较快, 下面修改hosts: Mac 在 /etc/hosts 中&#x…

蓝牙资讯|中国智能家居前景广阔,蓝牙Mesh照明持续火爆

据俄罗斯卫星通讯社报道,中国已成为全球最大的智能家居消费国,占全球50%—60%的市场份额。未来,随着人工智能技术的发展以及智能家居生态的不断进步,智能家居在中国的渗透率将加速提升。德国斯塔蒂斯塔调查公司数据显示&#xff0…

Redis在Java中的基本使用

本片将介绍 Redis 在 Java 中的基本使用 文章目录 1、使用jedis操作redis1.1、Jedis简介1.2、引入jedis的Maven依赖1.2、获取连接1.3、使用实例 2、对于JedisPooled的使用2.1、使用JedisPooled2.2、关于连接池 3、SpringBoot下使用Redis3.1、引入Maven依赖3.2、配置Redis连接3.…

excel逻辑函数篇2

1、IF(logical_test,[value_if_true],[value_if_false]):判断是否满足某个条件,如果满足返回一个值,如果不满足则返回另一个值 if(条件,条件成立返回的值,条件不成立返回的值) 2、IFS(logical_test1,value_if_true1,…):检查是否…

网络安全--wazuh环境配置及漏洞复现

目录 一、wazuh配置 二、wazuh案例复现 一、wazuh配置 1.1进入官网下载OVA启动软件 Virtual Machine (OVA) - Installation alternatives (wazuh.com) 1.2点击启动部署,傻瓜式操作 1.3通过账号:wazuh-user,密码:wazuh进入wazuh…

删除链表中的节点(力扣)

目录 题目: 看着花里胡哨,小卡拉米四行代码秒杀! 示例: 思路: 代码: 题目: 看着花里胡哨,小卡拉米四行代码秒杀! 示例: 思路: 把后一个节点的…

动手学深度学习—卷积神经网络LeNet(代码详解)

1. LeNet LeNet由两个部分组成: 卷积编码器:由两个卷积层组成;全连接层密集块:由三个全连接层组成。 每个卷积块中的基本单元是一个卷积层、一个sigmoid激活函数和平均汇聚层;每个卷积层使用55卷积核和一个sigmoid激…

【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Re…

linux RabbitMQ-3.8.5 安装

软件版本操作系统CentOS Linux release 7.9.2009erlangerlang-23.0.2-1.el7.x86_64rabbitMQrabbitmq-server-3.8.5-1.el7 RabbitMQ的安装首先需要安装Erlang,因为它是基于Erlang的VM运行的。 RabbitMQ安装需要依赖:socat和logrotate,logrotate操作系统已经存在了&…

图论相关问题

1. 拓扑排序bitset 第一次使用bitset&#xff0c;复杂度&#xff1a;N/32&#xff0c;比N小 所以总的时间复杂度为O(N*(NM)/32) #include <iostream> #include <bitset> #include <queue> using namespace std; const int N 3e420; bitset<N> f[N];…

使用低版本vcpkg时,bootstrap-vcpkg.bat无法生成vcpkg.exe的可能原因

缘由 需要使用vcpkg中低版本的第三方库&#xff0c;下载vcpkg后&#xff0c;回退至指定版本&#xff0c;运行bootstrap-vcpkg.bat生成vcpkg.exe时&#xff0c;命令行窗口总是一闪而过&#xff0c;但是vcpkg.exe却没有生成。 添加pause&#xff0c;查看错误 编辑bootstrap-vc…