当前位置:网站首页>【AutoSAR 十三 NVM】
【AutoSAR 十三 NVM】
2022-07-02 23:49:00 【柯宇谦】
AutoSAR 十三 NVM
1. NvM(Nonvolatile Memory Manager)

NvM可以管理Flash、EEPROM这些存储器,都做到了对不同硬件统一的管理:
- 排队管理机制
- 上下电存储处理
- 支持数据校验
- 数据的写保护
- 对数据的冗余储存
1.1 排队管理机制
当有数据想要存入Memory的时候,由于Flash和EEPROM都需要先擦除再写入,速度会比RAM慢很多,所以会产生数据的排队。
• 而排队机制可以手动配置是FIFO或者是带有优先级的队列这两种方式
• 可以配置队列的深度
• 支持立即数据(immediate data,即要求立即写入的数据,比如crash data)的快速写入,即可以不用排队
1.2 上下电存储处理
• 在上电的时候,要读取NV里的必要的数据
• 在下电的时候,要将必要的数据写入NV里面
1.3 支持数据校验
主要利用CRC校验检查是否数据出错
• 当校验出错时,触发使用默认数据(直接使用或者也可以CallBack)
1.4 数据的写保护
如同我们写Flash要先解锁一样;还有一种方式是设置成单次写入,仅允许写入一次
1.5 对数据的冗余储存
主要就是增加一些关键数据的可靠性
2. Fee
Fee(Flash EEPROM Emulation)是对Falsh仿EEP的一个抽象的具体实现。
Flash被抽象成了一个一个的Flash Sector,Flash Sector又分为了一个一个的Flash Page。
Flash Sector: 就是Flash能擦除的最小单元,也可以配置为更大
Flash Page: Fee只能通过Flash Page去访问Flash,也就是Fee的最小单元,Flash Sector包含Flash Page。
Fee会调用Flash驱动(FLS)去实现对硬件的真正的擦除和写入等功能;但是Flash由于寿命的原因,不能老是擦除同一个地址的Flash,所以Fee还会自动管理写入的地址,尽量平均的去写入数据
Fee对Flash写入的时候,是会先备份一遍的,再进行擦除。 也就是说我们至少需要两个Flash Sector。过程是:首先将要擦除的Sector的数据都备份到另一个Sector中,然后擦除该Sector,之后一个page一个page的写入数据,直到将这个Sector写满
3. Ea
Ea(EEPROM Abstraction)是对EEPROM 的抽象,它也是调用EEPROM的驱动(EEP)来实现最终的操作。
它也会 考虑EEPROM的寿命问题来将存储的数据做一个均摊。 但Ea与Flash不同是,EEPROM不用一块一块的擦除,它比较灵活,可以 定点写入数据 。所以它可以以交替的形式把一个Block写入几个Memroy Locations里面。
4. NVM的存储处理与Block

4.1 NVRAM Block
NVRAM Block里一般都只包含1个RAM Block、1个Administrative Block和0/1个ROM Block。但是NV Block可以包含多个,根据包含了几个NV Block,我们将NVRAM Block分为三种类型:Native(正常)、Redundant(冗余)和Dataset(数据集).
- Native: 即一个RAM Block保存到对应的一个NV Block中
- Redundant: 将一个RAM Block保存到两个NV Block中,当一个数据失效后可以使用另一个
- Dataset: 最多支持255个NV Block,类似于一个数组,可以用DataIndex来索引其中的数据

4.2 Fee Block
Fee Block是在Fee中使用的Block,以一种叫做 “Chunks” 的方式来做管理。
一个Chunk可以包含几个Blocks,而Chunk之间是用一种链表的形式连接起来的,Chunk就是其中的节点

假如NVRAM Block的Block Length假如是16,那么Fee Block的Block Size应该要加上CRC长度(CRC16加2,CRC32加4)。
所以假如是CRC32,那么Fee Block的Block Size就应该为20。
下面的Ea Block也是一样
4.3 Ea Block

边栏推荐
- Nc20806 District interval
- [golang syntax] map common errors golang panic: assignment to entry in nil map
- JSON conversion tool class
- form表单实例化
- An excellent orm in dotnet circle -- FreeSQL
- Kubernetes simple introduction to writing YML
- FRP reverse proxy +msf get shell
- Implement the foreach method of array
- Thinkadmin V6 arbitrary file read vulnerability (cve-2020-25540)
- Rust ownership (very important)
猜你喜欢

Use Jenkins II job

Shell 实现文件基本操作(sed-编辑、awk-匹配)

One of the reasons why setinterval timer does not take effect in ie: the callback is the arrow function
![[IELTS reading] Wang Xiwei reading P1 (reading judgment question)](/img/ee/540661fcb2cf1cf1eb15e2026c997a.png)
[IELTS reading] Wang Xiwei reading P1 (reading judgment question)
![[shutter] image component (the placeholder | transparent_image transparent image plug-in is loaded into the memory)](/img/73/19e2e0fc5ea6f05e34584ba40a452d.jpg)
[shutter] image component (the placeholder | transparent_image transparent image plug-in is loaded into the memory)

【单片机项目实训】八路抢答器
![Luogu_ P1149 [noip2008 improvement group] matchstick equation_ Enumeration and tabulation](/img/4a/ab732c41ea8a939fa0983fec475622.png)
Luogu_ P1149 [noip2008 improvement group] matchstick equation_ Enumeration and tabulation

MySQL 23道经典面试吊打面试官

字符设备注册常用的两种方法和步骤

FAQ | FAQ for building applications for large screen devices
随机推荐
Extension of flutter
Two common methods and steps of character device registration
redis21道经典面试题,极限拉扯面试官
关于Unity屏幕相关Screen的练习题目,Unity内部环绕某点做运动
Overlay of shutter (Pop-Up)
Callback event after the antv X6 node is dragged onto the canvas (stepping on a big hole record)
Shell implements basic file operations (cutting, sorting, and de duplication)
Pytorch 20 realizes corrosion expansion based on pytorch
pod生命周期详解
Luogu_ P1149 [noip2008 improvement group] matchstick equation_ Enumeration and tabulation
Seckill system design
Free we media essential tools sharing
antv x6节点拖拽到画布上后的回调事件(踩大坑记录)
Multiprocess programming (4): shared memory
Rust所有权(非常重要)
2022上半年值得被看见的10条文案,每一句都能带给你力量!
Array common operation methods sorting (including ES6) and detailed use
Graduation summary
【小程序项目开发-- 京东商城】uni-app之自定义搜索组件(中)-- 搜索建议
Program analysis and Optimization - 9 appendix XLA buffer assignment