本发明属于fpga升级方法,具体涉及一种fpga在线升级方法及系统。
背景技术:
1、随着我国智能配电技术的发展,越来越多的配电自动化终端产品使用了fpga(field-programmablegatearray,现场可编程门阵列)。fpga需要从配置芯片中加载用户预先编译好的程序文件才能正常工作,对fpga的程序升级,就是对配置芯片内存储的程序文件进行修改,使其能够按照新的程序文件执行。
2、传统的fpga程序升级方式包括离线升级和在线升级两种:
3、离线升级需要借助专用的fpga烧写器和软件,通过jtag(jointtestactiongroup,联合测试工作组)接口将程序文件写入配置芯片中,此方法虽然方便,但是对于产品的现场升级却不是特别友好。jtag接口通常是为研发和生产使用,不会作为产品的外部接口,需要升级时要拆解设备。另外,现场服务人员需要对专用的烧写器和软件有一定的了解,否则无法完成操作。
4、在线升级目前多借助于控制器实现,比如mcu(microcontrolunit,微控制单元)、dsp(digitalsignalprocessing,数字信号处理)等,通过专用的程序升级端口将fpga的程序升级文件发送给控制器,再由控制器通过二选一选择器写入配置芯片中。但此方案增加了电路设计的复杂度和产品的成本,而且一旦更新失败,将导致fpga无法工作。
5、基于此,急需一种新的fpga在线程序升级方法,不需要拆装设备,也不需要使用专门的烧写工具和软件,同样不需要借助控制器,即可实现fpga程序的在线升级。
技术实现思路
1、为了克服现有技术中的问题,本发明提出了一种fpga在线升级方法及系统。
2、本发明解决上述技术问题的技术方案如下:
3、第一方面,本发明提供了一种fpga在线升级方法,包括以下步骤:
4、安装有升级软件的上位机发送擦除指令,由配电终端的fpga对配电终端配置芯片的升级区进行擦除,保留配置芯片备份区数据;擦除指令全部发送完毕后,安装有升级软件的上位机发送读指令,验证已擦除的空间是否擦除成功,若未擦除成功,继续擦除;
5、若擦除成功,由安装有升级软件的上位机将升级文件进行分解,并将分解后的升级数据逐帧发送给fpga,待fpga执行完毕返回确认帧后,再次发送下一帧升级数据,直至所有的数据发送完毕,fpga执行完成后返回确认指令给上位机;
6、升级文件全部写入配置芯片升级区后,对配电终端断电重启;重启后,fpga从配置芯片的升级区加载程序并执行,完成fpga在线升级。
7、进一步地,若fpga在线升级失败,从配置芯片备份区加载数据。
8、进一步地,上位机向fpga发送擦除指令之前,还包括:安装有升级软件的上位机识别升级文件大小,计算需要擦除的配置芯片的空间大小。
9、进一步地,所述升级文件为.bin格式的文件。
10、进一步地,安装有升级软件的上位机发送擦除指令后,fpga对上位机擦除指令进行判断:如果上位机指令合法,将执行上位机指令内容,并返回执行结果;如果上位机指令不合法,则不执行且不返回执行结果。
11、进一步地,由安装有升级软件的上位机将升级文件进行分解,并将分解后的升级数据逐帧发送给fpga后,还包括fpga对上位机的升级文件进行判断:如果升级文件合法,将执行升级文件内容,并返回执行结果;如果升级文件不合法,则不执行且不返回执行结果。
12、进一步地,安装有升级软件的上位机将升级文件进行分解,并将分解后的升级数据逐帧发送给fpga具体包括:安装有升级软件的上位机将升级文件拆分为一帧一帧的数据,每帧数据包含的数据不超过256字节;安装有升级软件的上位机逐帧发送升级数据,待fpga执行完毕返回确认帧后,再次发送下一帧数据,直至所有的数据发送完毕。
13、进一步地,将分解后的升级数据逐帧发送给fpga之后还包括:fpga对安装有升级软件的上位机发送的升级数据进行解析,解析判断是否为程序升级指令,解析后判断为程序升级指令,写入程序数据缓冲区,执行程序升级指令;若解析后判断为通讯指令,则将数据写入通讯数据缓冲区中,返回指令执行结果。
14、第二方面,本发明还提供了一种fpga在线升级系统,包括:安装有升级软件的上位机、串行通讯接口模块、fpga模块、配置芯片;所述上位机、串行通讯接口模块、fpga模块、配置芯片依次通讯连接;
15、安装有升级软件的上位机用于发起程序升级流程,并将升级文件分解,分解后的升级数据通过串口通讯线缆发送给配电终端的串行通讯接口模块;
16、串行通讯接口模块用于将安装有升级软件的上位机发送的文件转换为ttl(transistortransistorlogic,晶体管-晶体管逻辑电平)信号;
17、fpga模块用于根据安装有升级软件的上位机发送的擦除指令对配置芯片的升级区进行擦除;用于解析判断是否为程序升级指令,解析后判断为程序升级指令,写入程序数据缓冲区,执行程序升级指令;若解析后判断为非程序升级指令,则将数据写入通讯数据缓冲区中,返回指令执行结果,实现正常的串口通讯功能;
18、配置芯片为fpga程序的存储媒介,用于每次上电时fpga从配置芯片中加载程序并执行;配置芯片内的数据区域分为升级区和备份区;升级区存储升级程序,fpga优先从该区域加载,备份区存储备份程序,升级失败时从该区域加载。
19、进一步地,所述系统还包括专用下载器、jtag接口模块、usb线缆、jtag线缆,所述专用下载器用于出厂时以dualboot(双启动)模式写入fpga程序,所述专用下载器通过usb线缆与上位机连接,所述jtag接口模块一端通过jtag线缆与所述专用下载器连接,另一端通过jtag接口与fpga模块通讯连接。
20、与现有技术相比,本发明具有如下技术效果:
21、(1)本发明不需要借助控制器,降低设计难度和成本;且本发明采用dualboot(双启动)模式,出场时在配置芯片中预先写入了两套程序文件,对配置芯片升级区进行擦除、升级,保留配置芯片备份区数据,fpga优先从升级区加载程序,升级失败时从备份区加载,避免fpga在线升级更新失败,fpga无法工作的情况出现;
22、(2)本发明保留专用下载器及usb线缆、jtag线缆等传统的离线式下载模式,则本发明同时兼容了串口和jtag两种模式,支持在线升级的同时又不影响生产和调试使用;