1、将一块已经用下载器烧录fpga程序的epcs4与ARM连接,arm读出epcs4所有扇区数据保存到NandFlash中,然后拷贝到电脑备份。
2、用另一块待烧录的fpga与arm连接,将刚读出的数据烧写进去,读取的数据是最终执行的二进制Bin文件,因为Altera开发环境所生成的jic、pof与最终epcs4内的内容不一样。之所以读取所有扇区数据是因为不知道实际Bin文件大小,干脆全部读出。EPCS4存储空间是512KB。IO模拟SPI时序的方式速度有限,读/写512KB各需要40S,用SPI总线速度会快不少。该方法已经在2块FPGA里运行没问题,证明Bin文件并没有在烧写过程中绑定FPGA芯片序列号。
3、启动后按5进入EPCS4测试代码。
4、按N将Bin文件从Nand拷贝到SDRAM的0x30200000,长度512KB。
5、按W将0x30200000的数据烧录到epcs4中,写入后计算写入前数据校验码得0x00000039,然后再读出EPCS4中所有数据,计算读出内容的校验码也是0x00000039,比较校验移植返回Success!!!,否则返回ChecksumError!!!。
6、升级过程中fpga需要掉电,或者将fpga与EPCSxx连接的引脚断开,否则3个设备连接到共用信号线无法通信,完成这些后即可更新好fpga固件。fpga是在pal可编程阵列逻辑、gal通用阵列逻辑等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
远程更新流程当系统需要升级时,中心控制系统需要将新的FPGA比特映像文件直接发布到远程子系统,由远程子系统将比特文件更新到非易失存储器。然后由FPGA内部控制逻辑重新启动。比特映像文件更新后,下次上电启动将从新的比特映像文件。如图 1FPGA远程更新系统
多重启动 FPGA 介绍
a)多重启动介绍
VIRTEX6可以支持2套配置文件,第一个版本为安全版本存放在起始位置(spi起始地址为0),第二个版本为最终启动版本。当FPGA启动时,加载控制器会从地址0开始读取加载指令。当读到WBSTAR和IPROG指令时,控制器就跳转到WBSTAR指定的地址读取新的加载指令。在第二个配置文件中不再发IPROG指令,控制其将顺序执行以直到配置文件结束。配置顺序如图所示。
b)多重启动模块
i) 配置存储器访问接口
在FPGA配置过程中,FPGA通过指定的配置管脚访问外部非易失存储器,当配置结束后,部分管脚被释放可以用作普通逻辑管脚,但部分FPGA配置管脚是配置专用,在用户应用中是不可见的,需要例化专用模块STARTUP_VIRTEX6才能允许用户逻辑访问这些专用管脚。
VIRTEX6访问外部存储器逻辑框图和STARTUP_VIRTEX6管脚定义
可以使用控制器(arm或者单片)+fpga的模式,fpga的加载方式采用ps加载方式,设计控制器的程序,使其可以和pc进行通讯,这样通过pc发送指令或者加载文件给控制器,然后让控制器自动加载fpga。这些说起来简单,但是实际设计的时候会比较复杂,需要多方面的知识。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)