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

news2024/11/13 11:03:14

本文框架

  • 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.coloradmin.cn/o/902734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linus对AMD的fTPM 漏洞表示”沮丧” 呼吁禁用该功能

导读AMD 的 fTPM 问题在业内众所周知,经常导致系统崩溃和卡死。Linux 的创建者 Linus Torvalds 对该功能表示失望,称其为内核的”瘟疫”。 简单回顾一下,可信平台模块(Trusted Platform Module 或 TPM)是一种安全检查…

抖音火山引擎推出免费域名DNS和公共DNS服务

抖音旗下的云计算服务火山引擎最近推出了"TrafficRoute DNS 套件"服务,其中包括两款产品,对软希网来说非常有用。 1.域名DNS: 这是一个用于网站域名的DNS服务,可以加速域名解析速度,从而提升网站的速度。如…

【100天精通python】Day42:python网络爬虫开发_HTTP请求库requests 常用语法与实战

目录 1 HTTP协议 2 HTTP与HTTPS 3 HTTP请求过程 3.1 HTTP请求过程 3.2 GET请求与POST请求 3.3 常用请求报头 3.4 HTTP响应 4 HTTP请求库requests 常用语法 4.1 发送GET请求 4.2 发送POST请求 4.3 请求参数和头部 4.4 编码格式 4.5 requests高级操作-文件上传 4.6 …

线性代数的学习和整理4: 求逆矩阵的多种方法汇总

目录 原始问题:如何求逆矩阵? 1 EXCEL里,直接可以用黑盒表内公式 minverse() 数组公式求A- 2 非线性代数方法:解方程组的方法 3 增广矩阵的方法 4 用行列式的方法计算(未验证) 5 A-1/|A|*A* &…

构建 NodeJS 影院微服务并使用 docker 部署【01/4】

图片来自谷歌 — 封面由我制作 一、说明 构建一个微服务的电影网站,需要Docker、NodeJS、MongoDB,这样的案例您见过吗?如果对此有兴趣,您就继续往下看吧。 在本系列中,我们将构建一个 NodeJS 微服务,并使用…

【排序】插入排序 希尔排序(改进)

文章目录 插入排序时间复杂度空间复杂度 代码希尔排序时间复杂度空间复杂度 代码 以从小到大排序为例进行说明。 插入排序 插入排序就是从前向后(i1开始)进行选择,如果找到在i之前(分配一个j下标进行寻找)有比array[i…

第 7 章 排序算法(2)(冒泡排序)

7.5冒泡排序 7.5.1基本介绍 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部…

手写Promise一:结构的设计

手写Promise 这里写目录标题 手写Promise手写Promise的规范手册promisesaplus官网手写Promise-结构的设计 手写Promise的规范手册promisesaplus官网 链接: 官网链接 手写Promise-结构的设计 // 手写Promsie const PROMISE_STATUS_PENDING pending //等待状态 const PROMIS…

自动驾驶仿真:基于Carsim开发的加速度请求模型

文章目录 前言一、加速度输出变量问题澄清二、配置Carsim动力学模型三、配置Carsim驾驶员模型四、添加VS Command代码五、Run Control联合仿真六、加速度模型效果验证 前言 1、自动驾驶行业中,算法端对于纵向控制的功能预留接口基本都是加速度,我们需要…

【LeetCode75】第三十四题 叶子相似的树

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 给我们两棵二叉树,让我们判断这两棵二叉树的从左到右的叶子节点组成的叶子序列是否一致,即从左到右的叶子节点的数…

python爬虫实战零基础(2)——网页图片

网页图片的批量爬取保存 分析思路预备知识xpath用法response.text和 response.content两者的区别 代码实战请求网页内容批量图片保存 分析思路 还是基于request和xpath的爬虫代码 定位目标网址(里面图片还是很好看的 https://pic.netbian.com/4kdongman/index.html&…

漏洞指北-VulFocus靶场专栏-入门

漏洞指北-VulFocus靶场01-入门 VulFocus靶场前置条件:入门001 命令执行漏洞step1: 输入默认index的提示step2: 入门002 目录浏览漏洞step1:进入默认页面,找到tmp目录step2 进入tmp目录获取flag文件 VulFocus靶场前置条…

Linux 线程库中的接口介绍

1.pthread_create()创建线程 pthread_create()的语法形式: 参数解释: 第一个参数thread:事先创建好的pthread_t类型的参数。成功时thread指向的内存单元被设置为新创建线程的线程ID。 第二个参数attr:用于定制各种不同的线程属性…

三角形添加数--夏令营

题目 tips: 1.本题不要求正三角形输出,只要输出左下三角即可 2.这种输入三角形的,都是可以理解为左下三角形的模型,然后去写f[i][j]f[i-1][j]f[i-1][j1],写行列 3.还有双重for循环输入输出三角形,注意第二…

数据处理与统计分析——MySQL与SQL

这里写目录标题 1、初识数据库1.1、什么是数据库1.2、数据库分类1.3、相关概念1.4、MySQL及其安装1.5、基本命令 2、基本命令2.1、操作数据库2.2、数据库的列类型2.3、数据库的字段属性2.4 创建和删除数据库表2.5、数据库存储引擎2.6、修改数据库 3、MySQL数据管理3.1、外键 My…

YOLOv5+deepsort实现目标追踪。(附有各种错误解决办法)

一、YOLOv5算法相关配置 🐸这里如果是自己只想跑一跑YOLOV5的话,可以参考本章节。只想跑通YOLOv5+deepsort的看官移步到下一章节。 1.1 yolov5下载 🐸yolov5源码在github下载地址上或者Gitee上面都有。需要注意的是由于yolov5的代码库作者一直在维护,所以下载的时候需…

【前端】vscode javascript 代码片段失效问题解决

1. 文件--首选项--用户代码片段-vue.json : 添加 // { // // Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // // description. Add comma separated ids of the languages where the snippet is app…

CentOS 7重置root密码

CentOS 7 如何找回被您 遗忘得 root密码呢? 步骤如下: 步骤一:在开机出现如下界面的时候就按“e”键 步骤二:在步骤一按下”e”键之后,出现如下界面,按 ↓键一直到底部找到“LANG=zh_CN.UTF-8”这句,在这句后面加上“init=/bin/sh”,然后按Ctrl+x进入单用户,此时需要…

Log4Qt日志框架(1)- 引入到QT中

Log4Qt日志框架(1)- 引入到QT中 1 下载源码2 简介3 加入到自己的项目中3.1 使用库文件3.2 引入源文件 4 说明 1 下载源码 github:https://github.com/MEONMedical/Log4Qt 官方(版本较老):https://sourceforge.net/projects/log4q…

【李群李代数】李群控制器(lie-group-controllers)介绍——控制 SO(3) 空间中的系统的比例控制器Demo...

李群控制器SO(3)测试 测试代码是一个用于控制 SO(3) 空间中的系统的比例控制器。它通过计算控制策略来使当前状态逼近期望状态。该控制器使用比例增益 kp 进行参数化,然后进行一系列迭代以更新系统状态,最终检查状态误差是否小于给定的阈值。这个控制器用…