基于 Xilinx 7 系列的 FPGA 在线升级方案,整体做得挺灵活的。用了双 Flash 结构,主控可以跑在 PS 或者 PL 里,升级逻辑比较清晰,不绕弯子。
系统的 Flash 拆成两段,一段跑现网程序,另一段写新固件。升级时切换启动地址就行,像换个引导门,重启一下新程序就上线了,思路挺像 U-Boot 的双系统切换。
ICAP是核心,Xilinx 自己的配置端口,用它来实现在线重配置,还挺稳定的。你也可以试试PCAP
或者JTAG
升级,但 PCAP 更适合 Zynq 类芯片。
文件传输这一块可以走UART
、SPI
,甚至PCIe
,看你板子上啥资源多。比如你用的是黑金 K7 那类开发板,直接参考这篇 PCIe 图像传输的案例,它本身就支持高速在线升级。
升级过程中注意电源别抖,Flash 写入别被中断。不然你会发现程序跑一半死机,重启就砖了,尤其是主 Flash 只有一块的情况。
整体来看,这套升级方案适合稳定型项目,比如图像、工业控制这类对系统可靠性要求高的场景。如果你追求“稳中求进”,这套思路还蛮推荐的。
如果你刚好在搞 Xilinx 7 系列的项目,又不想每次升级都烧写器上阵,真可以试试这个方案。