基于串口协议的FPGA安全在线升级方法与流程

文档序号:16067048发布日期:2018-11-24 12:46阅读:1941来源:国知局

本发明属于fpga在线升级领域,具体涉及基于串口协议的fpga安全在线升级方法。

背景技术

在嵌入式系统设备中,现场可编程门阵列fpga(fieldprogramgatesarray)因为其具备的现场可编程、硬件并行处理能力强等特点在实际的设计中得到越来越多的应用。epcs系列存储器由于具有引脚少,掉电不丢失数据的特点,通常做为fpga的程序存储器。目前主流的对epcs存储器进行程序代码烧写主要有3种方式:

1、通过专用仿真器通过专用jtag插座,在专用软件仿真环境下进行烧写。采用这种方式,外在限制条件较多,在升级时通常需要打开设备外壳以连接仿真器和jtag插座,很难适应远程在线升级的要求。

2、采用arm、单片机或其他cpu器件对epcs存储器进行编程,如果嵌入式设备中没有此类器件,则fpga在线升级则无法实现,同时采用这种方法,一旦在烧写epcs过程中出现错误,则会导致fpga无法启动。

3、采用发明专利cn201410328099.8所述方法,需要先完全擦除epcs后才能对epcs进行烧写,如果对epcs擦除成功后,正在烧写epcs过程中出现故障(比如掉电),那么fpga下次重新启动时就无法从epcs中获取下载文件,fpga将无法启动,此时就只能通过jtag方式对fpga进行重新编程,这将大大增加设备的维护成本。



技术实现要素:

本发明的目的在于克服上述不足,提供基于串口协议的fpga安全在线升级方法,对fpga升级可采用通用串口线缆,并且升级过程中无需拆卸系统。

为了达到上述目的,本发明包括以下步骤:

步骤一,将epcs存储器分为两个存储区域,分别为用于存储设备出厂默认程序的出厂程序存储区域,以及用于存储设备升级迭代版本程序的用户存储区域;

步骤二,将出厂程序存储区域和用户存储区域中的所需内容烧录到epcs中;

步骤三、fpga等待上位机启动新版本用户程序的传输流程;

步骤四、上位机通知fpga准备接收新版本用户程序;

步骤五、fpga通过串口向上位机发送’c’字符,然后等待接收控制帧;

步骤六、上位机收到’c’字符后,通过串口向fpga发送控制帧;

步骤七、fpga收到控制帧并校验通过后,向上位机发送ack字符;

步骤八、上位机收到ack字符后,等待接收’c’字符;

步骤九、fpga通过串口向上位机发送’c’字符,然后等待接收数据帧;

步骤十、上位机通过串口向fpga发送数据帧;

步骤十一、fpga收到数据帧并校验通过后,fpga操作altasmi_parallel烧写epcs的用户存储区域;

步骤十二、fpga向上位机发送ack字符;

步骤十三、上位机判断数据是否发送完毕,如果发送完毕,则进入步骤十四,否则执行步骤十;

步骤十四、上位机通过串口向fpga发送eot;

步骤十五、fpga向上位机发送ack字符,上位机收到ack字符后,上位机结束本次文件传输;

步骤十六、fpga进行程序重配置操作。

当设备掉电重启,fpga进行如下操作:

第一步,fpga根据默认配置自动从出厂程序存储区域加载出厂程序;

第二步,出厂版本程序加载成功并正常运行后,出厂版本程序监听是否有用户版本程序,如果没有,则进入fpga获取升级文件子流程,进行步骤三;如果有用户版本程序,则执行第三步;

第三步,fpga操作ip核altremote_update加载用户存储区域的程序;

第四步、用户程序版本若加载失败,则退回到第一步,如果加载成功,则执行第五步;

第五步、fpga按照用户版本程序进行工作,用户版本程序开启一个任务用于接收新版本的用户版本程序,当需要对用户版本程序进行升级时,进入fpga获取升级文件子流程,进行步骤三。

步骤十六中,fpga进行程序重配置的具体方法如下:

第一步、fpga开始进行程序重新配置操作;

第二步、fpga向ip核altremote_update写入更新application命令;

第三步、fpga向ip核altremote_update写入下次重配置启动地址;

第四步、fpga向ip核altremote_update写入控制字使能用户版本程序看门狗电路以及看门狗定时器时间;

第五步、fpga控制ip核altremote_update重配置开关,完成fpga的重配置。

步骤二中,烧录采用jtag方式。

与现有技术相比,本发明通过通用串口线缆对设备fpga进行在线升级,升级过程中无需拆卸系统,并且将epcs存储器分为两个存储区域,分别为用于存储设备出厂默认程序的出厂程序存储区域,以及用于存储设备升级迭代版本程序的用户存储区域,若在升级过程中如出现故障,设备可自动恢复到出厂版本,并可在出厂版本下重新进行在线升级操作,大大的降低了设备的维护成本。

附图说明

图1为本发明的流程图;

图2为本发明中设备掉电重启的流程图;

图3为本发明中fpga进行重配置的流程流程图。

具体实施方式

下面结合附图对本发明做进一步说明。

参见图1,本发明包括以下步骤:

步骤一,将epcs存储器分为两个存储区域,分别为用于存储设备出厂默认程序的出厂程序存储区域,以及用于存储设备升级迭代版本程序的用户存储区域;

步骤二,采用jtag方式将出厂程序存储区域和用户存储区域中的所需内容烧录到epcs中;

步骤三、fpga等待上位机启动新版本用户程序的传输流程;

步骤四、上位机通知fpga准备接收新版本用户程序;

步骤五、fpga通过串口向上位机发送’c’字符,然后等待接收控制帧;

步骤六、上位机收到’c’字符后,通过串口向fpga发送控制帧;

步骤七、fpga收到控制帧并校验通过后,向上位机发送ack字符;

步骤八、上位机收到ack字符后,等待接收’c’字符;

步骤九、fpga通过串口向上位机发送’c’字符,然后等待接收数据帧;

步骤十、上位机通过串口向fpga发送数据帧;

步骤十一、fpga收到数据帧并校验通过后,fpga操作altasmi_parallel烧写epcs的用户存储区域;

步骤十二、fpga向上位机发送ack字符;

步骤十三、上位机判断数据是否发送完毕,如果发送完毕,则进入步骤十四,否则执行步骤十;

步骤十四、上位机通过串口向fpga发送eot;

步骤十五、fpga向上位机发送ack字符,上位机收到ack字符后,上位机结束本次文件传输;

步骤十六、fpga进行程序重配置操作。

参见图2,当设备掉电重启,fpga进行如下操作:

第一步,fpga根据默认配置自动从出厂程序存储区域加载出厂程序;

第二步,出厂版本程序加载成功并正常运行后,出厂版本程序监听是否有用户版本程序,如果没有,则进入fpga获取升级文件子流程,进行步骤三;如果有用户版本程序,则执行第三步;

第三步,fpga操作ip核altremote_update加载用户存储区域的程序;

第四步、用户程序版本若加载失败,则退回到第一步,如果加载成功,则执行第五步;

第五步、fpga按照用户版本程序进行工作,用户版本程序开启一个任务用于接收新版本的用户版本程序,当需要对用户版本程序进行升级时,进入fpga获取升级文件子流程,进行步骤三。

参见图3,fpga进行程序重配置的具体方法如下:

第一步、fpga开始进行程序重新配置操作;

第二步、fpga向ip核altremote_update写入更新application命令;

第三步、fpga向ip核altremote_update写入下次重配置启动地址;

第四步、fpga向ip核altremote_update写入控制字使能用户版本程序看门狗电路以及看门狗定时器时间;

第五步、fpga控制ip核altremote_update重配置开关,完成fpga的重配置。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1