发 帖  
原厂入驻New
[经验]

FPGA的在线升级的策略分析

2020-9-29 17:03:31  117 FPGA Flash 程序
分享
0
基于FPGA的在线升级
  • 在线升级的意义
  • 在线升级的策略
  • 整体框架
  • 总结
  • 参考文献
  • 结束语

在线升级的意义 首先什么是FPGA的在线升级?
所谓FPGA的在线升级其实就是不对FPGA进行常规意义下的下载程序,便可以通过一些手段更新FPGA中的程序,一般用到的工具有ICAP原语、flash。那个该问题的解决将面临两个问题:
1、如何将新的FPGA程序下载到flash中;
2、如何让FPGA执行新的程序;
FPGA在线升级的意义?
我们为什么要花费这么大的代价去学习FPGA的在线升级,有一个很重要的原因就是:调试时,我们一般用JATG接口进行烧录、调试,但是等产品上线时,因为JATG接口过于笨重,我们一般是不保留该接口;在没有这个接口的情况下要想下载新的程序,就必须使用在线升级。
在线升级的策略 这里需要掌握的一个知识是,FPGA默认从flash中读取程序是从0地址读取的。我们回忆以下电脑中操作系统的加载,在电脑中首先加载的是一个引导程序,该引导程序指导着对应操作系统的加载,那么对应到FPGA中我们使用同样的办法。首先再FPGA的默认起始点(flash的0地址)下载一个引导程序,然后在引导程序中包含ICAP原语,在一定的条件下,使得FPGA从flash中加载新的FPGA程序。
从上面的分析我们可以打先FPGA在线升级的最关键的问题就是引导程序的书写,这里先给出一般引导程序的设计模块:
20200131120852933.png
这里简单介绍上面几个模块的重要性。
I-start:读秒程序,开机时,在一定的时间段内,FPGA如果没有接收到PC机在线升级的指令,便启动ICAP程序跳转到指定的地方执行程序。
rs232:该模块的主要作用是接受从PC机传来的新的FPAG烧录程序,注意这里一般选择是bin文件,因为bin文件经过串口方便传输
spi:将rs232接收来的引得FPGA烧录文件写入到指定的flash地址中并且覆盖相应之前的FPGA程序,这里注意写入的位置一定要与ICAP原语跳转的位置相同,否则该引导程序将没有作用。
ICAP:该模块主要起到FPGA从指定的flash地址启动程序的作用,里面包括ICAP原语,是引导程序中最关键的部分。
KEY:这里起到两个作用,一:给定FPGA在线升级的指令;二:等待spi将新的FPGA程序写入到flash中,再启动对用ICAP程序跳转到指定地方执行。
上述的整体过程,我们一般用状态机控制,会发现所有的程序我们之前的文章中都有,这里我不再写程序,只给出相应的策略。
整体框架 2020013112234313.png
flash中的两块程序如上图,其中1是我们这篇文章中主要讲解的引导程序,2是FPGA执行程序的地方。
总结 该策略我并没有验证,但是从理论上是可行的,主要是因为上一篇文章的ICAP原语没有下板验证通过,自己也没有进行更深入的调试,但是该理论方案是彻底可行的。

相关经验

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表