本发明涉及电路设计领域,尤其是一种配置文件远程升级的解决方法。
背景技术:
在含有fpga的硬件电路的设计中,采用将fpga的jtag引到外部,通过fpga对配置flash进行烧写。该方法受限于jtag的长度,导致或需要破坏硬件的密闭环境,将jatg接口暴露出来,或需要升级设备就近放置,或需要电脑上安装相关的软件,方能实现升级功能。专利cn106547596中,描述了配置的软件流程方法,需要合并升级文件和配置文件,计算升级时间等,专利cn105159731a中列出了远程升级的硬件方案,但需要cpu、sram等的外部设备,增加硬件设计的复杂度,需依靠外部环境。
技术实现要素:
为了克服现有技术的不足,本发明提供一种fpga配置文件远程升级的方法。设计fpga和有配置flash的硬件电路通过网络或者其它接口与电脑相连接,实现配置文件的远程升级。
本发明解决其技术问题所采用的技术方案的步骤是:
步骤1:fpga与配置flash通过flash的可读写的接口连接,进行交互数据,接口为flash的jtag或者地址数据接口,pc机与fpga通过网口进行数据交互,实现配置文件的传输;
步骤2:针对所选flash或者fpga生成默认启动程序,支持通过网口对配置flash的读写访问功能,并对flash的地址空间进行分区,如图2,分为启动头分区a,启动程序分区b和升级程序分区c,其中分区a的大小等于所选flash或者fpga跳转指令及启动指令的大小,分区b和分区c的大小应大于fpga的配置文件大小,其中分区b中存储默认启动程序,分区c中存储升级后的程序;
步骤3:上电后,将启动头和默认启动程序分别写入到分区a和分区b,在分区a内的程序执行跳转地址设置为start_addr,执行默认启动程序支持通过网口对配置flash进行读写操作;
步骤4:根据步骤2、3的设置,下电重启后,fpga默认从flash0地址执行完分区a的启动头后加载分区b中的程序;
步骤5:当需要升级时,即对fpga内执行的功能进行更新,fpga的配置文件发生变化需重新写入到flash时,pc机通过网口将配置文件写入到分区c中,配置文件即升级程序,升级程序除了包含电路需实现的相应功能外,还支持通过网口对配置flash的读写操作;
步骤6:当对分区c的数据写入完成后,进行数据校验,校验通过后,更改分区a的程序执行跳转地址,设置为update_addr;
步骤7:下电重新启动后,程序自动加载分区c配置文件的内容,同样支持远程升级;
若升级的过程中失败,因未对分区a、b的内容进行修改,下电重启仍可执行分区b中的程序,进行下次的重新升级。
本发明的有益效果在于解决了fpga这种需要使用jtag作为烧写工具时,因jtag要求的烧写距离短、需要特定的软件支持、需要特定的烧写线缆等问题,以及在安装到机箱或机柜内后,因需要使用jtag下载而导致的需要拆箱的问题。本发明的升级方式更灵活,且不受限于jtag的长度。
附图说明
图1为本发明的硬件连接图,
图2为本发明的flash空间划分示意图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
本发明仅需默认一个分区用于存放启动逻辑,后续升级文件加载到分区b中,并可通过网口显示升级进度,保证可靠性且简单。
步骤1:fpga与配置flash通过flash的可读写的接口连接,进行交互数据,接口为flash的jtag或者地址数据接口,pc机与fpga通过网口进行数据交互,实现配置文件的传输;
步骤2:针对所选flash或者fpga生成默认启动程序,支持通过网口对配置flash的读写访问功能,并对flash的地址空间进行分区,如图2,分为启动头分区a,启动程序分区b和升级程序分区c,其中分区a的大小等于所选flash或者fpga跳转指令及启动指令的大小,分区b和分区c的大小应大于fpga的配置文件大小,其中分区b中存储默认启动程序,分区c中存储升级后的程序;
步骤3:上电后,将启动头和默认启动程序分别写入到分区a和分区b,在分区a内的程序执行跳转地址设置为start_addr,执行默认启动程序支持通过网口对配置flash进行读写操作;
步骤4:根据步骤2、3的设置,下电重启后,fpga默认从flash0地址执行完分区a的启动头后加载分区b中的程序;
步骤5:当需要升级时,即对fpga内执行的功能进行更新,fpga的配置文件发生变化需重新写入到flash时,pc机通过网口将配置文件写入到分区c中,即图2中的升级程序,升级程序除了包含电路需实现的相应功能外,还支持通过网口对配置flash的读写操作;
步骤6:当对分区c的数据写入完成后,进行数据校验,校验通过后,更改分区a的程序执行跳转地址,设置为update_addr;
步骤7:下电重新启动后,程序自动加载分区c配置文件的内容,同样支持远程升级;
若升级的过程中失败,因未对分区a、b的内容进行修改,下电重启仍可执行分区b中的程序,进行下次的重新升级,提高可靠性。
下面对本发明做进一步详细说明。
参照图1,硬件设计与连接,fpga与配置flash的交互通过flash的可读写的接口进行,可以是flash的jtag或者地址数据接口,pc机与fpga通过网口进行数据交互,实现配置文件的传输。
上电后,将启动头和默认启动程序分别写入到分区a和分区b,在分区a内的程序执行跳转地址设置到图2的start_addr,默认启动程序支持通过网口对配置flash进行读写操作。
根据上一步的设置,下电重启后,fpga默认加载分区b中的程序。
升级时,pc机通过网口将配置文件写入到分区c中,即图2中的升级程序,升级程序除了包含电路需实现的相应功能外,还支持通过网口对配置flash的读写操作。
当对分区c的数据写入完成后,进行校验,更改分区a的程序执行跳转地址,设置为update_addr。
下电重新启动后,程序自动加载分区c配置文件的内容,同样支持远程升级。
若升级的过程中失败,因未对分区a、b的内容进行修改,下电重启仍可执行分区b中的程序,进行下次的重新升级,提高可靠性。