2.2 SST89V564RD微处理器片内 Flash应用划分
SST89V564RD微处理器片内 Flash两块( 64K+8K)中, Block1分成 64个扇区,每个扇区包括 128个字节,总共 8K字节;Block0分成 512个扇区,每个扇区包括 128个字节,总共 64K字节[2]。
微处理器两块 Flash地址应用划分为: Block0中,低地址段 0x0000~0x1FFF存放对 Block1进行擦写的 IAP程序,高地址段 0x2000~0xFFFF存放 FPGA配置数据。 Block1的所有空间用来存放上电启动时对 FPGA进行配置以及配置完后的 IAP操作程序。微处理器默认下从 Block1启动。当程序运行在 IAP命令状态时,可以通过设置特功能寄存器 SFCF使程序运行在 Block0或 Block1,来对另一 Flash块进行擦写或升级。
由于 Block0和 Block1的低 8K字节的地址相同,因此在编程应用程序到 Flash中时,编程器将 Block1的地址定义在 0x10000~0x11FFF地址段,在编译程序时需要将 Block1的程序定位在 0x10000~0x11FFF之间才能正确烧写。
3.软件设计
微处理器状态流程如图 3所示,在上电启动时,微处理器从 Block1启动,读取 Block1中 0x2000开始的配置数据,完成对 FPGA的配置。配置完成以后,微处理器处于 IAP状态,既可以通过串口 IAP指令来对 Block0高地址段的 FPGA配置数据进行擦写或升级,也可以通过串口 IAP指令切换微处理器跳到 Block0中低地址段运行,来对 Block1中的程序进行擦写或升级。
由于 Block0中低地址段存放的只是对 Block1进行擦写的 IAP程序,因此无需擦写或升级该部分程序。升级只限于当更改 FPGA逻辑功能时升级 Block0高地址段的配置数据,或者更改了 FPGA芯片时更改 Block1中的配置数据参数以及 Block0中高地址段的配置数据。当程序运行在 Block0中,要切换到 Block1运行重新配置 FPGA时,将产生复位信号,复位微处理器和 FPGA使微处理器重新对 FPGA进行配置。