关键词
嵌入式、C语言、autosar、OS、BSW
平台说明
项目 | Value |
---|---|
OS | autosar OS |
autosar厂商 | vector , EB |
芯片厂商 | TI 英飞凌 |
编程语言 | C,C++ |
编译器 | HighTec (GCC) |
autosar版本 | 4.3.1 |
参考文档 | TechnicalReference_Fee.pdf AUTOSAR_SWS_FlashEEPROMEmulation.pdf |
>>>>>>>>>>>>>>>>>>>>>>>>>回到总目录<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
缩写 | 描述 |
---|---|
EEPROM | Electrically Erasable Programmable read only memory |
NVM | NVRAM Manager |
MEMIF | Memory Abstraction Interface |
EA | EEPROM Abstraction |
EEP | internal/external EEPROM DRIVER |
FEE | Flash EEPROM Emulation |
FLS | internal/external Flash Driver |
FCFS | First come first served |
LUT | Look Up Table |
CH | chunk header |
CI | chunk instance |
CL | chunk link |
一、背景
在实际开发阶段中,我们大概率会频繁修改NVRAM block 配置,FEE block 配置。一旦我们修改这些配置后如果直接刷入mcu上,大概率会卡在初始化阶段,因为会检测到FEE 无效导致系统喂狗超时或者其他error。
二、建议的更新操作
2.1 不需要旧的数据
如果不需以前的旧的数据,可以在刷写新的配置前将片上的DFLASH 擦除掉,各大MCU 厂商都有相应的刷写工具。如果没有擦除DFLASH ,最好的情况也是会导致读取/写入 FEE 的性能大幅降低,很多开发者发现修改block 配置后 第一次上电启动会非常慢,但只要执行一次正常下电后,下次上电则会正常就是这个原因。
2.2 需要旧的数据
这种情况往往用于在标定了一组数据后,发现手里居然没有备份,那就只能保留以前的标定了。这时候需要保证修改后的block ID 与以前相同,可以通过 blockID fixed 启用。一般可以更新这个block 的size, datasets等基础信息。
在刷入新的配置后并且初始化完成FEE 后,则可以调用Fee_ForceSectorSwitch()来进行强制换页操作,拷贝数据到新sector并恢复FEE 的性能。极少情况下可能会调用两次Fee_ForceSectorSwitch().,重新清除两个sector。
Fee_ForceSectorSwitch();
<wait until IDLE>
Fee_ForceSectorSwitch();
Fee_ForceSectorSwitch().通过使能下图配置。
三、更新 partition 配置
除了能修改Background Sector Switch Reserve/Threshold和 Foreground Sector Switch/Threshold ,不允许修改其他配置,特别是对齐,地址和大小。如果一定要修改,只能进行DFLASH 擦除后再刷入MCU。
>>>>>>>>>>>>>>>>>>>>>>>>>回到总目录<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<