当前位置:网站首页>【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
边栏推荐
- [Chongqing Guangdong education] audio visual language reference materials of Xinyang Normal University
- 2022上半年值得被看见的10条文案,每一句都能带给你力量!
- Rust string slicing, structs, and enumeration classes
- [MCU project training] eight way answering machine
- antv x6节点拖拽到画布上后的回调事件(踩大坑记录)
- NC20806 区区区间间间
- ftrace工具的介绍及使用
- About the practice topic of screen related to unity screen, unity moves around a certain point inside
- Set up nacos2 X cluster steps and problems encountered
- Hundreds of continuous innovation to create free low code office tools
猜你喜欢
Explain in detail the significance of the contour topology matrix obtained by using the contour detection function findcontours() of OpenCV, and how to draw the contour topology map with the contour t
Luogu_ P2010 [noip2016 popularization group] reply date_ Half enumeration
Why is the website slow to open?
Redis21 classic interview questions, extreme pull interviewer
[shutter] image component (the placeholder | transparent_image transparent image plug-in is loaded into the memory)
Multiprocess programming (I): basic concepts
Multiprocess programming (II): Pipeline
An excellent orm in dotnet circle -- FreeSQL
Linux软件:如何安装Redis服务
Markdown tutorial
随机推荐
图解网络:什么是虚拟路由器冗余协议 VRRP?
MySQL 23道经典面试吊打面试官
在线预览Word文档
Wechat applet obtains the information of an element (height, width, etc.) and converts PX to rpx.
【雅思阅读】王希伟阅读P2(阅读填空)
Nc20806 District interval
Introduction and use of ftrace tool
Shell 实现文件基本操作(sed-编辑、awk-匹配)
Andorid gets the system title bar height
[shutter] Introduction to the official example of shutter Gallery (project introduction | engineering construction)
Some introduction and precautions about XML
Pytorch 20 realizes corrosion expansion based on pytorch
Array de duplication
Program analysis and Optimization - 9 appendix XLA buffer assignment
AcWing_ 188. Warrior cattle_ bfs
数组常用操作方法整理(包含es6)及详细使用
Cmake basic use
Solution to the problem of abnormal display of PDF exported Chinese documents of confluence
【小程序项目开发-- 京东商城】uni-app之自定义搜索组件(中)-- 搜索建议
2022上半年值得被看见的10条文案,每一句都能带给你力量!