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

一种基于XILINXFPGA的软件在线升级和重构方法与流程

2022-09-01 09:58:30 来源:中国专利 TAG:

一种基于xilinx fpga的软件在线升级和重构方法
技术领域
1.本发明属于fpga设计控制领域,具体涉及一种基于xilinx fpga的软件在线升级和重构方法。


背景技术:

2.在fpga产品服务期间,若在运行过程中出现问题或需要新增额外功能时,需要对fpga系统进行存储设备数据升级以及fpga配置数据重构。目前fpga产品软件在线升级和重构的方法多采取外部cpu或控制设备来更新 fpga的配置文件,然后断电重启fpga以加载更新后的配置文件,最终完成软件在线升级和重构。这种方法不仅需要一定的外部控制设备,而且数据交互和断电重构都需要增加额外的硬件和软件资源。
3.目前对fpga的软件在线升级和重构的解决方案有如下两种:第一种方法是基于fpga dsp架构,采用相互控制、相互引导以及分时加载的控制策略,在载荷管理设备的指令控制下,实现了fpga和dsp全功能软件多版本切换以及在轨更新等动态重构功能。此方法需要fpga以外的dsp器件,若仅考虑fpga软件升级和重构功能,增加了系统硬件和软件设计资源。第二种方案则不需要额外增加器件,在不改变硬件状态的前提下,实现产品的软件功能升级。该方案利用fpga自身资源实现软件升级,但需要设计额外的 jtag接口,jtag接口仅用作程序升级功能,浪费系统资源且难以实现远端操作。
4.考虑到外部设备对fpga进行程序升级时,往往只对fpga的数据存储设备进行读写操作,浪费了此过程中fpga自身的资源。所以,利用fpga 自身的逻辑资源,仅通过外部指令,在无需外部器件且无需断电的情况下,控制fpga自动进行软件在线升级和重构,对精简系统架构,减少硬件和软件成本,提高系统可维护性具有重要意义。


技术实现要素:

5.本发明的目的是提供一种基于xilinx fpga的软件在线升级和重构方法,本方法能在无需额外硬件设备和无需断电重启情况下,实现fpga软件在线升级和配置数据重构,从而减少系统的软件和硬件成本,提高嵌入式系统的可维护性。
6.为实现上述目的,本发明提供一种基于xilinx fpga的软件在线升级和重构方法,该方法基于fpga和数据存储设备通过qspi接口完成,所述数据存储设备包括至少两个地址区域,包括如下步骤:步骤s1、将正常功能的代码数据存储至第一地址区域,软件升级辅助系统的代码数据存储至第二地址区域;步骤s2、fpga加载第二地址区域存储的软件升级辅助系统的代码数据,使fpga运行软件升级辅助系统;步骤s3、将需要在线升级的正常功能的代码数据经综合布线工具处理,生成若干带有第一crc校验码的数据包;步骤s4、软件升级辅助系统根据指令,删除第一地址区域存储的正常功能的代码数据,并将步骤s3中生成的所有带有第一crc校验码的数据包依次写入数据存储设备的第一地址区域,形成第一配置数据;步骤s5、fpga 读取第一地址区域中更新后的第一配置数据,完成fpga的在线升级和数据重构。
7.优选地,can数据收发模块,其输入端连接有外部设备,用于传输缓存数据或操作指令;数据解析模块,其输入端通过can总线与can数据收发模块连接,用于解析接收到的缓存数据或操作指令;qspi控制模块,其输入端与数据解析模块连接,根据数据解析模块解析的操作指令,生成对应的操作码、操作地址、指令码和操作类型;qspi驱动模块,其输入端与qspi控制模块连接,识别qspi控制模块生成的操作码、操作地址、指令码和操作类型生成qspi驱动时序;所述qspi驱动时序包括时钟信号sclk;icap源语模块,其输入端与数据解析模块连接,根据数据解析模块解析的操作指令,进行地址跳转和软件重构操作;startupe2源语模块,其与qspi驱动模块的输出端连接,将qspi驱动时序中的时钟信号sclk传输到fpga的cclk 接口。
8.优选地,当fpga进行软件在线升级时,执行所述步骤s2:所述外部设备通过can总线给fpga的can数据收发模块发送软件升级和重构指令,所述fpga调用icap源语模块,加载第二地址区域中的软件升级辅助系统的代码数据,使fpga运行软件升级辅助系统。
9.优选地,步骤s3所述的生成若干带有第一crc校验码的数据包,包括如下步骤:步骤s31、通过综合布线工具,对需要在线升级的正常功能的代码数据进行综合、布线形成升级后的第二代码数据,并将第二代码数据生成 bit流文件;步骤s32、将步骤s31中生成的bit流文件转换为hex文件;步骤s33、根据数据存储设备的特性,将步骤s32得到的hex文件里的数据打包为若干数据包,每个数据包均带有一个第一crc校验码。
10.优选地,步骤s4所述的将步骤s3中生成的所有带有第一crc校验码的数据包写入数据存储设备的第一地址区域,所述第一地址区域由n个扇区组成,每个数据包写入对应的扇区,包括如下步骤:
11.步骤s41、qspi控制模块生成第一地址区域的擦除操作指令,操作qspi 驱动模块生成擦除驱动时序,驱动数据存储设备擦除第一地址区域中的n个扇区的代码数据;
12.步骤s42、将步骤s33生成的后续需要对应写入第n扇区的带有第一 crc校验码的数据包通过can数据收发模块发送至数据解析模块,所述数据解析模块解析带有第一crc校验码的数据包生成解析信息,并将解析信息传送至qspi控制模块(3);其中,n=1,2,

,n,n为自然数;
13.步骤s43、qspi控制模块接收到解析信息和第n扇区的数据包后,生成按页编程操作指令并控制qspi驱动模块生成对应的按页编程驱动时序, startupe2源语模块将该按页编程驱动时序中包含的时钟信号sclk传输到 fpga的硬件cclk接口,通过qspi接口对数据存储设备的第一地址区域进行按页编程操作;
14.步骤s44、第n扇区的数据编程完成后,软件在线升级系统读取该扇区对应的数据并生成第二crc校验码,若该第二crc校验码与can数据收发模块接收的第一crc校验码相同,则认为此扇区编程完成,通过can数据收发模块继续发送下一个扇区的数据;若该第二crc校验码与can数据收发模块接收的第一crc校验码不同,则重复步骤s42-步骤s43;
15.步骤s45、重复步骤s41-步骤s44,直到步骤s33生成的所有数据包在第一地址区域编程完毕,形成第一配置数据。
16.优选地,步骤s41所述的擦除第一地址区域的n个扇区的代码数据,包括如下步骤:步骤s411、fpga软件升级辅助系统的qspi驱动模块接收到第n扇区擦除指令后,执行“写使能”操作;步骤s412、“写使能”操作执行完成后,qspi驱动模块循环执行n个扇区的擦除操
作,直到第一地址区域的所有扇区的代码数据擦除完成;步骤s413、第一地址区域的代码数据擦除完成后,qspi驱动模块执行“写禁止”操作,进入空闲状态,等待下一步的操作指令。
17.优选地,步骤s43所述的按页编程操作具体包括如下步骤:步骤s431、 qspi控制模块收到按页编程指令后,执行“写使能操作”,并进入按页编程等待状态;步骤s432、处于按页编程等待状态的qspi控制模块收到按页编程的第n扇区的数据包后,将循环执行按页编程操作,直到编程完成该第n 扇区的所有数据;步骤s433、第n扇区的数据包按页编写完成后,qspi驱动模块执行“写禁止”操作,然后进入空闲状态,等待下一步的操作指令。。
18.优选地,步骤s41和步骤s43中的擦除时序和编程时序是通过qspi控制模块生成对应的指令码cmd、操作码code、操作类型type和操作地址addr,控制qspi驱动模块在qspi接口生成。
19.优选地,步骤s5中所述外部设备通过can总线给fpga的can数据收发模块发送软件升级和重构指令,fpga通过icap源语模块读取第一地址区域更新后的第一配置数据进行软件升级和重构,实现fpga的软件在线升级和重构。
20.优选地,所述fpga为xilinx 7系列fpga,且支持icap源语和 startupe2源语。
21.综上所述,与现有技术相比,本发明提供的一种基于xilinx fpga的软件在线升级和重构方法,具有如下有益效果:第一,通过fpga自身的资源实现软件在线升级和配置数据重载,并且无需系统断电重启等操作,提高了系统的可维护性。第二,利用fpga自身的资源来更新存储设备中的数据,可以节省外部控制器的软件和硬件资源。第三,无需断电重启等操作就可实现数据重构,减少了相关上电、下电电路的硬件资源和控制逻辑,精简了系统架构。
附图说明
22.图1为xilinx fpga软件在线升级系统的硬件qspi接口关系图;
23.图2为xilinx fpga软件升级辅助系统的软件整体架构和数据流图;
24.图3为xilinx fpga软件升级辅助系统的qspi控制模块状态转移图;
25.图4为xilinx fpga软件升级辅助系统的qspi驱动模块状态转移图。
具体实施方式
26.以下将结合本发明实施例中的附图1~附图4,对本发明实施例中的技术方案、构造特征、所达成目的及功效予以详细说明。
27.需要说明的是,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括明确列出的要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
28.本发明提供了一种基于xilinx fpga的软件在线升级和重构方法,该方法基于fpga和数据存储设备进行实施,如图1所示,本实施例中使用 n25qxx数据存储芯片作为数据存储设备,且fpga为支持icap源语 (internet content adaptation protocol)和
startupe2源语的xilinx 7(赛灵思7)系列的fpga(field programmable gate array,现场可编程逻辑门阵列),该fpga与n25qxx数据存储芯片通过qspi接口进行数据交互;所述n25qxx数据存储芯片包括至少两个地址区域,分别为第一地址区域和第二地址区域,基于xilinx fpga的软件在线升级和重构方法包括如下步骤:
29.步骤s1、将正常功能的代码数据存储至第一地址区域,软件升级辅助系统的代码数据存储至第二地址区域;
30.步骤s2、fpga加载第二地址区域存储的软件升级辅助系统的代码数据,使fpga运行软件升级辅助系统;
31.步骤s3、将需要在线升级的正常功能的代码数据经综合布线工具进行处理,生成若干带有第一crc校验码的数据包;
32.步骤s4、软件升级辅助系统根据指令,删除第一地址区域存储的正常功能的代码数据,并将步骤s3中生成的所有带有第一crc校验码的数据包依次写入n25qxx数据存储芯片的第一地址区域,形成第一配置数据;
33.步骤s5、fpga读取第一地址区域中更新后的第一配置数据,完成fpga 的软件在线升级和数据重构。
34.其中,在步骤s1中,正常上电的fpga将加载第一地址区域存储的正常功能的代码数据。
35.其中,如图2所示,所述软件升级辅助系统包括can数据收发模块1、数据解析模块2、qspi控制模块3、qspi驱动模块4、icap源语模块5、 startupe2源语模块6以及其它辅助的功能性模块。
36.进一步地,所述can数据收发模块1的输入端通过can总线与外部设备连接,输出端与所述数据解析模块2的输入端连接,使外部设备能够将缓存数据或操作指令通过该can数据收发模块1传输给数据解析模块2;所述数据解析模块2的输出端分别连接所述qspi控制模块3和icap源语模块5,用于解析接收到的缓存数据或操作指令;所述qspi控制模块3的输出端与 qspi驱动模块4的输入端连接,所述qspi控制模块3根据数据解析模块2 解析的操作指令,生成对应的操作码、操作地址、指令码和操作类型,控制 qspi驱动模块4生成qspi驱动时序;所述qspi驱动模块4的输出端分别 startupe2源语模块6与数据存储设备连接,其通过识别qspi控制模块3 生成的操作码、操作地址、指令码和操作类型生成qspi驱动时序;所述qspi 驱动时序包括时钟信号sclk、片选信号csn、数据接收信号miso、以及数据发送信号mosi;所述startupe2源语模块6将qspi驱动时序中的时钟信号sclk传输到fpga的cclk接口,其它驱动时序信号(如片选信号csn、数据接收信号miso、以及数据发送信号mosi)则分别约束至与数据存储设备相连的对应硬件接口。
37.其中,所述can数据收发模块1的输出端连接的外部设备包括设备综合控制器和模拟控制上位机。在本实施例中,使用模拟控制上位机作为外部设备,对所述软件升级辅助系统进行控制。进一步地,正常功能的代码数据在线升级完成后,fpga通过所述icap源语模块5进行地址跳转和软件重构。
38.当fpga需要进行软件在线升级时,执行所述步骤s2,具体为:模拟控制上位机通过can总线给fpga的can数据收发模块1发送软件升级和重构指令,所述fpga将调用icap源语模块5,重新加载第二地址区域的软件升级辅助系统的代码数据,使fpga运行软件升级辅助
系统。
39.其中,步骤s3所述的生成若干带有第一crc校验码的数据包,具体包括如下步骤:
40.步骤s31、通过综合布线工具,对需要在线升级的正常功能的代码数据进行综合、布线形成升级后的第二代码数据,并将第二代码数据生成bit流文件;
41.步骤s32、将步骤s31中生成的bit流文件转换为hex文件;
42.步骤s33、根据n25qxx数据存储芯片的特性,将步骤s32得到的hex 文件里的数据打包为若干数据包,每个数据包均带有一个第一crc校验码。
43.需要说明的是,所述第二代码数据即为正常功能的代码数据升级后的代码数据;同时,每个数据包的长度与n25qxx数据存储芯片的扇区长度一致,本实施例中所述hex文件中每256字节数据带一字节的第一crc校验码。
44.其中,步骤s4所述的将步骤s3中生成的所有带有第一crc校验码的数据包写入n25qxx数据存储芯片的第一地址区域,所述第一地址区域由n 个扇区组成,每个数据包写入对应的扇区,具体包括如下步骤:
45.步骤s41、qspi控制模块3生成第一地址区域的第n扇区擦除操作指令,操作qspi驱动模块4生成第n扇区擦除驱动时序,驱动n25qxx数据存储芯片进行第n扇区擦除操作,循环擦除操作直至第一地址区域中的所有扇区的代码数据擦除完成;其中n=1,2,

,n,n为自然数;
46.步骤s42、将步骤s33生成的后续需要对应写入第n扇区的带有第一 crc校验码的数据包通过can数据收发模块1发送至数据解析模块2,所述数据解析模块2解析带有第一crc校验码的数据包生成解析信息,并将解析信息传送至qspi控制模块3;其中每个所述数据包的大小为一个扇区大小加一字节的第一crc校验码;
47.步骤s43、qspi控制模块3接收到解析信息和第n扇区的数据包后,生成按页编程操作指令并控制qspi驱动模块4生成对应的按页编程驱动时序, startupe2源语模块6将该按页编程驱动时序中包含的时钟信号sclk传输到fpga的硬件cclk接口,通过qspi接口对n25qxx数据存储芯片的第一地址区域进行按页编程操作;
48.步骤s44、第n扇区的数据编程完成后,软件辅助升级系统读取该扇区对应的数据并生成第二crc校验码,若该第二crc校验码与can数据收发模块1接收的第一crc校验码相同,则认为此扇区编程完成,通过can 数据收发模块1继续发送下一个扇区的数据;若该第二crc校验码与can 数据收发模块1接收的第一crc校验码不同,则重复步骤s42-步骤s43;
49.步骤s45、重复步骤s41-步骤s44,直到步骤s33生成的所有数据包在第一地址区域编程完成,形成第一配置数据,即n25qxx数据存储芯片的第一地址区域内的正常功能的代码数据更新完成。
50.其中,如图3和图4所示,步骤s41所述的擦除第一地址区域的所有数据包括如下步骤:
51.步骤s411、fpga软件升级辅助系统的qspi驱动模块4接收到第n扇区擦除指令后,先执行“写使能”操作;
52.步骤s412、“写使能”操作执行完成后,qspi驱动模块4循环执行n个扇区的擦除操作,直到第一地址区域的所有扇区的数据擦除完成;
53.步骤s413、第一地址区域的数据擦除完成后,qspi驱动模块4执行“写禁止”操作,
然后进入空闲状态,等待下一步的操作指令。
54.进一步地,如图3和图4所示,步骤s43所述的按页编程操作具体包括如下步骤:
55.步骤s431、qspi控制模块3收到按页编程指令后,先执行“写使能操作”,并进入按页编程等待状态;
56.步骤s432、处于按页编程等待状态的qspi控制模块3收到按页编程的第n扇区的数据包后,将循环执行按页编程操作,直到编程完成该第n扇区的所有数据;
57.步骤s433、第n扇区的数据包按页编写完成后,qspi控制模块3执行“写禁止”操作,然后进入空闲状态,等待下一步的操作指令。
58.具体地,如图2所示,步骤s41和步骤s43中的擦除时序和按页编程时序是通过qspi控制模块3生成对应的指令码(cmd)、操作码(code)、操作类型(type)和操作地址(addr),控制qspi驱动模块4在qspi接口生成。
59.具体地,所述步骤s5中模拟控制上位机通过can总线给fpga的can 数据收发模块1发送软件升级和重构指令,fpga通过icap源语模块5读取第一地址区域更新后的第一配置数据进行软件升级和重构,实现fpga的软件在线升级和重构功能。
60.综上所述,与现有技术相比,本发明所提供的基于xilinx fpga的软件在线升级和重构方法具有系统可维护性高、节省成本、系统无需断电重启即可完成软件升级等优势。
61.尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
再多了解一些

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

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

相关文献