简介
本章节主要描述远程升级的思路,后文将详细讲解如何实现FPG远程升级功能。
环境
1、FPGA为XILINX A7系列FPGA;
2、FLASH存储芯片型号为S25FL 128Mbit芯片;
3、远程升级可通过串口/PS端DMA传输升级文件升级;
升级原理
XILINX 官方提供的FPGA升级是在FLASH里缓存两个程序,程序一为初始程序,主要提供升级服务,该程序存入FLASH的起始地址0,并且不会做任何改动。
程序二为升级程序,该程序也提供升级服务,升级存入的起始地址依然是程序二的起始地址。
FPGA上电先启动程序一,并检测程序二是否校准无误,如果校准通过则执行程序二,校准不通过返回到程序一工作。
以上操作可以保证升级失败后可以再次升级,因为程序一不会被破坏,在程序一接到升级指令后会将升级程序存入指定升级地址。
总体升级设计
远程升级框图如下:
以太网传输升级程序到ZYNQ系列FPGA,PS端再通过DMA将数据传输给PL端,PL端接收数据将升级程序下发给8个子系统,每个子系统由一个A7 FPGA控制,另外升级程序也可以通过串口直接传给ZYNQ的PL端,然后再下发到每个子系统,实现远程升级。
流程图如下:
以上是系统升级流程图,FPGA端升级流程图如下:
下面就升级程序本身做详细拆解,主要分3大部分:
1、FPGA如何实现FLASH跳转升级功能,该功能主要调用XILINX提供的原语;
2、实现FLASH的读写擦除控制驱动,另外存储程序的FLASH默认是无法控制的,需要调用原语;
3、远程升级流程,接收远程升级指令后需要先对FLASH做擦除等指令,然后对接收的数据进行FLASH写操作。
以上三大部分都需要验证无误后才能实现搭建完整的远程升级系统。
下文将对以上3个部分逐一讲解。