[AutoSar] FEE NVM BUG记录

关键词

嵌入式、C语言、autosar

平台说明

项目Value
OSautosar OS
芯片厂商Infineon ,TC234,TLF35584
编程语言C,C++
编译器tasking

在这里插入图片描述
>>>>>回到总目录<<<<<<

背景

在开发memory相关工作时出现的问题记录。

一、功能说明

1.1 FEE

FEE是属于内存硬件抽象层的一部分,是为了给上层提供一中虚拟内存分区和计算方案,以实现几近于无限次数的擦写(FLS)。

1.2.双扇区算法和垃圾回收机制

将同一个物理扇区的分为了两个逻辑扇区,每个扇区大小为64K,WL大小为512B,页大小为8K。原则上定义了两种页面,一种数数据页,用于放置用户的请求数据和管理数据,状态页用于存储FEE的状态。每次有新的数据,将其堆栈放置更新即可。当堆栈达到设定的阈值的时候启动垃圾收集机制。
垃圾回收机制:
1.从激活的扇区(满了)拷贝到另一个空的扇区。
2.激活扇区切换到另一个扇区。
3.擦除老的扇区。
4.检测是否擦除完毕。
状态页可以确定当前激活的是哪个页面,也可以保证垃圾回收过程不会被以外打断或者复位。

二、关于NVM在空DFLASH的时候错误问题

在以前的工程中,我们在Readll的时候强制调用mainfunction,目的是快速的读出NV的内容或者恢复ROM到NVRAM。如图所示。

在这里插入图片描述
如果Dflash不为空是可以。但是如果Dflash为空,在上电初始化的时候,Fee会认为section状态为非法,执行写入WL对齐操作。但是因为强制do while 调用mainfuntion操作,会导致写超时,这个时候如果再重新上电源,FEE会检测到之前没写完的section为非法,会先擦除后再重新写入,这样又会导致擦除超时,进入DET。
解决方案:
进行do while 前先获取当前FEE的状态,只要FEE不是在normal 状态下,都避免快速的调用mainfunction,延迟为250us。
在这里插入图片描述
在这里插入图片描述
>>>>>回到总目录<<<<<<

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老灰╮(╯-╰)╭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值