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没有带硬核ARM的话,FPGA和ARM的通信可以采用灶旅激ARM总线的方式,也是就FPGA和ARM芯片留出的总线相联系。
那么FPGA端提供的接口就是要与ARM总线协议一致。
一般来说采用类似SDRAM的接口就可以了,通过片选来镇尘切换到FPGA数据。
当FPGA需隐袜要发送数据时,可以先给ARM一个中断信号,ARM再通过片选访问FPGA数据即可。
一般情况下代码的ARM核几乎不可能的,因为如果用户自己定义一个ARM核要考虑的太多,中断向量表,中断歼铅拦仲裁,内部机制不是用户可以书写的。。。激嫌。一般而言ARM核是嵌入FPGA内部的硬逻辑,使用时使能即可;或者官方提供一个验证好的网表用户直接编译即可,这个一般用于小的简单的如51核等。。。一个用户自定义的软核可以使用Altera的Nios或者Xilinx的Blzae,Actel暂时不支持氏胡用户自定义软核,不过未来可能可以,因为最近出的SmartFusion2系列构架基于查找表,逻辑门可以做到很大,期待中……不知道这个回答可以吗,祝好~欢迎分享,转载请注明来源:内存溢出
评论列表(0条)