• 197查看
  • 0回复

[Autosar] Autosar存储(中)NvM内存管理

[复制链接]


该用户从未签到

发表于 25-4-2024 19:36:57 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


前言  
首先介绍一下存储栈中常见的几个名词:Page: 由若干个字节所组成,是编程的最小单元, 对于TC397的DFlash而言,Page大小是8bytes.Logical Sector: 逻辑扇区,擦除的最小单元,对于TC397的DFlash而言,扇区大小为4kbytes.Physical Sector: 物理扇区由多个逻辑扇区所构成Data Flash: 可以由多个物理扇区所构成.物理扇区即常说的BANK,。 所有需要存储的数据最终都会写入到物理扇区中。一个物理扇区写满之后 ,就需要切换到另一个物理扇区来写入数据,但物理扇区的个数是有限的,因此要循环使用。同时针对同一个Nv BLOCK如果写入多次,对应用而言只有最后一次写入的数据是有效的(由于flash的擦除寿命有限,所以数据采用新增,而非覆盖原有数据的方式),而FEE/FLS换页机制可以实现擦除无用的数据以及循环使用物理扇区。1 扇区循环使用
Autosar存储(中)NvM内存管理w1.jpg

扇区状态转移示意图
如上图所示,扇区有5个状态,分别为:UNDEF、ERASED、USED、FULL和READY_TO_GET_ERASED。UNDEF一般为芯片第一次使用时的扇区状态,ERASED表示该扇区已经被擦除可以被使用了,USED表示正在被使用,FULL表示扇区已存满,READY_TO_GET_ERASED表示扇区将要被擦除。这些状态都存储在扇区的头标识中(headermarkers).
Autosar存储(中)NvM内存管理w2.jpg

扇区头标识组成
MarkerIdentNr表示扇区的状态。当扇区数据快要满(full,超过换页的阈值)时会触发换页,此时将所有的最新的有效数据从当前扇区(oldest)拷贝到下一个激活(USED)扇区,在拷贝完成后,oldest扇区将被擦除成为新的可用扇区。

Autosar存储(中)NvM内存管理w3.jpg

Autosar存储(中)NvM内存管理w4.jpg

换页示例

2 Block管理
每个Nv Block都由Block Header和user data组成,如下图所示。
Autosar存储(中)NvM内存管理w5.jpg
Block头标识组成
头标识中的Status是用来标识这个block是否有效的。Blcok的写入是新增的,当这个Block有新的数据写入时,需要将之前的状态置为无效,将本次的状态置为有效,如下图所示。
Autosar存储(中)NvM内存管理w6.jpg

Blcok数据写入示意图
如上图所示:1.第一次写入BLOCK 1时 , Block 1 Address 状态为Valid;2. 第一次写入BLOCK 2 时, Block 2 Address 状态为Valid;3. 第二次写入BLOCK 1 ,先将 第一次写入Block 1 的 Block 1 Address 状态置为Invalid再将第二次写入BLOCK 1时的 Block 1 Address 状态为Valid;4. 当请求读取BLOCK 1的数据时,返回状态为Valid的Block 1Address 所对应的数据。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 1-2-2025 07:42 , Processed in 0.271242 second(s), 32 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.