C90FL Flash分配及擦写读使用笔记

如图,CPU总共有10个Block

一、分配原则:

1.只有Low Address Space可以作为程序启动地址。如此程序启动地址可以有6个。优先级由高到低L0>L1>L2...>L5

2.控制器上电后,最先启动的程序(如Start Boot Block)最好放在L0里,客户Boot放在L3或L4里,App程序从L5开始

3.不要把L0用作Nvram,因为程序运行过程中擦除Nvram时一旦断电,L0异常。连接UDE时UDE会首先读取L0里的数据,CPU触发Trap,软件一直复位,UDE一直连接失败,无法调试。

4.Nvram可以选用L1~L3中的两个。比如L1和L2两个48KB大小一样。

5.由于擦写Nvram的操作不能运行在同一个Patition里。所以Boot程序里如果要擦写Nvram,就两个不要放在同一个Partition里。不过如果擦写操作放在RAM环境下运行,可以不考虑此问题。

6.分配一个独立的Block专门存储标定数据,这样数据和程序可以独立刷新,提高刷新速度。数据区和程序区地址也要连续,但是数据区的空间不需要太大,不要占用程序区空间。所以L4用作数据区,L5~H1用作程序区。

C90FL Flash分配及擦写读使用笔记_第1张图片

二、Flash出错处理:

       程序运行正在擦除Flash过程中(比如刷新阶段擦除,NVram切换Block擦除)突然断电,会造成擦除块数据异常,在UDE里显示数据紊乱。之后如果读取异常块的数(不读没关系),CPU会触发一个Trap然后PC复位。因此,需要在Boot或App程序初始化完后首先监控Flash状态,如果发现异常,要立即清除异常的Nvram Block。防止主程序运行后从坏的EEPROM里读取数据复位。监控方法如下:如果MCR寄存器EER置位,则读ADR寄存内容,它保存了第一个异常Block的第一个异常数据的地址,然后擦除ADR保存的地址所在的Block。擦除完一个Block后可以主动复位,程序重新运行继续检查,直到EER不再置位。

C90FL Flash分配及擦写读使用笔记_第2张图片

C90FL Flash分配及擦写读使用笔记_第3张图片

三、Flash擦除:

1.擦实际是把Bit从0->1的操作

2. Flash只能以Block为单位擦除,Block Size越大,擦除时间越长。但也不是同Size成正比例关系。测试结果如下:

L1_16K  擦除时间_336ms

L2_64K  擦除时间_474ms

H0_256K擦除时间_1200ms

四、Flash写:

          1.写实际是把Bit从1->0的操作,而不能从0->1

          2.每次写4个字(16字节,128Bit)单位

       C90FL Flash分配及擦写读使用笔记_第4张图片

          3.使用ECC机制,在一次写失败的时候,可以不擦除重新写一次。这在写EEPROM时很有用。

          C90FL Flash分配及擦写读使用笔记_第5张图片

五、Flash读:

         1. 当程序擦/写某个Patation的数据时,不能读这个Patation的数据,反过来也一样。否则会触发软件Trap。所以,App和Boot程序(或Nvram)不能放在同一个Partation

          

你可能感兴趣的:(学习笔记)