一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用于弹载FPGA在线升级的启动配置方法与流程

2022-05-08 08:42:20 来源:中国专利 TAG:

一种用于弹载fpga在线升级的启动配置方法
技术领域
1.本发明属于弹载产品fpga启动配置技术领域,尤其是涉及一种用于弹载fpga在线升级的启动配置方法。


背景技术:

2.随着国防事业的快速发展,弹载产品靶场测试项目逐渐增多,经常会现场升级产品的fpga程序。而传统对fpga程序的升级,需要使用下载器通过jtag接口与fpga进行连接,其主要有以下缺点:jtag接口需要tms、tck、tdi、tdo、gnd、vcc接点,在弹载产品需求小型化的今天,将jtag接口外部引出会增加产品成本和产品体积;需要使用专用下载器、专业软件,由专业人员进行升级,使用条件苛刻,研发成本和维护工作增加,不利于推广使用;jtag接口经常设计于产品内部,需要将产品开盖处理,这样拆装产品会使可靠性得不到保障,增加试验失败的风险。
3.利用fpga的multiboot和fallback特性可实现fpga的远程升级,但是这种方法相对复杂,不能更新g镜像,配置启动时间也是标准配置时间的两倍以上,相对于导弹参数采集时间过长,会造成关键数据的丢失。


技术实现要素:

4.有鉴于此,本发明旨在提出一种用于弹载fpga在线升级的启动配置方法,以解决弹载产品fpga程序升级采用jtag接口接点过多,使用条件苛刻,容易导致故障的问题,同时解决使用multiboot和fallback特性方法复杂,配置时间长的问题。
5.为达到上述目的,本发明的技术方案是这样实现的:一种用于弹载fpga在线升级的启动配置方法,包括以下步骤:s1、上位机下载模块调取需要升级的比特流文件;s2、基于步骤s1中的比特流文件启动promgen工具生成比特流升级文件;s3、基于步骤s2中的比特流升级文件执行perl脚本生成快速启动镜像,生成需要升级的镜像文件;s4、将需要升级的镜像文件通过传输通道发送至弹载产品的fpga模块;s5、fpga模块将需要升级的镜像文件烧写至弹载产品的flash存储器;s6、基于flash编程算法完成需要升级的镜像文件快速启动配置,得到升级镜像文件、g镜像比特流文件;s7、基于crc32算法校验升级镜像文件的完整性;s8、重启弹载产品,完成fpga模块的配置。
6.进一步的,在步骤s5中的所述fpga模块与上位机下载模块通过接口线缆连接,所述fpga模块和flash存储器之间互相通讯连接。
7.进一步的,在步骤s4中的所述传输通道为串口、网口、usb、u盘、sd卡其中的一种。
8.进一步的,在步骤s6中的需要升级的镜像文件快速启动配置包括以下步骤:a1、将flash存储器分成三个区域,分别为快速启动帧头区域、g比特流镜像存储区域、升级比特流镜像存储区域,快速启动帧头区域包括一个关键开关字、一个启动跳转顺序表;a2、从flash存储器地址a0读取,获得快速启动帧头区域的关键开关字,根据关键开关字的值,执行步骤a3或者步骤a4;a3、如果关键开关字是“on”,则表示执行升级比特流镜像的配置,根据快速启动帧头区域的启动跳转顺序表,跳转到升级比特流镜像存储区域地址a1,然后加载比特流文件,得到升级镜像文件;a4、 如果关键开关字是“off”,则表示执行g镜像文件的配置,忽略快速启动帧头区域的启动跳转顺序表,继续读取flash存储器的地址数据,从g比特流镜像存储区域加载比特流文件,得到g镜像比特流文件。
9.进一步的,在步骤a3中的所述升级镜像文件的生成包括以下步骤:b1、生成fpga模块的比特流文件,并将比特流文分配在flash存储器中的升级区域;b2、用空字符填充到升级区域的剩余部分;b3、根据步骤b1、步骤b2计算crc32的补码后,并将crc32补码放入升级区域的后32位,生成升级镜像文件。
10.进一步的,在步骤s6中的所述flash编程算法包括以下步骤:c1、擦除快速启动帧头区域包含关键开关字的扇区;c2、擦除快速启动帧头区域需要升级的镜像文件的区域;c3、烧写需要升级的镜像文件到flash存储器需要升级的区域;c4、通过crc32算法确认需要升级的镜像文件已被正确烧写;c5、确认crc32算法的校验码是否正确,是,则烧写关键开关字使其处于“on”状态,否,则烧写不成功,退出。
11.进一步的,在步骤s7中的基于crc32算法校验升级镜像文件的完整性包括以下步骤:d1、fpga模块内部启动烧写逻辑读取升级区域的数据,升级区域的数据包括crc32补码;d2、对升级区域的数据以及其内的crc32补码进行crc32计算,得到crc32计算值;d3、判断crc32计算值与一个fpga模块内部储存的已知常数是否匹配;是,则确认升级镜像文件具备完整性;否,则确认升级镜像文件不具备完整性。
12.相对于现有技术,本发明所述的一种用于弹载fpga在线升级的启动配置方法具有以下优势:(1)本发明所述的一种用于弹载fpga在线升级的启动配置方法,可在不增加外部接口情况下,利用弹载产品本身接口完成对fpga程序的在线升级,从而大大减小产品体积和成本;不需要专用的下载器、专业软件、专业人员来完成,使用维护简单易操作,降低试验发生故障的风险;启动时间短,弹载数据采集不容易丢失。
附图说明
13.构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1为本发明实施例所述的启动配置方法内模块连接示意图;图2为本发明实施例所述的启动配置方法实施原理框图;图3为本发明实施例所述的fpga配置文件的生成示意图;图4为本发明实施例所述的需要升级的镜像文件快速启动配置流程图;图5为本发明实施例所述的flash编程算法的fpga流程图;图6为本发明实施例所述的基于uart接口实现快速启动在线升级的方法流程示意图;图7为本发明实施例所述的spiflashpro子模块状态流程示意图。
14.附图标记说明:1、上位机下载模块;2、弹载产品;21、fpga模块;22、flash存储器。
具体实施方式
15.需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
16.在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
17.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
18.下面将参考附图并结合实施例来详细说明本发明。
19.名词解释:fpga:fpga(field programmable gate array)是在pal (可编程阵列逻辑)、gal(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
20.flash存储器:flash存储器属,内存器件的一种,是一种非易失性( non-volatile )内存。
21.promgen工具:promgen是一个方便的prometheus 配置文件生成工具,可以帮助我
们生成以及管理prometheus的配置文件,同时可以配置案例alert 规则以及通知选项。基于python开发。
22.crc32:crc(cyclic redundancy check)校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,crc是最著名的一种。crc的全称是循环冗余校验。
23.perl:perl一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从最初是为文本处理而开发的,现在用于各种任务,包括系统管理,web开发,网络编程,gui开发等。
24.如图1至图7所示,一种用于弹载fpga在线升级的启动配置方法,包括以下步骤:s1、上位机下载模块1调取需要升级的比特流文件;s2、基于比特流文件启动promgen工具生成比特流升级文件,并进入步骤s3;s3、基于比特流升级文件执行perl脚本生成快速启动镜像;s4、快速启动镜像完成后生成需要升级的镜像文件;s5、将需要升级的镜像文件通过传输通道发送至弹载产品2内的fpga模块21;s6、fpga模块21将需要升级的镜像文件烧写至flash存储器22;s7、基于fpga模块21的flash编程算法完成需要升级的镜像文件快速启动配置,得到升级镜像文件、g镜像比特流文件;s8、基于crc32算法校验升级镜像文件的完整性;s9、重启弹载产品2,完成fpga模块21的配置。
25.本启动配置方法具有以下优势:可在不增加外部接口情况下,利用弹载产品本身接口完成对fpga程序的在线升级,从而大大减小产品体积和成本,不需要专用的下载器、专业软件、专业人员来完成,使用维护简单易操作,降低试验发生故障的风险。
26.启动时间短,弹载数据采集不容易丢失。
27.本方法将编程错误和中断恢复的重任放在对编程算法调整上,基于特殊配置头完成整个解决方案。该方法功能强大,与许多配置设置变体兼容,可靠性高。
28.在本实施例里,本专利主要由上位机下载模块1、弹载产品2两部分组成。上位机下载模块1与弹载产品2之间通过接口线缆连接。如图1所示。
29.新的fpga配置文件的生成主要由研发人员现场或者远程操作,具体操作流程如图3所示。
30.其中,准备需要升级的比特流文件、启动promgen工具、生成比特流升级文件(.mcs格式)为正常的fpga模块21烧写操作步骤,perl脚本生成快速启动镜像,执行完成后可生成初始mcs存储镜像文件、升级mcs镜像文件,可以根据系统初始状态的需要或者是否需要升级选择其中的一个镜像文件。
31.初始mcs存储镜像文件主要是完整的初始镜像,主要包括以下三部分:快速启动帧头;g比特流文件;升级比特流文件,给定的比特流文件的复制件;
初始mcs存储镜像文件主要用于对flash存储器22的初始化烧写。
32.升级mcs镜像文件主要包含给定的比特流文件,这个比特流文件的完整性主要通过crc32校验码完成。
33.所述fpga模块21与上位机下载模块1通过接口线缆连接,所述fpga模块21和flash存储器22之间互相通讯连接。
34.在步骤s5中的所述传输通道为串口、网口、usb、u盘、sd卡其中的一种。在本实施例里,传输通道的种类不局限于上述通道。
35.在步骤s8中的需要升级的镜像文件快速启动配置包括以下步骤:a1、将flash存储器分成三个区域,分别为快速启动帧头区域、g比特流镜像存储区域、升级比特流镜像存储区域,快速启动帧头区域包括一个关键开关字、一个启动跳转顺序表;a2、从flash存储器22地址a0读取,获得快速启动帧头区域的关键开关字,根据关键开关字的值,执行步骤a3或者步骤a4;a3、如果关键开关字是“on”,则表示执行升级比特流镜像的配置,根据快速启动帧头区域的启动跳转顺序表,跳转到升级比特流镜像存储区域地址a1,然后加载比特流文件,得到升级镜像文件;a4、 如果关键开关字是“off”,则表示执行g镜像文件的配置,忽略快速启动帧头区域的启动跳转顺序表,继续读取flash存储器22的地址数据,从g比特流镜像存储区域加载比特流文件,得到g镜像比特流文件。
36.在步骤a3中的所述升级镜像文件的生成包括以下步骤:b1、生成fpga模块21的比特流文件,并将比特流文分配在flash存储器22中的升级区域;b2、用空字符填充到升级区域的剩余部分;b3、根据步骤b1、步骤b2计算crc32的补码后,并将crc32补码放入升级区域的后32位,生成升级镜像文件。
37.在本实施例里,如图4说明了mcs文件(需要升级的镜像文件)升级快速启动的配置方法。快速启动的配置方法是将flash存储器22分成三个区域,分别为快速启动帧头区域、g比特流镜像存储区域、升级比特流镜像存储区域。其中,快速启动帧头区域包括一个重要的开关字、一个启动跳转顺序表。
38.关键开关字是快速启动配置方法的关键,关键开关字始终处于“on”或者“off”状态,当处于“on”状态时,fpga模块21加载升级镜像文件,当处于“off”状态时,fpga模块21加载g镜像文件。关键开关字是一组特定的值,仅当关键开关字包含一组准确的、预定的值才会被确定处于“on”状态,关键开关字的存在与否决定了fpga模块21配置逻辑是否执行启动跳转顺序。
39.关键开关字的值配置模式bpiflash启动模式spiflash启动模式关键开关字的值0x000000bb0xaa995566快读启动配置方法步骤如下:步骤1、从flash存储器地址a0读取,获得快速启动帧头的关键开关字。根据关键开
关字的值,执行步骤2或者步骤3;步骤2、如果关键开关字是“开”,则表示执行升级比特流镜像的配置。根据快速启动帧头的启动跳转顺序,跳转到升级比特流镜像存储区域地址a1,然后加载比特流文件;步骤3、如果关键开关字是“off”,则表示执行g镜像文件的配置。忽略快速启动帧头的启动跳转顺序,继续读取flash存储器21的地址数据,从g比特流镜像存储区域加载比特流文件。
40.快速启动flash存储器21烧写方法的可靠性主要由升级比特流烧写过程决定的。flash存储器21烧写过程的可靠性主要需要以下条件措施:在尝试编辑更新比特流文件之前关键开关字必须处于“off”状态,使关键开关字处于“on”以外的任何值都可以。
41.当更新比特流本验证没由问题后,关键开关字才可以打开,处于“on”状态。
42.为了保证所有情况下的完整性,g镜像文件和快速启动帧头的第二部分在烧写情况下是不会被编辑的。
43.这样,当只有关键开关字处于“on”状态时才会执行升级镜像文件区域的比特流文件。以上条件1和条件2保证如果升级镜像文件区域没有包含正确的比特流文件可以不执行启动跳转顺序,条件3可以保证当关键开关字处于“off”时,可以确保安全加载g镜像比特流文件。
44.在步骤s7中的所述flash编程算法包括以下步骤:c1、擦除快速启动帧头区域包含关键开关字的扇区;c2、擦除快速启动帧头区域需要升级的镜像文件的区域;c3、烧写需要升级的镜像文件到flash存储器22需要升级的区域;c4、通过crc32算法确认需要升级的镜像文件已被正确烧写;c5、确认crc32算法的校验码是否正确,是,则烧写关键开关字使其处于“on”状态,否,则烧写不成功,退出。
45.在步骤s8中的基于crc32算法校验升级镜像文件的完整性包括以下步骤:d1、fpga模块21内部启动烧写逻辑读取升级区域的数据,升级区域的数据包括crc32补码;d2、对升级区域的数据以及其内的crc32补码进行crc32计算,得到crc32计算值;d3、判断crc32计算值与一个fpga模块21内部储存的已知常数是否匹配;是,则确认升级镜像文件具备完整性;否,则确认升级镜像文件不具备完整性。
46.在本实施例里,快速启动flash编程的算法主要由fpga逻辑完成,flash编程算法流程如图5所示。
47.flash存储器22的烧写需要两步操作,首先是擦除操作,复位存储器数据位为1状态,然后执行烧写操作使数据位由1状态变为0状态。由于flash存储器22的改动需要擦除操作,并且擦除操作影响整个flash存储器22的分割,flash存储器22的分割架构决定了快读启动各个部分在flash存储器22中的位置。具体位置如下:首先快速启动帧头;快速启动帧头的第一部分,也就是关键开关字,位于自身可擦除的区域,比如第一块扇区;
快速启动帧头的第二部分,位于第一部分后面,但是和第一部分不是同一分割区,比如位于第二扇区;g镜像文件在存储器中位于快读启动帧头的后面;升级镜像文件位于自身可擦除的区域,但是和g镜像不共享可擦除的分割区,以免在升级操作时破坏g镜像文件的完整性。
48.快速启动配置方案的健壮可靠性取决于快速启动烧写可靠检测升级镜像文件的真确与否。为了确认在flash存储器22中升级镜像文件的正确定,采用crc32校验的方法确认升级镜像文件的完整性。具体方法如下:采用fpga专用工具(现有技术)生成fpga的比特流文件;用空字符0xffffffff填充到升级区域的剩余部分;根据步骤1和步骤2计算crc32的补码。
49.升级的镜像文件被分配在flash存储器22中的固定区域,根据flash存储器22的分割架构,为了擦除和烧写的方便,更新区域的边界开始端和结束端为分配区域的可擦除端,具体以flash存储器芯片手册为准。当升级镜像文件生成mcs格式文件,除了最后32位,一个crc32校验计算整个升级镜像文件,计算的crc32补码放在升级区域的最后32位,这样整个升级文件的完整性被crc32校验码保护。为了确认烧写到flash存储器22中的镜像文件,fpga内部快速启动烧写逻辑会读取整个升级区域的数据,包括crc32的补码,并且进行crc32计算。当crc32计算值与一个已知常数匹配,则确认升级镜像文件的完整性是好的。
50.在本实施例里,所述上位机下载模块1、fpga模块21、flash存储器22均为现有技术。
51.实施例1在实际应用中,uart是使用最多,最为便捷的一种接口协议。在弹载产品在线快速升级应用,可大大减少接口接点数量,使用维护方便。图6为基于uart实现快速启动在线升级的方法。
52.上位机发送软件模块(即上位机下载模块1)主要将升级镜像文件通过串口发送到fpga模块21,每帧数据为515个字节,前三个字节为帧头,后512个字节为升级镜像有效数据。软件启动加载以后,点击开始烧写按钮,首先发送开始指令0xeb9000,直到接收到fpga模块21发送的0xaabb,则开始发送升级镜像文件。每帧数据发送完成后,等待接收0xaabb指令才可发送下一帧数据,每帧数据帧头为0xeb9001最后一帧数据帧头为0xeb9002。
53.在本实施例里,fpga模块21内主要包括uart子模块、fifo子模块、spiflashin接口子模块、spiflashpro子模块,uart子模块、fifo子模块、spiflashin接口子模块、spiflashpro子模块均为现有技术,uart子模块由fpga逻辑实现串口收发协议,接收上位机软件发送的数据,输出到下一级fifo缓冲区。一帧数据接收完成后,发送0xaabb指令,表示数据接收完成,已准备好接收下一帧数据。
54.fifo子模块主要实现升级镜像文件的数据缓冲和位宽转换功能。
55.spiflashin接口子模块主要根据spi接口时序实现fpga模块21与spi flash存储器22数据交互的功能。
56.spiflashpro子模块主要是烧写的状态转换,实现快速启动烧写算法,使用spiflashin子模块向flash存储器22发送指令、数据,接收数据等。图7为spiflashpro子模
块状态流程图。
57.crc32校验多项式为:g(x) = x
32
x
26
x
23
x
22
x
16
x
12
x
11
x
10
x8 x7 x5 x4 x2 x 1常数值选用0xc704dd7b。crc32的verilog实现代码可用crcgen.pl工具生成。
58.基于以上原理说明和操作方法,实现了快速启动升级镜像文件的烧写,重新给fpga上电,即可根据关键开关字的状态加载启动g镜像文件或者升级镜像文件。
59.本方法可根据实际情况应用,节省烧写接口芯线点数,普通人员即可完成操作,维护使用方便,降低因拆卸带来的故障风险,可靠性高。
60.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献