进行在线远程升级时,通常需要执行两个步骤:1.将数据写入外部闪存。 2重新启动FPGA配置。但是,为了进行远程升级,通常需要将远程升级模块remoteupdataIP添加到原始程序中,并且可以在升级过程中激活远程升级功能。远程升级后的程序加载过程:远程升级成功后,闪存中至少应存储两个程序:出厂程序和升级程序。这两个程序位于不同的地址空间中(工厂程序从0X0000开始存储)。 FPGA上电后,FPGA将加载出厂程序。运行出厂程序后,将检测到remoteupdataIP中的某些参数(例如,将在remoteupdataIP部分中介绍的配置镜像参数等),并将读取闪存中升级程序内容的开始地址。指向读取的地址,然后触发重新配置(例如,重新配置信号有效),并开始加载重新配置程序。直到无错误加载完成。也就是说,该程序将在整个过程中加载两次。 1.如何编写程序到闪存。在程序运行期间,您可以通过控制某些IP将程序写入Flash。可以使用两个IP:EPCScontroller,ASMI。 1. EPCSController:在Qsy系统中,此IP通常需要与NIOSII一起使用,并且用户需要在ARM编程中具有一定的基础。但是,Altera还提供了一些与epcs操作相关的API,如读写,擦除等。但是,在操作之前,将读取FLASH的ID,以确定它是EPCS还是EPCQ或EPCQL,以及容量有多大。确定Flash类型后,可以调用API函数来操作Flash。互联网上也有例程,例如Zircon Technology的参考例程。但是,如果您使用的是第三方闪存,并且读取的ID不在官方闪存的ID列表后面,您会认为没有闪存,并且无法读写(我不敢100%确定,但您必须更改它。)。因此,要求操作员对ARM的操作有一定的了解。在CycloneIV上使用EPCSControllerIP时,需要手动绑定四个引脚,但是在CycloneV上,无需绑定它们。 2. ASMIIP该IP在IP库和Qsys中。可以使用verilog直接对其进行编程和控制。互联网上还有一个中文文档:ug_altasmi_parallel_CH.pdf。本文档将介绍如何擦除,读取和写入闪存等。只要时序控制得当,EPCS / EPCQ / EPCQL的空间地址控制编号就可以了。在线或官方都有参考例程,您可以参考。 2.如何打开下载的程序文件并进行远程刻录,需要一台PC等,以通过串行端口或网络将程序传输到FPGA。程序文件通常是jic / sof / rbf格式的文件,因此无法打开常规软件,也无法看到其中的内容。 ,您可以使用UltraEdit软件打开这些文件,并且里面会有一些提示。但是该文件将非常大,例如16MB,并非全部都是有效信息,我不知道现在应该将哪些数据写入闪存,如果知道的话,我会在以后添加。 3. RemoteupdataIP该IP在IP库和Qsys中可用,并且可以通过verilog进行控制。建议阅读他的手册ug_altremote.pdf,其中包含有关寄存器的详细说明。在使用过程中实际上是读取或写入寄存器的过程,最后一步是重新配置信号。网民提出了一个想法:read3' b000(读取重新配置的条件)-" write3' b101(Anf配置模式选择:工厂或镜像)-" readAnf3' b101(确保)- “ write3&#39b011(写看门狗溢出值)—” write3' b010(写看门狗溢出值)-“ write3&#39b100(写看门狗溢出值)-”重新配置使能。然后操作完成,等待重启。