[发明专利]一种基于FPGA的远程固件升级方法在审
申请号: | 202111147381.2 | 申请日: | 2021-09-29 |
公开(公告)号: | CN113867771A | 公开(公告)日: | 2021-12-31 |
发明(设计)人: | 周天;黄杰;杜伟东;陈宝伟;胡永翔 | 申请(专利权)人: | 哈尔滨工程大学;上海声之扬科技有限公司 |
主分类号: | G06F8/654 | 分类号: | G06F8/654 |
代理公司: | 成都方圆聿联专利代理事务所(普通合伙) 51241 | 代理人: | 邓永红 |
地址: | 150001 黑龙江*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 fpga 远程 升级 方法 | ||
1.一种基于FPGA的远程固件升级方法,其特征在于,包括以下几个步骤:
步骤一:PC端上位机通过网口向设备内部FPGA芯片的Nios系统发送固件文件;
步骤二:Nios系统将接收到的固件临时存储到RAM中;
步骤三:Nios将RAM中的固件文件分段读出打包传输到Flash控制器;
步骤四:Flash控制器接收到打包的固件文件,并确认正确性,确认正确后再烧写到Flash芯片中。
2.根据权利要求1所述的一种基于FPGA的远程固件升级方法,其特征在于,步骤三具体步骤包括:
SIII1:发送Flash烧写状态机复位命令rest_str使FPGA烧写状态机就位;
SIII2:发送Flash芯片整片擦除命令erase_str,并等待接收Flash擦除完成命令;
SIII3:判断等待接收命令时间是否超时;若超时则执行步骤SIII1,若没超时则判断是否为Flash擦除完成命令;若为Flash擦除完成命令则执行下一步,若不是则执行步骤SIII1;
SIII4:根据接收到的总字节数A,及一帧要传输的字节数B,得到即将要传输的总数据帧数M=A/B;
SIII5:判断即将打包的数据帧编号i是否大于总数据帧M,i取值从1到M;若大于M,则执行步骤SIII8;否则,执行下一步;
SIII6:打包并发起第i帧数据传输;
SIII7:等待回复,收到正确回复,则i=i+1;错误回复,则i=i;或者超过1秒钟无回复,则i=i;执行步骤SIII5;
SIII8:发送烧写结束命令;
SIII9:等待回复,判断回复是否正确;若正确,则结束;否则,则执行步骤SIII8。
3.根据权利要求2所述的一种基于FPGA的远程固件升级方法,其特征在于,SIII6中打包的数据格式为:帧头+要传输的数据字节数+帧编号+待传输数据+校验和;
帧头为1个字节,为固定值0xFA;
要传输的数据字节数,为1个字节,值为N;
帧编号,为2个字节,值为i;
待传输数据,为N个字节,第i段固件文件数据;
校验和,为1个字节,值为前面所有字节求和后取256的余数。
4.根据权利要求1所述的一种基于FPGA的远程固件升级方法,其特征在于,步骤四的具体步骤包括:
SIV1:等待接收Flash芯片整片擦除命令;
SIV2:判断是否接收到Flash芯片整片擦除命令;若是则执行下一步,否则执行步骤SIV1;
SIV3:执行整片Flash芯片擦除命令;
SIV4:判断Flash芯片是否擦除完成;若完成,则执行下一步,否则执行SIV3;
SIV5:读取一个字节数据,并判断是否有复位信号产生;若没有复位信号产生,则执行下一步;否则执行步骤SIV1;
SIV6:判断是否为帧头head;若是,则执行下一步;否则执行步骤SIV15;
SIV7:紧接着读取一个字节做为当前即将传输数据帧总长度N,并判断是否有复位信号产生;若没有复位信号产生,则执行下一步;否则执行步骤SIV1;
SIV8:紧接着读取2个字节数据组成一个16位的无符号整数做为当前数据帧的片段在全部数据中的偏移量i,然后计算即将写入Flash存储器指定区域的首地址addr=N*I,并判断是否有复位信号产生;若没有复位信号产生,则执行下一步;否则执行步骤SIV1;
SIV9:紧接着读取N个字节写入到Flash控制器中,同时向Flash控制器输入存储的首地址addr,并判断是否有复位信号产生,并判断是否有复位信号产生;若没有复位信号产生,则执行下一步;否则执行步骤SIV1;
SIV10:紧接着读取1个字节为前面读取的所有字节的校验和,并和本地自己求的校验和比较,并判断是否有复位信号产生;若没有复位信号产生,则执行下一步;否则执行步骤SIV1;
SIV11:判断校验和是否一致;若一致则执行下一步;否则执行步骤SIV14;
SIV12:使能Flash控制器中的烧写使能信号,执行烧写程序;
SIV13:等待烧写完成,并回复right,表示正常接收到数据,可以接收下一帧数据;然后执行步骤SIV5;
SIV14:回复error,表示接收数据异常,请重新传输当前的数据帧;
SIV15:判断是否为烧写结束命令over;若是则执行下一步;否则执行步骤SIV5;
SIV16:回复收到烧写结束命令get_over;结束烧写过程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工程大学;上海声之扬科技有限公司,未经哈尔滨工程大学;上海声之扬科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111147381.2/1.html,转载请声明来源钻瓜专利网。