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

一种基于FPGA的固件程序可靠在线升级系统和方法与流程

2022-10-10 03:51:09 来源:中国专利 TAG:

一种基于fpga的固件程序可靠在线升级系统和方法
技术领域
1.本发明属于固件升级领域,具体涉及一种基于fpga的固件程序可靠在线升级系统和方法。


背景技术:

2.基于fpga的固件程序升级方法分为离线升级和在线升级。离线升级一般采用fpga烧写器进行程序更新;在线升级一般通过软硬件配合实现程序更新。
3.传统的固件程序离线升级方法采用fpga烧写器进行程序更新,此方法简单,但是对非技术人员操作相对复杂,且无法实现远端的程序更新;传统的固件程序在线升级一般通过软硬件配合实现程序更新,此方法更加灵活,且可实现远端程序更新,但是存在更新失败的风险,一旦更新失败fpga将无法启动。


技术实现要素:

4.(一)要解决的技术问题本发明要解决的技术问题是如何提供一种基于fpga的固件程序可靠在线升级系统和方法,以解决传统的固件程序离线升级方法操作相对复杂,且无法实现远端的程序更新,传统的固件程序在线升级存在更新失败的风险,一旦更新失败fpga将无法启动的问题。
5.(二)技术方案为了解决上述技术问题,本发明提出一种基于fpga的固件程序可靠在线升级系统,该系统包括软件架构和逻辑架构,软件架构包括固件更新应用程序和网口分发汇聚模块,逻辑架构包括网口mac模块、数据接收模块、格式解析模块、数据发送模块、格式封装模块、flash控制模块和配置接口ip模块;固件更新应用程序用于接收更新数据、分割数据包以及控制更新流程;固件更新应用程序连接到网口分发汇聚模块;网口分发汇聚模块包括分发和汇聚功能,汇聚功能用于接收上层应用程序的数据包,并通过下层硬件发往逻辑架构;分发功能用于从下层逻辑架构的硬件接收数据包,对数据包进行解析,根据解析结果的类别,对数据包进行分发;网口mac模块用于链路层网络数据包的接收与发送,数据包下行方向,即数据包从软件架构到逻辑架构,逻辑架构需要实现链路层数据包的帧同步、帧间隔检验和fcs校验;数据包上行方向,即数据包从逻辑架构到软件架构,逻辑架构需要实现链路层网络数据包的fcs计算、数据包帧头、帧尾的添加以及帧间隙的控制;数据接收模块连接网口mac模块,用于下行数据包的暂存,以及从网口时钟域到系统时钟域的跨时钟域数据传输;数据发送模块连接网口mac模块,用于上行数据包的暂存,以及从系统时钟域到网口时钟域的跨时钟域数据传输;格式解析模块连接数据接收模块,用于下行数据包的格式解析,关键信息提取,配
置数据的缓存,并根据关键信息的类型向flash控制模块发起固件擦除、固件写入和固件读取等请求;格式封装模块连接数据发送模块,用于上行数据包的格式封装;flash控制模块连接格式解析模块和格式封装模块,用于通过配置接口ip控制flash芯片的擦除、写入和读取;当flash控制模块接收到格式解析模块的固件擦除请求时,会发起flash的擦除操作,待flash擦除完成后,产生擦除完成信号,并发往格式封装模块,最终上送到软件架构的固件更新应用程序;当flash控制模块接收到固件写入请求时,会发起flash的写操作,待flash写入数据完成后,会产生写入完成信号,并发往格式封装模块,最终上送到软件架构的固件更新应用程序;当flash控制模块接收到固件读取请求时,会发起flash的读操作,待flash读取完成后,会产生读取完成信号,和读取的数据一起发往格式封装模块,并最终上送到软件架构的固件更新应用程序;配置接口ip模块连接flash控制模块和fpga加载flash,用于内部逻辑与fpga加载flash的数据通讯。
6.进一步地,软件架构还包括其他应用程序,其他应用程序根据功能定义进行设计,通过网口分发汇聚模块和逻辑架构进行通讯,包括寄存器配置、表项配置和审计报文。
7.进一步地,固件更新应用程序的处理过程包括:s11、固件更新应用程序首先接收到完整的更新数据,校验数据完整性;s12、完整性验证通过后,将更新数据分割成若干1kb字节的数据包,后续会按照顺序发往逻辑架构;s13、固件更新应用程序先发送固件擦除命令,待擦除完成后开始向逻辑架构发送数据;s14、固件更新应用程序每发完一个数据包后,会等待此数据包写入flash后的应答消息;s15、固件更新应用程序接收到数据包写入完成的应答消息后,开始发送下一包数据;s16、当固件更新应用程序发完一个数据包后,在规定时间内未接收到应答包,或者接收到的应答包携带更新异常的信息时,则固件更新应用程序认为数据包传输过程已出现异常,立即停止当前更新。
8.进一步地,格式封装模块封装的格式括链路层头、类型、状态和载荷;其中,状态为0表示正常返回,否则为异常返回;仅当固件读取命令时,载荷填充有效数据,否则填充0。
9.进一步地,如果格式解析模块解析到数据格式错误或者异常时,直接将此数据包丢弃,产生格式异常信号,并发往格式封装模块;最终上送到软件架构的固件更新应用程序。
10.本发明还提供一种基于fpga的固件程序可靠在线升级方法,该方法包括如下步骤:第一步:软件架构固件更新应用程序接收更新数据,直至数据接收完成;第二步:软件架构固件更新应用程序对完整的固件更新数据包进行完整性校验,对于校验通过的数据包进行下一步操作,否则返回错误;第三步:软件架构固件更新应用程序对完整的固件将数据包分割成若干1kb字节
的数据包,并进行报文封装;第四步:软件架构固件更新应用程序向逻辑架构发送固件擦除命令,待擦除完成后进行下一步操作;第五步:软件架构固件更新应用程序向逻辑架构发完一个数据包后,会等待此数据包写入flash后的应答消息;第六步:逻辑架构的网口mac模块,对下行方向数据包,进行帧同步、帧间隔检验,和fcs校验;校验通过流程进行到下一步;第七步:逻辑架构的格式解析模块,完成关键信息提取,并根据关键信息的类型向flash控制模块发起擦除、写入、读取请求;第八步:逻辑架构的flash控制模块,根据擦除、写入和读取请求类型,进行flash相应操作,操作完成后通过格式封装模块返回正常完成应答包;第九步:逻辑架构的格式封装模块,根据格式解析模块和flash控制模块的请求类型,完成应答包的封装,并通过数据发送模块输出到网口mac模块;第十步:逻辑架构的网口mac模块对上行方向数据包,进行处理后通过网口发送到软件架构;第十一步:软件架构的网口分发汇聚模块,对应答数据包进行解析,并根据应答类别分发到相应的应用程序;第十二步:软件架构的固件更新应用程序,如果超时未收到应答报文,或者接收到了携带异常信息的应答报文,则跳转到第四步重新开始固件升级;如果接收到正常应答报文,且数据包未完全下发完成,则跳转到第五步,否则跳转到下一步;第十三步:固件程序在线升级完成。
11.进一步地,软件架构还包括其他应用程序,其他应用程序根据功能定义进行设计,通过网口分发汇聚模块和逻辑架构进行通讯,包括寄存器配置、表项配置和审计报文。
12.进一步地,所述第七步中,如果格式解析模块解析到数据格式错误或者异常时,直接将此数据包丢弃,产生格式异常信号,并发往格式封装模块;最终上送到软件架构的固件更新应用程序。
13.进一步地,所述第九步中应答包的封装的格式包括:链路层头、类型、状态和载荷;其中,状态为0表示正常返回,否则为异常返回;仅当固件读取命令时,载荷填充有效数据,否则填充0。
14.进一步地,所述第十步的数据包处理包括fcs计算、对数据包添加帧头、帧尾,以及帧间隙的控制操作。
15.(三)有益效果本发明提出一种基于fpga的固件程序可靠在线升级系统和方法,本发明可保证固件升级数据可以完整、正确的升级到固件存储器flash中;软件架构首先需要对接收的升级数据包进行完整性校验;逻辑架构的mac接口逻辑需要对接收到的数据包进行完整性校验;逻辑架构的格式解析模块对接收到的数据包进行格式正确性验证;软件架构固件升级程序对携带异常标志的应答报文的相应处理机制。本发明提供的基于fpga的固件程序可靠在线升级方法。保证了在线升级方法的灵活性,可实现远端程序更新,配合界面操作简单,使用灵活,没有更新失败导致无法启动的风险。
附图说明
16.图1为本发明基于fpga的固件程序可靠在线升级系统整体方案架构;图2为本发明基于fpga的固件程序可靠在线升级方法整体流程图;图3为本发明软件架构发往逻辑架构的数据包格式;图4为本发明逻辑架构发往软件架构的数据包格式。
具体实施方式
17.为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
18.本发明基于fpga的固件程序可靠在线升级系统和方法,主要目的是发明一种适合于fpga实现的可靠的在线升级方法。此方法灵活性强,可实现远端程序更新,没有更新失败导致无法启动的风险。
19.基于fpga的固件程序可靠在线升级系统整体方案架构如图1所示,该系统包括软件(software)架构部分和逻辑(fpga)架构部分。
20.软件(software)架构部分主要负责固件在线升级功能的发起,升级数据传输,升级数据可靠性度量,以及异常数据传输情况下的流程处理等。
21.逻辑(fpga)架构部分主要负责通过网络接口接收数据包,计算数据包的fcs,解析数据包的格式,将数据包的数据通过固件配置接口写入fpga加载的flash中,写入完成后返回当前接收数据包的应答包。
22.软件架构包括固件更新应用程序、其他应用程序和网口分发汇聚模块,固件更新应用程序、其他应用程序均连接到网口分发汇聚模块。
23.固件更新应用程序主要负责根据用户的需求对固件进行更新,用于接收更新数据、分割数据包以及控制更新流程,主要包括如下过程:s11、固件更新应用程序首先接收到完整的更新数据,校验数据完整性;s12、完整性验证通过后,将更新数据分割成若干1kb字节的数据包,后续会按照顺序发往逻辑架构;s13、固件更新应用程序先发送固件擦除命令,待擦除完成后开始向逻辑架构发送数据;s14、固件更新应用程序每发完一个数据包后,会等待此数据包写入flash后的应答消息;s15、固件更新应用程序接收到数据包写入完成的应答消息后,开始发送下一包数据;s16、当固件更新应用程序发完一个数据包后,在规定时间内(20ms)未接收到应答包,或者接收到的应答包携带更新异常的信息时,则固件更新应用程序认为数据包传输过程已出现异常,可立即停止当前更新。
24.软件架构中其他应用程序根据功能定义进行设计,其他应用程序通过网口分发汇聚模块和逻辑架构进行通讯,包括但不局限于寄存器配置、表项配置,审计报文等。
25.软件架构中网口分发汇聚模块包括分发和汇聚功能。汇聚功能主要负责接收上层应用程序的数据包,并通过下层硬件发往逻辑架构;分发功能主要负责从下层逻辑架构的
硬件接收数据包,对数据包进行解析,根据解析结果的类别,对数据包进行分发。
26.逻辑架构包括网口mac模块、数据接收模块、格式解析模块、数据发送模块、格式封装模块、flash控制模块和配置接口ip模块。
27.网口mac模块主要负责链路层网络数据包的接收与发送。数据包下行方向(数据包从软件架构到逻辑架构),逻辑架构需要实现链路层数据包的帧同步、帧间隔检验,和fcs校验等功能;数据包上行方向(数据包从逻辑架构到软件架构),逻辑架构需要实现链路层网络数据包的fcs计算、数据包帧头(同步头)、帧尾(fcs)的添加、帧间隙的控制等。
28.逻辑架构中的数据接收模块连接网口mac模块,主要负责下行数据包的暂存,以及从网口时钟域到系统时钟域的跨时钟域数据传输。
29.逻辑架构中的数据发送模块连接网口mac模块,主要负责上行数据包的暂存,以及从系统时钟域到网口时钟域的跨时钟域数据传输。
30.逻辑架构中的格式解析模块连接数据接收模块,主要负责下行数据包的格式解析(格式如图3),关键信息提取(提取类型字段),配置数据的缓存(固件写入操作命令时进行缓存数据),并根据关键信息的类型向flash控制模块发起固件擦除、固件写入和固件读取等请求。如果格式解析模块解析到数据格式错误或者异常时,直接将此数据包丢弃,产生格式异常信号,并发往格式封装模块。最终上送到软件架构的固件更新应用程序。
31.逻辑架构中的格式封装模块连接数据发送模块,主要负责上行数据包的格式封装(格式如图4所示)。封装包括链路层头,类型(根据下行数据类型进行相应封装),状态(应答包的状态,0为正常返回,否则为异常返回),载荷(仅当固件读取命令时,填充有效数据,否则填充0)等信息封装。
32.逻辑架构中的flash控制模块连接格式解析模块和格式封装模块,主要负责通过配置接口ip控制flash芯片的擦除、写入和读取功能。当flash控制模块接收到格式解析模块的固件擦除请求时,会发起flash的擦除操作,待flash擦除完成后,产生擦除完成信号,并发往格式封装模块,最终上送到软件架构的固件更新应用程序;当flash控制模块接收到固件写入请求时,会发起flash的写操作,待flash写入数据完成后,会产生写入完成信号,并发往格式封装模块,最终上送到软件架构的固件更新应用程序。当flash控制模块接收到固件读取请求时,会发起flash的读操作,待flash读取完成后,会产生读取完成信号,和读取的数据一起发往格式封装模块,并最终上送到软件架构的固件更新应用程序。
33.逻辑架构中的配置接口ip模块连接flash控制模块和fpga加载flash,主要负责内部逻辑与fpga加载flash的数据通讯。
34.基于fpga的固件程序可靠在线升级方法的流程如图2所示,具体步骤如下:第一步:软件架构固件更新应用程序接收更新数据,直至数据接收完成;第二步:软件架构固件更新应用程序对完整的固件更新数据包进行完整性校验,对于校验通过的数据包进行下一步操作,否则返回错误;第三步:软件架构固件更新应用程序对完整的固件将数据包分割成若干1kb字节的数据包,并进行报文封装;第四步:软件架构固件更新应用程序向逻辑架构发送固件擦除命令,由于flash擦除相对较慢,所以需要等待较长时间,待擦除完成后进行下一步操作;第五步:软件架构固件更新应用程序向逻辑架构发完一个数据包后,会等待此数
据包写入flash后的应答消息;第六步:逻辑架构的网口mac模块,对下行方向(数据包从软件到逻辑)数据包,进行帧同步、帧间隔检验,和fcs校验。校验通过流程进行到下一步;第七步:逻辑架构的格式解析模块,完成关键信息提取,并根据关键信息的类型向flash控制模块发起擦除、写入、读取等请求。如果格式解析模块解析到数据包格式错误时,直接将此数据包丢弃,产生格式异常信号,向格式封装模块请求产生携带异常信息内容的应答包。
35.第八步:逻辑架构的flash控制模块,根据擦除、写入和读取等不同的请求类型,进行flash相应操作,操作完成后通过格式封装模块返回正常完成应答包。
36.第九步:逻辑架构的格式封装模块,根据格式解析模块和flash控制模块的请求类型,完成应答包的封装,并通过数据发送模块输出到网口mac模块。
37.第十步:逻辑架构的网口mac模块对上行方向(数据包从逻辑到软件)数据包,进行处理后通过网口发送到软件架构;数据包处理包括fcs计算、对数据包添加帧头、帧尾,以及帧间隙的控制等操作。
38.第十一步:软件架构的网口分发汇聚模块,对应答数据包进行解析,并根据应答类别分发到相应的应用程序。
39.第十二步:软件架构的固件更新应用程序,如果超时未收到应答报文,或者接收到了携带异常信息的应答报文,则跳转到第四步重新开始固件升级;如果接收到正常应答报文,且数据包未完全下发完成,则跳转到第五步,否则跳转到下一步;第十三步:固件程序在线升级完成。
40.本发明的关键点在于:此方法可保证固件升级数据可以完整、正确的升级到固件存储器flash中。
41.软件架构首先需要对接收的升级数据包进行完整性校验。
42.逻辑架构的mac接口逻辑需要对接收到的数据包进行完整性校验。
43.逻辑架构的格式解析模块对接收到的数据包进行格式正确性验证。
44.软件架构固件升级程序对携带异常标志的应答报文的相应处理机制。
45.本发明的效果:本发明提供的基于fpga的固件程序可靠在线升级方法。保证了在线升级方法的灵活性,可实现远端程序更新,配合界面操作简单,使用灵活,没有更新失败导致无法启动的风险。
46.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献