本发明涉及红外成像设备中的红外成像软件升级技术领域,具体为一种基于1k-xmodem协议的fpga软件在线升级方法。
背景技术:
在开发nios软核 fpga系统架构的嵌入式软件过程中,需要对红外成像设备中的红外成像软件进行升级更新,一般利用仿真器通过jtag接口对fpga软件进行调试后烧写。红外成像设备交付后若采用此方法升级软件必须将产品拆开、连接仿真器、加载程序,验证无误后还需重新充氮,这一过程,操作相当复杂,容易出错。
技术实现要素:
为解决现有技术存在的问题,本发明提出一种基于1k-xmodem协议的fpga软件在线升级方法,该方法基于rs422串口实现软件在线升级功能,首先需获取烧写文件,串口传输协议采用1k-xmodem协议,新增列校验以保证文件传输的正确性,数据写入flash阶段增加整体读出、一一比对的操作,提高软件烧写的可靠性。应用在红外成像设备中的红外成像软件升级过程中时,对比原始通过jtag接口升级软件的方法需要拆卸产品、连接仿真器、加载程序、充氮等一系列繁琐操作,本发明串口在线升级方法简化了fpga软件的升级流程,无需拆卸产品,降低了软件升级带来的风险与成本。
本发明的技术方案为:
所述一种基于1k-xmodem协议的fpga软件在线升级方法,包括以下步骤:
步骤1:生成烧写文件:
步骤1.1:将红外成像设备中的flash存储器整片擦除;这里可以采用通过读取数据并查看是否全为ff,以确认是否全部擦除;
步骤1.2:通过jtag接口向所述flash存储器中烧写fpga软件编译完成后的.elf文件和.bit文件;
步骤1.3:通过读取flash存储器中的数据,得到步骤1.2中烧写的文件的存储区域;例如,通过对flash存储器中的每个存储扇区进行读取判断,非全ff的存储扇区即为步骤1.2中烧写的文件的存储区域;
步骤1.4:将步骤1.3中读取的数据按照1k-xmodem协议进行组包,并发送给上位机;例如可以通过rs422串口将组包后的数据发送给上位机;
步骤1.5:上位机接收数据后生成fpga软件的.out文件;
步骤1.6:将所述flash存储器再次整片擦除后,将步骤1.5中生成的.out文件烧写到所述flash存储器中;例如可以通过niosii7.2环境中flashprogrammer烧写文件功能进行一键烧写;
红外成像设备重新上电后,fpga软件正常启动,确认软件功能与版本;本步骤的创新点在于能够确认flash中烧写的有效代码的存储区域,以及通过上位机导出数据并形成烧写文件。
步骤2:数据传输过程:
步骤2.1:红外成像设备上电,fpga软件如果收到“在线升级”命令,fpga软件向上位机发送nak信号,所述nak信号表示启动传输,等待接收文件;
步骤2.2:fpga软件按照1k-xmodem协议循环接收上位机发送的升级数据并存储数组,所述升级数据包括代码数据和列校验数据;
步骤2.3:fpga软件收到eot信号后,对存放代码数据的数组按列计算校验和,并与收到的列校验数据一一比对,若正确,向上位机发送ack信号,否则,发送can信号取消此次升级流程;所述eot信号表示文件传输完毕,所述ack信号表示响应正常;
本步骤的创新点在于新增列校验,以保证烧写文件传输正确。
步骤3:数据写入flash存储器过程:
步骤3.1:fpga软件对代码数据列校验正确后,将代码数据写入所述flash存储器中的代码存储区,所述代码存储区为步骤1.3中得到的存储区域;
步骤3.2:再将所述代码存储区中的数据读出,并与所述数组中存放的代码数据一一比对,确认无误后,向上位机反馈烧写成功;若比对数据不一致,则重复步骤3.1,直至比对数据一致;若重复设定次数后,比对数据仍不一致,则向上位机反馈升级烧写失败。
之后红外成像设备重新上电,fpga软件正常启动,确认软件功能与版本;本步骤的创新点在于将代码数据写入flash后整体读取一一比对,以保证可靠性。
有益效果
本发明基于rs422串口实现软件在线升级功能,首先需获取烧写文件,串口传输协议采用1k-xmodem协议,新增列校验以保证文件传输的正确性,数据写入flash阶段增加整体读出、一一比对的操作,提高软件烧写的可靠性。应用在红外成像设备中的红外成像软件升级过程中时,对比原始通过jtag接口升级软件的方法需要拆卸产品、连接仿真器、加载程序、充氮等一系列繁琐操作,本发明串口在线升级方法简化了fpga软件的升级流程,无需拆卸产品,降低了软件升级带来的风险与成本。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明的流程图;
图2是烧写文件生成的流程图;
图3是数据传输的流程图;
图4是数据写入flash的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
如图1所示,本发明提出的基于1k-xmodem协议的fpga软件在线升级方法,包括生成烧写文件、数据传输和数据写入flash存储器过程,具体为:
如图2所示,步骤1:生成烧写文件:
步骤1.1:将红外成像设备中的flash存储器(epcs64)整片擦除;这里我们采用读取数据并查看数据是否全为ff的方式,以确认是否全部擦除;
步骤1.2:通过红外成像设备中的jtag接口向所述flash存储器中烧写fpga软件编译完成后的.elf文件和.bit文件;
步骤1.3:通过读取flash存储器中的数据,得到步骤1.2中烧写的文件的存储区域,这一区域即为软件和逻辑代码数据的存储区域(sector0~sector31);具体的判断过程为:通过对flash存储器中的每个存储扇区进行读取判断,非全ff的存储扇区即为步骤1.2中烧写的文件的存储区域;
步骤1.4:将步骤1.3中读取的数据按照1k-xmodem协议进行组包,并通过rs422串口发送给上位机;
步骤1.5:上位机接收数据后生成fpga软件的.out文件;
步骤1.6:将所述flash存储器再次整片擦除后,将步骤1.5中生成的.out文件烧写到所述flash存储器中;这里我们通过niosii7.2环境中flashprogrammer烧写文件功能进行一键烧写。
红外成像设备重新上电后,fpga软件正常启动,确认软件功能与版本。
如图3所示,步骤2:数据传输过程:
步骤2.1:红外成像设备上电,软件运行进入制冷待机后,若接收到的第一包命令为“在线升级”命令(具体约定为:a9e0fffefdfcfbfaf9checksum),则进入在线升级函数;否则按照正常流程执行,不再进入在线升级模式;
收到“在线升级”命令后,fpga软件向上位机发送nak信号,所述nak信号表示启动传输,等待接收文件;
步骤2.2:fpga软件按照1k-xmodem协议循环接收上位机发送的升级数据并存储数组,所述升级数据包括2048包代码数据 1包列校验数据,具体如下:
上位机收到nak信号后,发送第一包数据(1028字节),fpga软件接收完毕后,判断包头、包号、包号补码是否正确,以及计算包校验和是否正确,若正确,则将当前数据存入数组,数据包个数加1,向上位机发送ack信号,上位机收到ack信号后发送下一包数据,以此类推,直至2049包数据全部传输完毕;若任一包校验错误,向上位机发送can取消传输,此次升级流程取消,需下电重新开始;
步骤2.3:fpga软件收到eot信号后,对存放代码数据的数组按列计算校验和,并与收到的列校验数据一一比对,若正确,向上位机发送ack信号,否则,发送can信号取消此次升级流程,需下电重新开始;所述eot信号表示文件传输完毕,所述ack信号表示响应正常。
如图4所示,步骤3:数据写入flash存储器过程:
步骤3.1:fpga软件对代码数据列校验正确后,将代码数据写入所述flash存储器中的代码存储区,所述代码存储区为步骤1.3中得到的存储区域;
步骤3.2:再将所述代码存储区中的数据读出,并与所述数组中存放的代码数据一一比对,确认无误后,向上位机反馈烧写成功;若比对数据不一致,则重复步骤3.1,直至比对数据一致;若重复10次均比对数据不一致,则向上位机反馈升级烧写失败。
之后红外成像设备重新上电,fpga软件正常启动,确认软件功能与版本。
本发明基于rs422串口实现软件在线升级功能,首先需获取烧写文件,串口传输协议采用1k-xmodem协议,新增列校验以保证文件传输的正确性,数据写入flash阶段增加整体读出、一一比对的操作,提高软件烧写的可靠性。应用在红外成像设备中的红外成像软件升级过程中时,对比原始通过jtag接口升级软件的方法需要拆卸产品、连接仿真器、加载程序、充氮等一系列繁琐操作,本发明串口在线升级方法简化了fpga软件的升级流程,无需拆卸产品,降低了软件升级带来的风险与成本。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
1.一种基于1k-xmodem协议的fpga软件在线升级方法,其特征在于:包括以下步骤:
步骤1:生成烧写文件:
步骤1.1:将红外成像设备中的flash存储器整片擦除;
步骤1.2:通过jtag接口向所述flash存储器中烧写fpga软件编译完成后的.elf文件和.bit文件;
步骤1.3:通过读取flash存储器中的数据,得到步骤1.2中烧写的文件的存储区域;
步骤1.4:将步骤1.3中读取的数据按照1k-xmodem协议进行组包,并发送给上位机;
步骤1.5:上位机接收数据后生成fpga软件的.out文件;
步骤1.6:将所述flash存储器再次整片擦除后,将步骤1.5中生成的.out文件烧写到所述flash存储器中;
步骤2:数据传输过程:
步骤2.1:红外成像设备上电,fpga软件如果收到“在线升级”命令,fpga软件向上位机发送nak信号,所述nak信号表示启动传输,等待接收文件;
步骤2.2:fpga软件按照1k-xmodem协议循环接收上位机发送的升级数据并存储数组,所述升级数据包括代码数据和列校验数据;
步骤2.3:fpga软件收到eot信号后,对存放代码数据的数组按列计算校验和,并与收到的列校验数据一一比对,若正确,向上位机发送ack信号,否则,发送can信号取消此次升级流程;所述eot信号表示文件传输完毕,所述ack信号表示响应正常;
步骤3:数据写入flash存储器过程:
步骤3.1:fpga软件对代码数据列校验正确后,将代码数据写入所述flash存储器中的代码存储区,所述代码存储区为步骤1.3中得到的存储区域;
步骤3.2:再将所述代码存储区中的数据读出,并与所述数组中存放的代码数据一一比对,确认无误后,向上位机反馈烧写成功;若比对数据不一致,则重复步骤3.1,直至比对数据一致;若重复设定次数后,比对数据仍不一致,则向上位机反馈升级烧写失败。
2.根据权利要求1所述一种基于1k-xmodem协议的fpga软件在线升级方法,其特征在于:步骤1.1中通过读取flash存储器中数据并查看是否全为ff,以确认flash存储器是否全部擦除。
3.根据权利要求1所述一种基于1k-xmodem协议的fpga软件在线升级方法,其特征在于:步骤1.3中,通过对flash存储器中的每个存储扇区进行读取判断,其中非全ff的存储扇区即为步骤1.2中烧写的文件的存储区域。
4.根据权利要求1所述一种基于1k-xmodem协议的fpga软件在线升级方法,其特征在于:步骤1.4中,通过rs422串口将组包后的数据发送给上位机。
5.根据权利要求1所述一种基于1k-xmodem协议的fpga软件在线升级方法,其特征在于:步骤1.6中,通过niosii7.2环境中flashprogrammer烧写文件功能进行一键烧写。
6.根据权利要求1所述一种基于1k-xmodem协议的fpga软件在线升级方法,其特征在于:步骤2中,所述升级数据包括n包代码数据和1包列校验数据;上位机收到nak信号后,发送第一包数据,fpga软件接收完毕后,判断包头、包号、包号补码是否正确,以及计算包校验和是否正确,若正确,则将当前代码数据存入数组,数据包个数加1,向上位机发送ack信号,上位机收到ack信号后发送下一包数据,以此类推,直至n 1包数据全部传输完毕;若任一包校验错误,向上位机发送can取消传输,此次升级流程取消。
技术总结