(6)(从PROG跳转到TRCV_P,然后TRW,返回READ)hready拉高,释放总线,返回步骤(1)。
3.7 IAP硬件地址映射
Flash控制器支持两片Flash器件工作,Flash器件为UM055EFLLP128KX032CBA型号,深度方向拼接,统一编址,main区(CPU地址)范围从0x00_0000H~0x0F_FFFFH,NVR区(CPU地址)从0x10_0000~0x10_0FFFH。
正常情况下Flash Bank0位于低地址区域,FlashBank1位于高地址区域。正常启动时CPU从Bank0低地址区域开始执行程序,如图16所示。
在IAP流程中,如果判断待升级程序容量小于一个Bank容量,则可以使用这种快速在线升级方法,Boot-loader IAP程序放在Flash Bank0,将用户程序USER APP程序写入Flash Bank1中,然后写入更新标志位(标志位放在Flash NVR区)。发起系统软复位,硬件将地址重映射,系统从Bank1高地址区域开始执行程序,如图17所示。
该设计不需要做中断向量重映射,减少了软件的复杂度,方便用户使用。
3.8 时序参数随频率变化
Flash器件要在系统中正常工作,读写擦除的时序参数要满足器件要求。而Flash控制器根据系统的要求,必须能在多种频率下进行正常读写和擦除,这些时序参数值是内部若干个counter计数器根据频率产生的。如果在每个特定频率下,用软件进行一一重新配置所有的时序参数是比较繁琐的。
本控制器将时序参数分为了两类考虑,做了如下设计:
(1)读时序参数
Flash读操作的各时序参数设计上已经给出默认值,能保证系统启动正常工作。需要考虑的主要参数是tAA,表示AE有效到dout数据有效的选通时间,Flash器件要求必须大于35 ns。本控制器设计了读延迟参数值read_latency_cnt,根据不同频率可以配置不同值以满足要求并得到最快访问速度。比如在Flash控制器工作时钟为100 MHz时,周期为10 ns,为满足大于35 ns的时间,read_latency_cnt最小值需要配置为4。读时序参数如表2所示。
(2)擦写时序参数
擦写时序各时序参数值设计上已经给出默认值,能保证系统启动正常工作。当系统工作频率变化时,擦写的各时序参数值也要满足器件要求。