目录
1、Tc39x系列 Flash编程
当前AUTOSAR项目用到的主要芯片是英飞凌的TC397芯片,介绍一下TC397芯片上面硬件FLASH相关知识。
- TC397芯片存储分为PFLASH(Program Flash Memory)和DFLASH(Data Flash memory)。
- TC397有5个3MB大小PFx(PF0...PF4)和一个1MB大小的PF5。每个PFx被划分为1024KB大小的物理扇区,每个物理扇区又被划分为16KB大小的逻辑扇区(Logical Sector)。
- TC397有两个数据闪存存储区DFLASH0和DFLASH1,就是用这个DFLASH来模拟eeprom,来作为autosar的存储服务使用的。DFLASH0还包含了用于数据保护的用户配置块(UCBs,User Configuration Blocks)和1个配置扇区(CFS),用户无法直接访问该配置扇区。
- DFLASH逻辑扇区可以配置4KB或者2KB,DFLASH的页有8字节组成,也就是DFLASH最小擦除单元为4/2K,最小编程单元为8字节。
- PFLASH逻辑扇区16KB,PFLASH的页有32字节组成,也就是PFLASH最小擦除单元为16K,最小编程单元为32字节。
2、Flash、NorFlash、NandFlash区别:
FLASH又称为闪存,属于广义的EEPROM,因为它也是电擦除的ROM,它和EEPROM最大的区别就是,FLASH只能按照扇区(block)操作,而EEPROM可以按照字节操作。FLASH的电路结构比较简单,同样容量占芯片面积较小,成本比EEPROM低很多。FALSH分为NOR FLASH 和 NAND FLASH。
NOR FLASH数据线和地址线分开,可以实现ram那样随机寻址功能,也就是说程序可以在norflash上面直接运行,不需要拷贝到ram中。
NAND FLASH同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。
3、NvM Flash操作注意事项:
1、Flash Driver不能操作相同的Bank; (一般将Flash Driver加载到RAM中执行)
2、Flash Erase/Program操作时,要关闭WDG;
3、Flash 操作期间,供电电压一定要稳定;
4、当某个Block的参数修改以后,NVM需要存储最新的参数,而一次存储是将整个Block的参数一次性存储,如果Block空间分配过大,消耗的NVM空间就过大,这样会导致一个Page(假设Page 0)很快写完,进行换页操作,过快的换页操作也意味着DFlash擦除次数的提高,使得DFlash变得“不耐用”。而且切页操作耗时,可能会影响到某一时刻程序的运行状态。所以,当某些参数改写频繁时,可以将这些参数单独配置一个Block,不要与数据变动率低的参数放到一个Blcok中,这样可以延长NVM的使用寿命。
假设:Page大小为2048 byte,Block 1占用500 byte空间,Block 2占用50 byte空间。每次Argu1(4 byte)更新(存储NVM),需要将Argu1所在的Block整体重新写一遍,而写一遍Block 1需要使用500 byte空间。如果把Argu1放在Block 2中,只需要消耗50 byte空间。如果使用Block 1存储Argu1,Argu1更新到第5次时,就需要切页;如果使用Block 2存储Argu1,Argu1更新到第41次时,才需要切页,极大的降低了NVM的擦/写频率,延长其使用寿命。Block1、Block2示意如下:
5、为了最大寿命使用Flash, 一般使用换页策略(均衡擦写);
6、为了在ECU运行期间避免Flash的频繁擦写,一般使用在操作循环上电读,下电写;重要数据才强制写;
TC397 Flash:
https://blog.youkuaiyun.com/weixin_42580645/article/details/125356483