基于串口的FPGA远程升级

远程升级简介

远程升级的实质是通过远程且不影响当前芯片工作状态的方式实现芯片的代码版本升级或回退。本例程采用基于SPI Master和BPI Master接口的远程升级方案,在远程升级的过程中,用户通过通信协议(如TCP/IP,PCI,UDP,UART等,本例程使用UART)或专用接口从远端接收位流,通过用户SPI接口将位流编程到外部Flash,实现代码的远程升级。

实验环境

实验环境.png

操作步骤

第一步:代码准备 在远程升级位流中,用户通过将合并位流(开关程序+跳转程序+黄金位流+应用位流)写入到外部Flash芯片,利用远程升级程序更新应用位流。因此固化在外部Flash中的程序,无论是黄金位流还是应用位流都需要包含升级程序。黄金位流可以理解为一个保底程序,当更新应用位流出现问题时,FPGA可回退到黄金位流版本,重新进行应用位流的代码升级。应用位流在包含升级程序的同时,添加上用户自己设定的功能代码。Logos2系列的FPGA器件支持1~3个应用位流,本例程以一个应用位流为例进行演示,应用位流中的用户程序为流水灯实验。

图1:代码准备.png

*图1:代码准备

以盘古100Pro开发板demo为例,demo中提供了两个工程,分别为黄金位流对应的工程和应用位流对应的工程。用户后续只需对remote_update_applied工程中的用户程序进行修改即可。

图2:提供代码.png

*图2:提供代码

第二步:sbit格式转换 分别将黄金位流对应工程的sbit文件和应用位流对应工程的sbit文件进行转换,转为Flash的.sfc文件。

图3:黄金位流工程sbit格式转换.png

*图3:黄金位流工程sbit格式转换

图4:应用位流工程sbit格式转换.png


*图4:应用位流工程sbit格式转换

第三步:合并位流 将黄金位流文件和应用位流文件合并为一个合并位流文件。在Convert File Dialog界面中选择Generate Multi Revision File功能,正确选择器件类型(盘古50K为PGL50H,盘古100Pro为PGL100H)和位流类型(SPI Upgrade Data Stream),并勾选Enable Set Start Address选项。需要注意,应用位流的Start Address需要与两个工程中顶层文件设定的USER_BITSTREAM_ADDRESS一致。

图5:盘古50K合并应用位流.png

*图5:盘古50K合并应用位流

图6:盘古100Pro+合并应用位流.png


*图6:盘古100Pro+合并应用位流

第四步:代码固化 将生成的合并位流文件固化到外部Flash中。注意自己合并位流文件存放的位置,合并位流文件包含“_mul”后缀。

图7:合并位流固化.png

*图7:合并位流固化

第五步:位流文件更新 代码固化后,FPGA会自动加载应用位流程序(需要几十秒时间),显示流水灯。由于应用位流文件带升级程序,可以通过串口发送对应命令,实现应用位流文件更新操作。与升级程序相关的操作命令及返回值如下图所示。

图8:操作命令及返回值.png

*图8:操作命令及返回值

应用位流文件的升级步骤如下(注意发送和接收均需勾选十六进制表示):

1.上位机下发写位流使能命令,等待FPGA擦除开关程序和应用位流。本例程只定义了位流1的起始地址,因此发送写位流1使能(e7 e7 e7 e7 11),擦除完成FPGA发送给上位机完成命令(55 05 01)。

2. 上位机收到擦除完成标志后,发送新的应用位流文件(注意,此处是经过sbit格式转换得到的.sfc文件)和位流结束标志(7e 7e 7e 7e)。当上位机收到(55 05 10)则表示写应用位流完成,可进行下一步操作。可以读位流进行校验,也可以重复前两步操作,再次写位流文件。

3. 上位机下发读位流使能,读位流进行校验。这里发送读位流1使能(e7 e7 e7 e7 51),当校验完成后FPGA上报校验结果。(55 03 01)表示校验结果为正确,(55 03 00)表示校验结果错误。

4. 上位机发送打开开关使能命令,这里发送打开开关1使能(e7 e7 e7 e7 0e 41)。打开完成后,FPGA发送给上位机完成标志(55 05 04)。

5. 上位机下发热启动使能(e7 e7 e7 e7 04 01),加载新的应用位流。若上步的校验结果为错误,则加载黄金位流。

6. 若只是切换应用位流,不更新应用位流,其操作如下。

7. 上位机下发单独擦除开关使能命令,擦除所有开关程序。擦除完成FPGA 发送给上位机完成标志( 55 05 02)。

8. 上位机发送打开开关使能命令。打开完成后,FPGA 发送给上位机完成标志(55 05 04)。

9. 上位机下发热启动使能,加载新的应用位流。为了简化切换位流启动的流程,可关闭校验使能。

注:以上操作仅对深圳市紫光同创电子有限公司提供的《Logos2 系列FPGA 远程升级应用指南》文档的实际操作步骤进行补充说明。更多详细信息请查看紫光同创提供的应用指南及用户手册。

文章来源:小眼睛FPGA

最新文章

最新文章