【干货】基于串口的FPGA远程升级

描述

近期,我们收到许多粉丝朋友的技术问题反馈,为便于大家的学习,小编整理了一系列常见问题的技术指南,将陆续分期发布,请大家敬请关注“小眼睛FPGA”微信公众号,在FPGA的世界里,我们努力把复杂的技术变得简单有趣,记得给我点赞留言,让我知道你也在这趟奇妙的旅程里哦。


 

远程升级简
 

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

 

实验环境



 

操作步

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

 

 

*图1:代码准备

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

 

 

*图2:提供代码

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

 

 

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

*图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合并应用位流*图6:盘古100Pro+合并应用位流

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

 

 

*图7:合并位流固化

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

 

 

*图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远程升级

文章出处:【微信公众号:小眼睛科技】欢迎添加关注!文章转载请注明出处。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • 热点推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分