CN107634859A - 一种固件升级方法及装置 - Google Patents
一种固件升级方法及装置 Download PDFInfo
- Publication number
- CN107634859A CN107634859A CN201710915238.0A CN201710915238A CN107634859A CN 107634859 A CN107634859 A CN 107634859A CN 201710915238 A CN201710915238 A CN 201710915238A CN 107634859 A CN107634859 A CN 107634859A
- Authority
- CN
- China
- Prior art keywords
- firmware
- main control
- control chip
- firmware data
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000001629 sign test Methods 0.000 claims abstract description 59
- 230000004044 response Effects 0.000 claims abstract description 46
- 239000007787 solid Substances 0.000 claims description 14
- 238000013500 data storage Methods 0.000 claims description 9
- 239000003550 marker Substances 0.000 claims description 9
- 230000001960 triggered effect Effects 0.000 claims description 6
- 230000017702 response to host Effects 0.000 claims 1
- 241001269238 Data Species 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007711 solidification Methods 0.000 description 1
- 230000008023 solidification Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种固件升级方法及装置,涉及信息安全领域。所述方法包括:主控芯片接收上位机下发的固件升级指令,并向上位机返回成功响应数据;接收上位机下发的数据包,若非结束包则从所述数据包中获取的固件数据存储到备份存储区,向上位机返回成功响应数据,若是结束包则从所述结束包中获取签名数据,根据预置签名密钥和当前接收到的固件数据对所述签名数据进行验签,若验签成功则从所述备份存储区中读取固件数据写入到应用存储区,完成固件升级;若验签失败则报错。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种固件升级方法及装置。
背景技术
固件就是写入EPROM、EEPROM或Flash芯片中的程序,通俗的理解就是“固化的软件”,是固化在集成电路内部的程序代码,负责控制和协调集成电路的功能。随着技术的不断发展,和蓝牙技术的广泛应用,为适应不断更新的硬件环境,对产品的USB固件和蓝牙固件进行升级也越来越频繁。现有技术中,对产品中USB固件进行升级采用的安全手段,通常是对USB固件进行加密之后使用USB接口进行传输来完成升级,对产品中蓝牙固件进行升级的做法是采用OTA(Over-the-Air,空中下载)升级方法,主要通过无线网络(例如WIFI、3G)自动下载OTA升级包、自动升级。一方面基于无线网络或基于USB接口密文传输进行固件升级安全性低,另一方面基于无线网络进行OTA固件升级,当固件较大时势必影响传输效率,并且如果传输时间长的话,完成升级还会受限于蓝牙设备的剩余电量。
发明内容
为解决现有技术中存在的问题,本发明提出了一种更加安全的、并通过USB接口来实现的对USB固件或蓝牙固件进行安全升级的方法及装置。
本发明采用的技术方案如下:一种固件升级方法,包括:
步骤S1、主控芯片接收上位机下发的固件升级指令,并向上位机返回成功响应数据;
步骤S2、所述主控芯片接收上位机下发的数据包;
步骤S3、所述主控芯片判断所述数据包是否是结束包,是则执行步骤S4,否则所述主控芯片从所述数据包中获取固件数据包序号、固件数据长度值和与所述固件数据长度值对应的固件数据,将获取的所述固件数据存储到备份存储区,根据所述固件数据包序号和所述固件数据长度值确定所述主控芯片当前接收到固件数据总长度并记录,向上位机返回成功响应数据,返回步骤S2;
步骤S4、所述主控芯片从所述结束包中获取签名数据,根据预置签名密钥和当前备份存储区中存储的与所述固件数据总长度对应的固件数据对所述签名数据进行验签,若验签成功则所述主控芯片从所述备份存储区中读取与所述固件数据总长度对应的固件数据写入到应用存储区,完成固件升级,结束;若验签失败则主控芯片报错,结束。
上述步骤S2与步骤S3之间还包括:所述主控芯片判断接收到的数据包是否是起始包,是则所述主控芯片从所述起始包中获取固件数据长度值和固件数据,从所述固件数据中获取产品描述信息存储到第二存储区,将所述固件数据中除所述产品描述信息之外的剩余数据存储到备份存储区,根据所述所述固件数据长度值确定当前接收到的固件数据总长度并记录,向上位机返回成功响应数据,返回执行步骤S2;否则执行所述步骤S3。
其中,上述主控芯片判断接收到的数据包是否是起始包具体为:所述主控芯片获取接收到的数据包中包含的固件数据包序号,根据所述固件数据包序号判断所述数据包是否为固件数据的起始包。
优选的,上述步骤S4中所述验签成功时还包括:
步骤S5、所述主控芯片判断第二存储区中的产品描述信息是否正确,是则执行步骤S4中所述主控芯片从所述备份存储区中读取与所述固件数据总长度对应的固件数据写入到应用存储区,完成固件升级,结束;否则所述主控芯片报错,结束。
优选的,所述主控芯片判断所述产品描述信息正确时还包括:
步骤S6、所述主控芯片根据所述产品描述信息判断备份存储区中存储的所述固件数据是否是蓝牙固件数据,是则执行步骤S7,否则执行步骤S4中所述主控芯片从所述备份存储区中读取与所述固件数据总长度对应的固件数据写入到应用存储区,完成固件升级,结束;
步骤S7、所述主控芯片通过SWD接口向蓝牙芯片中写入所述蓝牙固件数据,完成固件升级,结束。
其中,上述主控芯片判断所述数据包是否是结束包具体为:所述主控芯片判断接收到的数据包的第八字节是否是0xFF,是则所述数据包是固件数据的结束包,否则所述数据包不是固件数据的结束包。
优选的,上述方法还包括:
步骤101:主控芯片上电初始化,运行引导加载程序;
步骤102:所述主控芯片判断是否跳转运行应用程序,是则执行步骤104,否则执行步骤103;
步骤103:所述主控芯片从备份存储区中读取固件数据写入到应用存储区,然后返回步骤101;
步骤104:所述主控芯片接收上位机下发的指令;
步骤105:所述主控芯片判断接收到的指令是否是固件升级指令,是则执行步骤S1所述向上位机返回成功响应数据,否则执行步骤106;
步骤106:所述主控芯片根据接收到的指令执行相应操作,然后返回步骤101。
其中,所述主控芯片判断是否跳转运行应用程序具体为:所述主控芯片从第一存储区读取标志位,判断所述标志位是否等于第一预设值,是则执行步骤103,否则跳转运行应用程序,执行所述步骤104;
所述步骤S4中所述验签成功时还包括修改所述标志位为第一预设值;所述步骤103中所述返回步骤101之前还包括修改所述标志位为第二预设值。
上述主控芯片判断接收到的指令是否是固件升级指令具体为:所述主控芯片判断接收到的所述指令的第五字节是否等于0xBA,是则所述指令是固件升级指令,否则所述固件指令不是固件升级指令。
优选的,所述主控芯片从所述备份存储区中读取与所述固件数据总长度对应的固件数据写入到应用存储区具体为,所述主控芯片先擦除所述应用存储区,然后从所述备份存储区中读取与所述固件数据总长度对应的固件数据写入到应用存储区。
进一步的,所述主控芯片从所述备份存储区读取与所述固件数据总长度对应的固件数据写入到应用存储区之后还包括,所述主控芯片擦除所述备份存储区。
优选的,上述方法还包括:当所述主控芯片接收到上位机下发的初始化指令时,所述主控芯片执行初始化操作,并向上位机返回包含通道标识的初始化指令响应数据;当所述主控芯片接收到上位机下发的获取版本号指令时,所述主控芯片获取当前固件版本号并向上位机返回包含所述当前固件版本号的获取版本号指令响应。
优选的,所述主控芯片从所述数据包中获取与所述固件数据长度值对应的固件数据具体为:所述主控芯片采用预存的加解密密钥对所述数据包进行解密得到所述与所述固件数据长度值对应的固件数据;所述主控芯片从所述结束包中获取签名数据具体为:所述主控芯片采用所述预存的加解密密钥对所述结束包进行解密得到所述签名数据。
本发明还提供了一种固件升级装置,包含有主控芯片、备份存储区和应用存储区,其中,所述主控芯片包括第一收发模块、第二收发模块、第一判断模块、第一获取模块、第二获取模块、验签模块和写入模块;
所述第一收发模块,用于接收上位机下发的固件升级指令,并向上位机返回成功响应数据;
所述第二收发模块,用于接收上位机下发的数据包,并触发第一判断模块;以及用于收到第一获取模块的触发时向上位机返回成功响应数据;
所述第一判断模块,用于判断所述第二收发模块接收到的所述数据包是否是结束包,是则触发第二获取模块,否则触发第一获取模块;
所述第一获取模块,用于从所述第二收发模块接收到的所数据包中获取固件数据包序号、固件数据长度值和与所述固件数据长度值对应的固件数据,将获取的所述固件数据存储到所述备份存储区,根据所述固件数据包序号和所述固件数据长度值确定所述主控芯片当前接收到固件数据总长度并记录,并触发所述第二收发模块;
所述第二获取模块,用于当所述第一判断模块判断所述第二收发模块接收到的所述数据包是结束包时从所述第二收发模块接收到的所述结束包中获取签名数据,从备份存储区中获取所述第一获取模块记录的所述固件数据总长度对应的固件数据;
所述验签模块,用于根据预置签名密钥和所述第二获取模块获取的所述固件数据对所述第二获取模块获取的所述签名数据进行验签,若验签成功则触发写入模块,若验签失败则报错;
所述写入模块,用于将所述备份存储区中存储的与所述第一获取模块记录的所述固件数据总长度对应的固件数据写入到应用存储区。
优选的,上述主控芯片还包括用于存储产品描述信息的第二存储区;
所述第一判断模块,还用于判断所述第二收发模块接收到的所述数据包是否是起始包;
所述第一获取模块,还用于当所述第一判断模块判断所述第二收发模块接收到的所述数据包是起始包时,从所述第二收发模块接收到的所述起始包中获取固件数据长度值和与所述固件数据长度值对应的固件数据,从所述固件数据中获取产品描述信息存储到所述第二存储区,将所述固件数据中除所述产品描述信息之外的剩余数据存储到备份存储区,根据所述所述固件数据长度值确定当前接收到的固件数据总长度并记录,并触发所述第二收发模块。
其中,上述第一判断模块,具体用于根据从所述数据包中获取的固件数据包序号判断所述数据包是否为起始包。
优选的,所述主控芯片还包括第二判断模块;当所述验签模块执行验签成功时则触发第二判断模块;所述第二判断模块,用于判断所述第二存储区中的产品描述信息是否正确,是则触发所述写入模块,否则报错。
优选的,所述装置还包括蓝牙芯片;
所述第二判断模块,具体还用于当判断所述产品描述信息正确时,根据所述产品描述信息判断备份存储区中存储的所述固件数据是否是蓝牙固件数据,若是蓝牙固件数据,则所述主控芯片通过SWD接口向所述蓝牙芯片中写入所述蓝牙固件数据;否则触发所述写入模块。
优选的,所述第一判断模块,用于判断所述第二收发模块接收到的所述数据包的第八字节是否是0xFF,是则触发第二获取模块,否则触发第一获取模块。
优选的,上述主控芯片还包括复位模块;
所述复位模块,用于上电初始化,并运行引导加载程序,以及用于判断是否跳转运行应用程序,是则触发第一收发模块,否则触发所述写入模块;
相应的,所述第一收发模块,用于接收上位机下发的指令并判断是否是固件升级指令,若是固件升级指令则向上位机返回成功响应数据,若是其他指令,则根据所述其他指令执行相应操作。
进一步的,所述主控芯片还包括用于存储标志位的第一存储区;
相应的,所述复位模块,具体用于上电初始化,并运行引导加载程序,以及具体用于从所述第一存储区读取标志位,并判断所述标志位是否等于第一预设值,是则触发所述写入模块,否则跳转运行应用程序,触发所述第一收发模块;
所述主控芯片还包括修改模块,用于当所述验签模块验签成功时将所述第一存储区中存储的所述标志位修改为第一预设值,还用于当所述写入模块完成写入操作时将所述第一存储区中存储的所述标志位修改为第二预设值。
优选的,上述第一收发模块,还具体用于判断接收到的上位机下发的指令的第五字节是否等于0xBA,是则确定接收到的所述指令是固件升级指令,否则确定接收到的所述指令是其他指令。
优选的,上述写入模块,具体用于当收到触发时擦除所述应用存储区,并从所述备份存储区中读取所述固件数据写入到应用存储区。还用于将读取的固件数据写入到应用存储区之后,擦除所述备份存储区。
优选的,所述第一收发模块,还具体用于当接收到上位机下发的初始化指令时,执行初始化操作,并向上位机返回包含通道标识的初始化指令响应数据;还具体用于当接收到上位机下发的获取版本号指令时,获取当前固件版本号并向上位机返回包含所述当前固件版本号的获取版本号指令响应。
优选的,上述第一获取模块,具体用于采用预存的加解密密钥对所述第二收发模块接收到的所数据包进行解密,从中获取固件数据包序号、固件数据长度值和与所述固件数据长度值对应的固件数据,将获取的所述固件数据存储到所述备份存储区,根据所述固件数据包序号和所述固件数据长度值确定所述主控芯片当前接收到固件数据总长度并记录,并触发所述第二收发模块;
上述第二获取模块,具体用于采用预存的加解密密钥对所述第二收发模块接收到的所述结束包进行解密得到所述签名数据,以及从备份存储区中获取所述第一获取模块记录的所述固件数据总长度对应的固件数据。
本发明的有益效果如下:本发明提供的技术方案,对固件数据采用了固定格式分包、加解密以及签名验签等技术,以此来提高固件数据传输的安全性,并且通过硬件接口实现蓝牙固件升级相比网络下载方式,可以提高数据传输速度。
附图说明
图1是本发明实施例1提供的一种固件升级方法的流程图;
图2是本发明实施例1提供的一种固件升级指令的处理流程图;
图3是本发明实施例2提供的一种固件升级方法的流程图;
图4是本发明实施例3提供的一种固件升级装置的组成框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。本发明中的固件升级装置优选为双芯片设备,具体包含有主控芯片(MCU)和蓝牙芯片,且所述主控芯片通过SWD接口(串行总线调试接口)与蓝牙芯片连接。
实施例1
如图1所示,本实施例提供的一种固件升级方法,包括以下步骤:
步骤101:主控芯片初始化,运行引导加载程序;
具体的,主控芯片对系统时钟、硬件IO(包含USB接口等)、定时器等进行初始化,并运行引导加载程序(Bootloader程序)。
步骤102:主控芯片判断是否跳转运行应用程序,是则执行步骤104,否则执行步骤103;
优选的,主控芯片根据标志位判断是否跳转运行应用程序(APP程序),例如,主控芯片从第一存储区(地址0x20000)读取标志位,并判断标志位是否置位,是则执行步骤104,否则执行步骤103。
步骤103:主控芯片从备份存储区读取固件数据写入到应用存储区,然后执行步骤101;
例如,主控芯片从备份存储区(地址0x20410)读取固件数据,并写入到应用存储区(地址0x4000)。
优选的,本步骤具体为,主控芯片先擦除应用存储区,然后从备份存储区读取固件数据写入到应用存储区,待写入完成后,擦除所述备份存储区。
步骤104:主控芯片接收上位机下发的指令;
优选的,主控芯片通过USB接口接收上位机下发的指令。
步骤105:主控芯片判断接收到的指令是否是固件升级指令,是则执行步骤107,否则执行步骤106;
具体的,主控芯片根据接收到的指令的第五个字节判断是否是固件升级指令,若第五个字节是0xBA则接收到的指令是固件升级指令,否则不是固件升级指令。
步骤106:主控芯片根据接收到的指令执行相应操作,然后执行步骤101;
例如,若主控芯片接收到的指令是初始化指令,则主控芯片执行初始化操作并向上位机返回初始化指令响应,然后执行步骤101。优选的,若所述指令的前四个字节等于0xFFFFFFFF则所述指令是初始化指令。
又例如,若主控芯片接收到的指令是获取版本号指令,则主控芯片获取当前固件版本号并向上位机返回包含所述当前固件版本号的获取版本号指令响应,然后执行步骤101。优选的,若所述指令的第五个字节等于0x85则所述指令是获取版本号指令。所述获取版本号指令响应中包含的当前固件版本号由固件主版本号和固件副版本号组成。
步骤107:主控芯片接收上位机下发的数据包,从数据包中获取固件数据和签名数据,将所述固件数据保存到备份存储区;
优选的,主控芯片通过USB接口接收上位机下发的数据包,主控芯片接收到的上位机下发的数据包的格式可以为:CID(4Bytes)+CMD(1Byte)+Lenth(2Bytes)+Main Serialnumber(4Bytes)+固件数据
CID(4Bytes)+00+固件数据
CID(4Bytes)+01+固件数据
CID(4Bytes)+02+固件数据
CID(4Bytes)+03+固件数据
还可以为:CID(4Bytes)+CMD(1Byte)+Lenth(2Bytes)+FF+签名数据
CID(4Bytes)+00+签名数据
CID(4Bytes)+01+签名数据
CID(4Bytes)+02+签名数据
CID(4Bytes)+03+签名数据
其中,CID为通道标识,本实施例中CID优选为0x0000EB79;CMD为命令类型标识,本实施例中CMD优选为0xBA;Main Serial number为固件数据包序号,例如0x00000000、0x01000000、0x02000000等。
例如:主控芯片接收到的数据包如下:
0000EB79BA010400000000<firmware bytes…>
0000EB7900<firmware bytes…>
0000EB7901<firmware bytes…>
0000EB7902<firmware bytes…>
0000EB7903<firmware bytes…>
0000EB79BA0104FF<signature bytes…>
0000EB7900<signature bytes…>
0000EB7901<signature bytes…>
0000EB7902<signature bytes…>
0000EB7903<signature bytes…>
则主控芯片获取所有的firmware bytes作为固件数据存储,获取所有的signature bytes作为签名数据存储。
步骤108:主控芯片对所述签名数据进行验签,若验签成功则返回执行步骤101,若验签失败则返回执行步骤104;
优选的,主控芯片获取预先存储的签名公钥,根据预先存储的签名公钥、当前备份存储区中存储的固件数据,对所述签名数据进行验签,若验签成功则返回执行步骤101,否则执行步骤104。
进一步的,上述步骤107还可以包括,主控芯片从固件数据中获取产品描述信息,并将所述固件数据中除产品描述信息之外的剩余固件数据保存到备份存储区。优选的,主控芯片获取固件数据的前16个字节数据作为产品描述信息,步骤108中若验签成功则进一步执行步骤109,具体如下:
步骤109:主控芯片判断所述产品描述信息是否正确,是则执行步骤110,否则执行步骤104;
优选的,主控芯片判断所述产品描述信息与预先存储的产品描述信息是否匹配,是则执行步骤110,否则执行步骤104。
步骤110:主控芯片根据所述产品描述信息判断所述固件数据是否是蓝牙固件数据,是则执行步骤111,否则执行步骤101;
优选的,所述产品描述信息的组成结构如下:
产品型号(1Bytes)+芯片型号(1Bytes)+USB固件数据长度(4Bytes)+蓝牙固件数据长度(4Bytes)+版本号(4Bytes)+保留字节(2Bytes)。
本步骤具体的,主控芯片根据产品描述信息的第7-10字节的取值判断所述固件数据是否包含蓝牙固件数据,若第7-10字节的取值不为0,则所述固件数据包含蓝牙固件数据,否则不包含蓝牙固件数据。
步骤111:主控芯片通过SWD接口向蓝牙芯片中写入所述蓝牙固件数据,返回执行步骤101。
进一步的,本实施例中,主控芯片对固件升级指令的接收以及处理流程,具体如图2所示,包括以下内容:
步骤a1、当主控芯片接收到上位机下发的固件升级指令时,向上位机返回成功响应数据,并等待接收上位机下发的数据包;
步骤a2、主控芯片接收上位机下发的数据包;
步骤a3、主控芯片判断接收到的数据包是否是固件数据的起始包,是则执行步骤a4,否则执行步骤a5;
进一步,步骤a2和步骤a3之间还可以包括,主控芯片判断所述数据包的格式是否正确,是则执行步骤a3,否则返回步骤a2;
步骤a4、主控芯片从所述起始包中解密出固件数据,从所述固件数据中获取产品描述信息存储到第二存储区,将所述固件数据中除所述产品描述信息之外的剩余数据存储到备份存储区,向上位机返回成功响应数据,返回步骤a2;
优选的,主控芯片采用预存的AES密钥从所述起始包中解密出固件数据。
例如,向上位机返回的成功响应数据为:
0000EB79BA0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000。
步骤a5、主控芯片判断接收到的数据包是否是固件数据的结束包,是则执行步骤a7,否则执行步骤a6;
步骤a6、主控芯片从所述数据包中解密出固件数据并存储到备份存储区,向上位机返回成功响应数据,返回步骤a2;
例如,向上位机返回的成功响应数据为:
0000EB79BA0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000。
步骤a7、主控芯片从所述结束包中解密出签名数据,根据预置密钥和当前备份存储区中存储的固件数据对所述签名数据进行验签;
优选的,预置密钥为RSA2048公钥。本步骤具体为,主控芯片使用RSA2048公钥对所述签名数据解密得到解密结果,对当前备份存储区中存储的的固件数据进行哈希计算得到哈希值,将所述解密结果与所述哈希值进行比对,若一致则验签成功,否则验签失败。
步骤a8、主控芯片判断是否验签成功,是则执行步骤a9,否则主控芯片报错,结束;
步骤a9、主控芯片判断第二存储区中的产品描述信息是否正确,是则执行步骤a10,否则主控芯片报错,结束;
步骤a10、主控芯片根据所述产品描述信息判断所述固件数据是否是蓝牙固件数据,是则执行步骤a11,否则结束;
步骤a11、主控芯片通过SWD接口向蓝牙芯片中写入所述蓝牙固件数据,结束。
本发明提供的固件升级方法,主控芯片接收到的上位机下发的所述固件数据采用了固定格式,并且使用了加密和签名技术,可有效提高固件数据传输的安全性,并且通过USB接口从上位机接收固件数据,然后通过SWD接口写入蓝牙芯片来实现蓝牙固件升级,可有效提高蓝牙固件数据升级的速度。
实施例2
如图3所示,本实施例提供的一种固件升级方法,包括以下步骤:
步骤201:MCU初始化;
步骤202:MCU从第一存储区中读取标志位;
步骤203:MCU判断所述标志位是否是第一预设值,是则执行步骤204,否则执行步骤206;
具体的,第一预设值等于0x55AA。
步骤204:MCU从备份存储区读取固件数据并写入到应用存储区;
优选的,MCU先擦除应用存储区,然后从备份存储区读取固件数据写入到应用存储区,待写入完成后,擦除所述备份存储区。
步骤205:MCU将第一存储区中所述标志位修改为第二预设值,返回执行步骤201;
具体的,第二预设值等于0x0000。
步骤206:MCU接收上位机下发的指令,并判断所述指令的类型,若是初始化指令则执行步骤207,若是固件升级指令则执行步骤209,若是其他指令则执行步骤208;
具体的,MCU接收上位机下发的指令,判断所述指令的前四个字节是否是0xFFFFFFFF,是则所述指令是初始化指令,否则根据所述指令的第五字节确定指令类型,若第五字节等于0xBA则所述指令是固件升级指令,否则所述指令是其他指令。
例如,初始化指令为:
FFFFFFFF8600081E14DA746C581E5500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;
固件升级指令为:
0000EB79BA0001FE0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000。
步骤207:MCU执行初始化操作,并向上位机返回包含通道标识的初始化指令响应数据,然后返回步骤206;
具体的,MCU执行初始化操作包括确定当前通信所使用的通道标识。本实施例中优选的,所述通道标识为0000EB79。
例如,初始化指令响应数据为:
FFFFFFFF8600111E14DA746C581E550000EB79020100030300000000000000000000000000000000000000000000000000000000000000000000000000000000。
步骤208:MCU根据接收到的指令执行相应操作,然后返回步骤206;
步骤209:MCU向上位机返回成功响应数据,并接收上位机下发的数据包;
例如,成功响应数据为:
0000EB79BA0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000。
进一步的,所述MCU向上位机返回成响应数据之前还包括,MCU判断接收到的固件升级指令的前四字节是否与MCU初始化操作确定的当前通道标识相符,是则MCU向上位机返回成功响应数据,否则MCU向上位机返回错误响应数据。
步骤210:MCU判断接收到的数据包是否是固件数据的起始包,是则执行步骤211,否则执行步骤213;
具体的,MCU根据接收到的数据包中包含的固件数据包序号判断是否是起始包,本实施例中优选的,MCU判断所述数据包的第八至十一字节是否等于0x00000000,是则所述数据包是起始包,执行步骤211,否则执行步骤213。
进一步的,本步骤还包括,MCU判断所述数据包的前四字节是否与当前通道标识相符,以及判断第五字节是否与用于表示固件升级指令的命令字节相符,以及判断第六和第七字节所表示的长度值是否与第七字节之后的数据长度相符,若上述判断均为是则所述MCU进一步判断所述数据包的第八至十一字节是否等于0x00000000,否则所述MCU向上位机返回错误响应数据。
步骤211:MCU从所述起始包中获取固件数据,从所述固件数据中获取产品描述信息写入到第二存储区,并将除产品描述信息之外的剩余固件数据写入到备份存储区,执行步骤212;
具体的,MCU根据所述起始包的数据格式,从所述起始包中获取固件数据,并获取所述固件数据的前16个字节作为产品描述信息写入到第二存储区,将所述固件数据的除前16个字节之外的剩余字节写入到备份存储区。
优选的,所述起始包的数据格式如下:
CID(4Bytes)+CMD(1Byte)+Lenth(2Bytes)+00000000+固件数据
CID(4Bytes)+00+固件数据
CID(4Bytes)+01+固件数据
CID(4Bytes)+02+固件数据
CID(4Bytes)+03+固件数据
其中,CID为通道标识,本实施例中CID优选为0x0000EB79;CMD为命令类型标识,本实施例中CMD优选为0xBA。
进一步的,本步骤还包括,MCU从所述起始包中获取固件数据长度值,根据所述所述固件数据长度值确定当前接收到的固件数据总长度并记录。
步骤212:MCU向上位机返回成功响应数据,返回步骤206;
例如,成功响应数据为:
0000EB79BA0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000。
步骤213:MCU判断接收到的数据包是否是固件数据的结束包,是则执行步骤215,否则执行步骤214;
具体的,MCU判断接收到的数据包的第八字节是否是0xFF,是则所述数据包是结束包,执行步骤215,否则执行步骤214。
例如,接收到的结束包如下:
0000EB79BA0101FF<signature bytes…>
0000EB7900<signature bytes…>
0000EB7901<signature bytes…>
0000EB7902<signature bytes…>
0000EB7903<signature bytes…>
其中,signature bytes为签名数据。
步骤214:MCU从所述数据包中获取固件数据写入到备份存储区,返回执行步骤212;
具体的,MCU根据所述数据包的格式从所述数据包中获取固件数据写入到备份存储区。
所述数据包的格式在实施例1中已有描述,在此不再赘述。
进一步的,本步骤还可以具体为,MCU从所述数据包中获取固件数据包序号、固件数据长度值和与所述固件数据长度值对应的固件数据,将获取的所述固件数据存储到备份存储区,根据所述固件数据包序号和所述固件数据长度值确定所述主控芯片当前接收到固件数据总长度并记录,返回执行步骤212。
例如,MCU根据所述固件数据包序号得到当前接收到的固件数据包个数,根据所述固件数据包个数和所述固件数据长度值相乘的结果得到所述固件数据总长度。
步骤215:MCU从所述结束包中获取签名数据,并对所述签名数据进行验签,若验签成功则执行步骤216,若验签失败则执行步骤206;
具体的,MCU从所述结束包中获取签名数据,使用内部存储的RSA2048公钥对所述签名数据解密得到解密结果,对当前备份存储区中存储的与当前记录的固件数据总长度对应的固件数据进行哈希计算得到哈希值,将所述解密结果与所述哈希值进行比对,若一致则验签成功,否则验签失败。
步骤216:MCU判断第二存储区中存储的产品描述信息是否正确,是则执行步骤217,否则返回执行步骤206;
具体的,MCU根据所述产品描述信息的前两个字节获取到产品型号和芯片型号,MCU判断获取到的产品型号和芯片型号与预先存储的产品型号和芯片型号是否匹配,是则执行步骤217,否则执行步骤206。
步骤217:MCU根据所述产品描述信息判断备份存储区中的固件数据的类型,若是蓝牙固件数据则执行步骤218,若是USB固件数据则执行步骤219;
具体的,产品描述信息的第三至第六字节为USB固件长度信息,产品描述信息的第七至第十字节为蓝牙固件长度信息。MCU对所述产品描述信息的第三至第六字节进行检查,若不为零,则固件数据类型为USB固件数据,MCU对所述产品描述信息的第七至第十字节进行检查,若不为零,则固件数据类型为蓝牙固件数据。
步骤218:MCU使用SWD接口将备份存储区中存储的固件数据写入到蓝牙芯片中,然后执行步骤219;
步骤219:MCU将第一存储区中所述标志位修改为第一预设值,然后返回步骤201。
例如,第一预设值等于0x55AA。
实施例3
本实施例提供的一种固件升级装置,如图4所示,包含有主控芯片300、备份存储区400和应用存储区500,所述主控芯片300包括第一收发模块301、第二收发模块302、第一判断模块303、第一获取模块304、第二获取模块305、验签模块306和写入模块307;
所述第一收发模块301,用于接收上位机下发的固件升级指令,并向上位机返回成功响应数据;
所述第二收发模块302,用于接收上位机下发的数据包,并触发第一判断模块303;以及用于收到第一获取模块304的触发时向上位机返回成功响应数据;
所述第一判断模块303,用于判断所述第二收发模块302接收到的所述数据包是否是结束包,是则触发第二获取模块305,否则触发第一获取模块304;
所述第一获取模块304,用于从所述第二收发模块302接收到的所数据包中获取固件数据包序号、固件数据长度值和与所述固件数据长度值对应的固件数据,将获取的所述固件数据存储到所述备份存储区400,根据所述固件数据包序号和所述固件数据长度值确定所述主控芯片300当前接收到固件数据总长度并记录,并触发所述第二收发模块302;
所述第二获取模块305,用于当所述第一判断模块303判断所述第二收发模块302接收到的所述数据包是结束包时从所述第二收发模块302接收到的所述结束包中获取签名数据,从备份存储区400中获取所述第一获取模块304记录的所述固件数据总长度对应的固件数据;
验签模块306,用于根据预置签名密钥和所述第二获取模块305获取的所述固件数据对所述第二获取模块305获取的所述签名数据进行验签,若验签成功则触发写入模块307,若验签失败则报错;
所述写入模块307,用于将所述备份存储区400中存储的与所述第一获取模块304记录的所述固件数据总长度对应的固件数据写入到应用存储区500。
本实施例中提及的指令、数据包的格式同实施例1或2中提及的数据格式,在此不再赘述。
实施例4
本实施例提供的一种固件升级装置,包含有主控芯片、备份存储区和应用存储区,所述主控芯片包括第一收发模块、第二收发模块、第一判断模块、第一获取模块、第二获取模块、验签模块和写入模块;
所述主控芯片还包括用于存储产品描述信息的第二存储区;
所述第一收发模块,用于接收上位机下发的固件升级指令,并向上位机返回成功响应数据;
所述第二收发模块,用于接收上位机下发的数据包,并触发第一判断模块;以及用于收到第一获取模块的触发时向上位机返回成功响应数据;
所述第一判断模块,用于判断所述第二收发模块接收到的所述数据包是否是结束包,是则触发第二获取模块,否则触发第一获取模块;还用于判断所述第二收发模块接收到的所述数据包是否是起始包。
本实施例中优选的,所述第一判断模块根据从所述数据包中获取的固件数据包序号判断所述数据包是否为起始包;所述第一判断模块具体用于判断所述第二收发模块接收到的所述数据包的第八字节是否是0xFF,是则触发第二获取模块,否则触发第一获取模块;
所述第一获取模块,用于当所述第一判断模块判断所述第二收发模块接收到的所述数据包是起始包时,从所述第二收发模块接收到的所数据包中获取固件数据包序号、固件数据长度值和与所述固件数据长度值对应的固件数据;将获取的所述固件数据存储到所述备份存储区,根据所述固件数据包序号和所述固件数据长度值确定所述主控芯片当前接收到固件数据总长度并记录,并触发所述第二收发模块;
本实施例中具体的,所述第一获取模块还用于当所述第一判断模块判断结果为是时,从所述第二收发模块接收到的所述起始包中获取固件数据长度值和与所述固件数据长度值对应的固件数据,从所述固件数据中获取产品描述信息存储到所述第二存储区,将所述固件数据中除所述产品描述信息之外的剩余数据存储到备份存储区,根据所述所述固件数据长度值确定当前接收到的固件数据总长度并记录,并触发所述第二收发模块。
所述第二获取模块,用于从所述第二收发模块接收到的所述结束包中获取签名数据,从备份存储区中获取所述第一获取模块记录的所述固件数据总长度对应的固件数据;
所述验签模块,用于根据预置签名密钥和所述第二获取模块获取的所述固件数据对所述第二获取模块获取的所述签名数据进行验签,若验签成功则触发第二判断模块,若验签失败则报错;
所述主控芯片还包括第二判断模块,所述第二判断模块用于判断所述第二存储区中的产品描述信息是否正确,是则触发所述写入模块,否则报错,结束。
所述写入模块,用于将所述备份存储区中存储的与所述第一获取模块记录的所述固件数据总长度对应的固件数据写入到应用存储区;
进一步的,本实施例中所述装置还包括蓝牙芯片;
所述第二判断模块,具体还用于当判断所述产品描述信息正确时,根据所述产品描述信息判断备份存储区中存储的所述固件数据是否是蓝牙固件数据,若是蓝牙固件数据,则所述主控芯片通过SWD接口向所述蓝牙芯片中写入所述蓝牙固件数据;否则触发所述写入模块。
所述主控芯片还包括复位模块、修改模块和用于存储标志位的第一存储区;
所述复位模块,用于上电初始化,并运行引导加载程序,以及用于判断是否跳转运行应用程序,是则触发第一收发模块,否则触发所述写入模块;
相应的,所述第一收发模块,用于接收上位机下发的指令并判断是否是固件升级指令,若是固件升级指令则向上位机返回成功响应数据,若是其他指令,则根据所述其他指令执行相应操作。
例如,所述第一收发模块,具体用于当接收到上位机下发的初始化指令时,执行初始化操作,并向上位机返回包含通道标识的初始化指令响应数据;还具体用于当接收到上位机下发的获取版本号指令时,获取当前固件版本号并向上位机返回包含所述当前固件版本号的获取版本号指令响应。
本实施例中优选的,所述第一收发模块,还具体用于判断接收到的上位机下发的指令的第五字节是否等于0xBA,是则确定接收到的所述指令是固件升级指令,否则确定接收到的所述指令是其他指令。
进一步的,所述复位模块,具体用于上电初始化,并运行引导加载程序,以及具体用于从所述第一存储区读取标志位,并判断所述标志位是否等于第一预设值,是则触发所述写入模块,否则跳转运行应用程序,触发所述第一收发模块;
所述修改模块,用于当所述验签模块验签成功时将所述第一存储区中存储的所述标志位修改为第一预设值,还用于当所述写入模块完成写入操作时将所述第一存储区中存储的所述标志位修改为第二预设值。
优选的,本实施例中所述写入模块,具体用于当收到触发时擦除所述应用存储区,并从所述备份存储区中读取所述固件数据写入到应用存储区。所述写入模块,还用于将读取的固件数据写入到应用存储区之后,擦除所述备份存储区。
本实施例中优选的,所述第一获取模块,具体用于采用预存的加解密密钥对所述第二收发模块接收到的所数据包进行解密,从中获取固件数据包序号、固件数据长度值和与所述固件数据长度值对应的固件数据,将获取的所述固件数据存储到所述备份存储区,根据所述固件数据包序号和所述固件数据长度值确定所述主控芯片当前接收到固件数据总长度并记录,并触发所述第二收发模块;
所述第二获取模块,具体用于采用预存的加解密密钥对所述第二收发模块接收到的所述结束包进行解密得到所述签名数据,以及从备份存储区中获取所述第一获取模块记录的所述固件数据总长度对应的固件数据。
本实施例中提及的指令、数据包和产品描述信息的格式同实施例1或2中提及的数据格式,在此不再赘述。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (26)
1.一种固件升级方法,其特征在于,包括:
步骤S1、主控芯片接收上位机下发的固件升级指令,并向上位机返回成功响应数据;
步骤S2、所述主控芯片接收上位机下发的数据包;
步骤S3、所述主控芯片判断所述数据包是否是结束包,是则执行步骤S4,否则所述主控芯片从所述数据包中获取固件数据包序号、固件数据长度值和与所述固件数据长度值对应的固件数据,将获取的所述固件数据存储到备份存储区,根据所述固件数据包序号和所述固件数据长度值确定所述主控芯片当前接收到固件数据总长度并记录,向上位机返回成功响应数据,返回步骤S2;
步骤S4、所述主控芯片从所述结束包中获取签名数据,根据预置签名密钥和当前备份存储区中存储的与所述固件数据总长度对应的固件数据对所述签名数据进行验签,若验签成功则所述主控芯片从所述备份存储区中读取与所述固件数据总长度对应的固件数据写入到应用存储区,完成固件升级,结束;若验签失败则主控芯片报错,结束。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2与步骤S3之间还包括:所述主控芯片判断接收到的数据包是否是起始包,是则所述主控芯片从所述起始包中获取固件数据长度值和固件数据,从所述固件数据中获取产品描述信息存储到第二存储区,将所述固件数据中除所述产品描述信息之外的剩余数据存储到备份存储区,根据所述所述固件数据长度值确定当前接收到的固件数据总长度并记录,向上位机返回成功响应数据,返回执行步骤S2;否则执行所述步骤S3。
3.根据权利要求2所述的方法,其特征在于,所述主控芯片判断接收到的数据包是否是起始包具体为:所述主控芯片获取接收到的数据包中包含的固件数据包序号,根据所述固件数据包序号判断所述数据包是否为固件数据的起始包。
4.根据权利要求2所述的方法,其特征在于,步骤S4中所述验签成功时还包括:
步骤S5、所述主控芯片判断第二存储区中的产品描述信息是否正确,是则执行步骤S4中所述主控芯片从所述备份存储区中读取与所述固件数据总长度对应的固件数据写入到应用存储区,完成固件升级,结束;否则所述主控芯片报错,结束。
5.根据权利要求4所述的方法,其特征在于,所述主控芯片判断所述产品描述信息正确时还包括:
步骤S6、所述主控芯片根据所述产品描述信息判断备份存储区中存储的所述固件数据是否是蓝牙固件数据,是则执行步骤S7,否则执行步骤S4中所述主控芯片从所述备份存储区中读取与所述固件数据总长度对应的固件数据写入到应用存储区,完成固件升级,结束;
步骤S7、所述主控芯片通过SWD接口向蓝牙芯片中写入所述蓝牙固件数据,完成固件升级,结束。
6.根据权利要求1所述的方法,其特征在于,所述主控芯片判断所述数据包是否是结束包具体为:所述主控芯片判断接收到的数据包的第八字节是否是0xFF,是则所述数据包是固件数据的结束包,否则所述数据包不是固件数据的结束包。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
步骤101:主控芯片上电初始化,运行引导加载程序;
步骤102:所述主控芯片判断是否跳转运行应用程序,是则执行步骤104,否则执行步骤103;
步骤103:所述主控芯片从备份存储区中读取固件数据写入到应用存储区,然后返回步骤101;
步骤104:所述主控芯片接收上位机下发的指令;
步骤105:所述主控芯片判断接收到的指令是否是固件升级指令,是则执行步骤S1所述向上位机返回成功响应数据,否则执行步骤106;
步骤106:所述主控芯片根据接收到的指令执行相应操作,然后返回步骤101。
8.根据权利要求7所述的方法,其特征在于,所述主控芯片判断是否跳转运行应用程序具体为:所述主控芯片从第一存储区读取标志位,判断所述标志位是否等于第一预设值,是则执行步骤103,否则跳转运行应用程序,执行所述步骤104;
所述步骤S4中所述验签成功时还包括修改所述标志位为第一预设值;所述步骤103中所述返回步骤101之前还包括修改所述标志位为第二预设值。
9.根据权利要求7所述的方法,其特征在于,所述主控芯片判断接收到的指令是否是固件升级指令具体为:所述主控芯片判断接收到的所述指令的第五字节是否等于0xBA,是则所述指令是固件升级指令,否则所述固件指令不是固件升级指令。
10.根据权利要求1所述的方法,其特征在于,所述主控芯片从所述备份存储区中读取与所述固件数据总长度对应的固件数据写入到应用存储区具体为,所述主控芯片先擦除所述应用存储区,然后从所述备份存储区中读取与所述固件数据总长度对应的固件数据写入到应用存储区。
11.根据权利要求10所述的方法,其特征在于,所述主控芯片从所述备份存储区读取与所述固件数据总长度对应的固件数据写入到应用存储区之后还包括,所述主控芯片擦除所述备份存储区。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述主控芯片接收到上位机下发的初始化指令时,所述主控芯片执行初始化操作,并向上位机返回包含通道标识的初始化指令响应数据;当所述主控芯片接收到上位机下发的获取版本号指令时,所述主控芯片获取当前固件版本号并向上位机返回包含所述当前固件版本号的获取版本号指令响应。
13.根据权利要求1所述的方法,其特征在于,所述主控芯片从所述数据包中获取与所述固件数据长度值对应的固件数据具体为:所述主控芯片采用预存的加解密密钥对所述数据包进行解密得到所述与所述固件数据长度值对应的固件数据;所述主控芯片从所述结束包中获取签名数据具体为:所述主控芯片采用所述预存的加解密密钥对所述结束包进行解密得到所述签名数据。
14.一种固件升级装置,包含有主控芯片、备份存储区和应用存储区,其特征在于:所述主控芯片包括第一收发模块、第二收发模块、第一判断模块、第一获取模块、第二获取模块、验签模块和写入模块;
所述第一收发模块,用于接收上位机下发的固件升级指令,并向上位机返回成功响应数据;
所述第二收发模块,用于接收上位机下发的数据包,并触发第一判断模块;以及用于收到第一获取模块的触发时向上位机返回成功响应数据;
所述第一判断模块,用于判断所述第二收发模块接收到的所述数据包是否是结束包,是则触发第二获取模块,否则触发第一获取模块;
所述第一获取模块,用于从所述第二收发模块接收到的所数据包中获取固件数据包序号、固件数据长度值和与所述固件数据长度值对应的固件数据,将获取的所述固件数据存储到所述备份存储区,根据所述固件数据包序号和所述固件数据长度值确定所述主控芯片当前接收到固件数据总长度并记录,并触发所述第二收发模块;
所述第二获取模块,用于当所述第一判断模块判断所述第二收发模块接收到的所述数据包是结束包时从所述第二收发模块接收到的所述结束包中获取签名数据,从备份存储区中获取所述第一获取模块记录的所述固件数据总长度对应的固件数据;
验签模块,用于根据预置签名密钥和所述第二获取模块获取的所述固件数据对所述第二获取模块获取的所述签名数据进行验签,若验签成功则触发写入模块,若验签失败则报错;
所述写入模块,用于将所述备份存储区中存储的与所述第一获取模块记录的所述固件数据总长度对应的固件数据写入到应用存储区。
15.根据权利要求14所述的装置,其特征在于:所述主控芯片还包括用于存储产品描述信息的第二存储区;
所述第一判断模块,还用于判断所述第二收发模块接收到的所述数据包是否是起始包;
所述第一获取模块,还用于当所述第一判断模块判断所述第二收发模块接收到的所述数据包是起始包时,从所述第二收发模块接收到的所述起始包中获取固件数据长度值和与所述固件数据长度值对应的固件数据,从所述固件数据中获取产品描述信息存储到所述第二存储区,将所述固件数据中除所述产品描述信息之外的剩余数据存储到备份存储区,根据所述所述固件数据长度值确定当前接收到的固件数据总长度并记录,并触发所述第二收发模块。
16.根据权利要求15所述的装置,其特征在于:所述第一判断模块,具体用于根据从所述数据包中获取的固件数据包序号判断所述数据包是否为起始包。
17.根据权利要求15所述的装置,其特征在于:所述主控芯片还包括第二判断模块;当所述验签模块执行验签成功时则触发第二判断模块;
所述第二判断模块,用于判断所述第二存储区中的产品描述信息是否正确,是则触发所述写入模块,否则报错。
18.根据权利要求17所述的装置,其特征在于:所述装置还包括蓝牙芯片;
所述第二判断模块,具体还用于当判断所述产品描述信息正确时,根据所述产品描述信息判断备份存储区中存储的所述固件数据是否是蓝牙固件数据,若是蓝牙固件数据,则所述主控芯片通过SWD接口向所述蓝牙芯片中写入所述蓝牙固件数据;否则触发所述写入模块。
19.根据权利要求14所述的装置,其特征在于:所述第一判断模块,用于判断所述第二收发模块接收到的所述数据包的第八字节是否是0xFF,是则触发第二获取模块,否则触发第一获取模块。
20.根据权利要求14所述的装置,其特征在于:所述主控芯片,还包括复位模块;
所述复位模块,用于上电初始化,并运行引导加载程序,以及用于判断是否跳转运行应用程序,是则触发第一收发模块,否则触发所述写入模块;
所述第一收发模块,用于接收上位机下发的指令并判断是否是固件升级指令,若是固件升级指令则向上位机返回成功响应数据,若是其他指令,则根据所述其他指令执行相应操作。
21.根据权利要求20所述的装置,其特征在于:所述主控芯片还包括用于存储标志位的第一存储区;
所述复位模块,具体用于上电初始化,并运行引导加载程序,以及具体用于从所述第一存储区读取标志位,并判断所述标志位是否等于第一预设值,是则触发所述写入模块,否则跳转运行应用程序,触发所述第一收发模块;
所述主控芯片还包括修改模块,用于当所述验签模块验签成功时将所述第一存储区中存储的所述标志位修改为第一预设值,还用于当所述写入模块完成写入操作时将所述第一存储区中存储的所述标志位修改为第二预设值。
22.根据权利要求20所述的装置,其特征在于:所述第一收发模块,还具体用于判断接收到的上位机下发的指令的第五字节是否等于0xBA,是则确定接收到的所述指令是固件升级指令,否则确定接收到的所述指令是其他指令。
23.根据权利要求14或20所述的装置,其特征在于:所述写入模块,具体用于当收到触发时擦除所述应用存储区,并从所述备份存储区中读取所述固件数据写入到应用存储区。
24.根据权利要求23所述的装置,其特征在于:所述写入模块,还用于将读取的固件数据写入到应用存储区之后,擦除所述备份存储区。
25.根据权利要求14所述的装置,其特征在于:所述第一收发模块,还具体用于当接收到上位机下发的初始化指令时,执行初始化操作,并向上位机返回包含通道标识的初始化指令响应数据;还具体用于当接收到上位机下发的获取版本号指令时,获取当前固件版本号并向上位机返回包含所述当前固件版本号的获取版本号指令响应。
26.根据权利要求14所述的装置,其特征在于:所述第一获取模块,具体用于采用预存的加解密密钥对所述第二收发模块接收到的所数据包进行解密,从中获取固件数据包序号、固件数据长度值和与所述固件数据长度值对应的固件数据,将获取的所述固件数据存储到所述备份存储区,根据所述固件数据包序号和所述固件数据长度值确定所述主控芯片当前接收到固件数据总长度并记录,并触发所述第二收发模块;
所述第二获取模块,具体用于采用预存的加解密密钥对所述第二收发模块接收到的所述结束包进行解密得到所述签名数据,以及从备份存储区中获取所述第一获取模块记录的所述固件数据总长度对应的固件数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710915238.0A CN107634859B (zh) | 2017-09-30 | 2017-09-30 | 一种固件升级方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710915238.0A CN107634859B (zh) | 2017-09-30 | 2017-09-30 | 一种固件升级方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107634859A true CN107634859A (zh) | 2018-01-26 |
CN107634859B CN107634859B (zh) | 2021-07-02 |
Family
ID=61103874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710915238.0A Active CN107634859B (zh) | 2017-09-30 | 2017-09-30 | 一种固件升级方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107634859B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196867A (zh) * | 2018-03-08 | 2018-06-22 | 深圳市文鼎创数据科技有限公司 | 设备的固件升级装置、设备及其固件升级方法 |
CN109358893A (zh) * | 2018-12-10 | 2019-02-19 | 武汉精立电子技术有限公司 | 一种fpga程序的在线升级方法、装置及系统 |
CN109445705A (zh) * | 2018-10-29 | 2019-03-08 | 湖南国科微电子股份有限公司 | 固件认证方法及固态硬盘 |
CN109634631A (zh) * | 2018-11-01 | 2019-04-16 | 北京锦鸿希电信息技术股份有限公司 | 固件恢复方法、装置、电子设备及固件恢复系统 |
CN109767579A (zh) * | 2018-11-29 | 2019-05-17 | 福建新大陆支付技术有限公司 | 智能pos的modem固件更新方法、pos系统及存储介质 |
CN109977044A (zh) * | 2019-03-27 | 2019-07-05 | 歌尔科技有限公司 | Usb设备枚举检测方法和系统及固件升级方法和系统 |
CN110187899A (zh) * | 2019-06-04 | 2019-08-30 | 深圳云里物里科技股份有限公司 | 一种固件烧写方法、装置及其相关设备 |
CN110366063A (zh) * | 2019-07-26 | 2019-10-22 | 歌尔科技有限公司 | 一种无线耳机的升级方法、装置及充电盒 |
CN111786820A (zh) * | 2020-06-16 | 2020-10-16 | 浙江国利网安科技有限公司 | 固件更新方法、装置及网络设备 |
CN111818106A (zh) * | 2020-09-14 | 2020-10-23 | 飞天诚信科技股份有限公司 | 一种数据传输的方法及设备 |
CN112394663A (zh) * | 2020-11-12 | 2021-02-23 | 深圳市泰比特科技有限公司 | 一种共享电单车中控接口线升级方法及装置 |
CN112947978A (zh) * | 2021-04-01 | 2021-06-11 | 深圳市斯尔顿科技有限公司 | 基于芯片usbhid升级固件的方法、终端设备及计算机可读存储介质 |
CN115226094A (zh) * | 2022-07-08 | 2022-10-21 | 深圳市中易腾达科技股份有限公司 | 一种自动识别蓝牙芯片类型的ota升级方法及系统 |
CN116847019A (zh) * | 2023-07-12 | 2023-10-03 | 荣耀终端有限公司 | 通讯异常处理方法、电子设备和计算机可读存储介质 |
WO2024114796A1 (zh) * | 2022-12-01 | 2024-06-06 | 长城汽车股份有限公司 | 车辆的usb固件升级的方法、装置及车辆 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070223521A1 (en) * | 2006-03-27 | 2007-09-27 | Sony Corporation | Information processing system, information processing apparatus and integrated circuit chip |
CN101447012A (zh) * | 2008-12-22 | 2009-06-03 | 深圳华为通信技术有限公司 | 一种电子设备和电子设备中固件的验证方法 |
CN101808100A (zh) * | 2010-01-26 | 2010-08-18 | 北京深思洛克软件技术股份有限公司 | 一种解决信息安全设备远程升级重放性的方法和系统 |
CN102035875A (zh) * | 2009-10-04 | 2011-04-27 | 梅兰诺克斯科技有限公司 | 块签名和事务签名的处理 |
CN102981881A (zh) * | 2012-12-10 | 2013-03-20 | 中兴通讯股份有限公司 | 一种防止移动终端升级到非法固件版本的方法及系统 |
CN105159707A (zh) * | 2015-08-14 | 2015-12-16 | 飞天诚信科技股份有限公司 | 一种安全的金融终端的固件烧写方法及金融终端 |
CN106899437A (zh) * | 2017-02-23 | 2017-06-27 | 百富计算机技术(深圳)有限公司 | 一种升级pos机模块固件的方法和装置 |
CN107135074A (zh) * | 2016-02-29 | 2017-09-05 | 中兴通讯股份有限公司 | 一种高级安全方法和装置 |
-
2017
- 2017-09-30 CN CN201710915238.0A patent/CN107634859B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070223521A1 (en) * | 2006-03-27 | 2007-09-27 | Sony Corporation | Information processing system, information processing apparatus and integrated circuit chip |
CN101447012A (zh) * | 2008-12-22 | 2009-06-03 | 深圳华为通信技术有限公司 | 一种电子设备和电子设备中固件的验证方法 |
CN102035875A (zh) * | 2009-10-04 | 2011-04-27 | 梅兰诺克斯科技有限公司 | 块签名和事务签名的处理 |
CN101808100A (zh) * | 2010-01-26 | 2010-08-18 | 北京深思洛克软件技术股份有限公司 | 一种解决信息安全设备远程升级重放性的方法和系统 |
CN102981881A (zh) * | 2012-12-10 | 2013-03-20 | 中兴通讯股份有限公司 | 一种防止移动终端升级到非法固件版本的方法及系统 |
CN105159707A (zh) * | 2015-08-14 | 2015-12-16 | 飞天诚信科技股份有限公司 | 一种安全的金融终端的固件烧写方法及金融终端 |
CN107135074A (zh) * | 2016-02-29 | 2017-09-05 | 中兴通讯股份有限公司 | 一种高级安全方法和装置 |
CN106899437A (zh) * | 2017-02-23 | 2017-06-27 | 百富计算机技术(深圳)有限公司 | 一种升级pos机模块固件的方法和装置 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196867A (zh) * | 2018-03-08 | 2018-06-22 | 深圳市文鼎创数据科技有限公司 | 设备的固件升级装置、设备及其固件升级方法 |
CN109445705B (zh) * | 2018-10-29 | 2022-03-22 | 湖南国科微电子股份有限公司 | 固件认证方法及固态硬盘 |
CN109445705A (zh) * | 2018-10-29 | 2019-03-08 | 湖南国科微电子股份有限公司 | 固件认证方法及固态硬盘 |
CN109634631A (zh) * | 2018-11-01 | 2019-04-16 | 北京锦鸿希电信息技术股份有限公司 | 固件恢复方法、装置、电子设备及固件恢复系统 |
CN109767579A (zh) * | 2018-11-29 | 2019-05-17 | 福建新大陆支付技术有限公司 | 智能pos的modem固件更新方法、pos系统及存储介质 |
CN109358893A (zh) * | 2018-12-10 | 2019-02-19 | 武汉精立电子技术有限公司 | 一种fpga程序的在线升级方法、装置及系统 |
CN109977044A (zh) * | 2019-03-27 | 2019-07-05 | 歌尔科技有限公司 | Usb设备枚举检测方法和系统及固件升级方法和系统 |
CN110187899A (zh) * | 2019-06-04 | 2019-08-30 | 深圳云里物里科技股份有限公司 | 一种固件烧写方法、装置及其相关设备 |
CN110366063A (zh) * | 2019-07-26 | 2019-10-22 | 歌尔科技有限公司 | 一种无线耳机的升级方法、装置及充电盒 |
CN111786820A (zh) * | 2020-06-16 | 2020-10-16 | 浙江国利网安科技有限公司 | 固件更新方法、装置及网络设备 |
CN111818106B (zh) * | 2020-09-14 | 2020-12-11 | 飞天诚信科技股份有限公司 | 一种数据传输的方法及设备 |
CN111818106A (zh) * | 2020-09-14 | 2020-10-23 | 飞天诚信科技股份有限公司 | 一种数据传输的方法及设备 |
CN112394663A (zh) * | 2020-11-12 | 2021-02-23 | 深圳市泰比特科技有限公司 | 一种共享电单车中控接口线升级方法及装置 |
CN112947978A (zh) * | 2021-04-01 | 2021-06-11 | 深圳市斯尔顿科技有限公司 | 基于芯片usbhid升级固件的方法、终端设备及计算机可读存储介质 |
CN115226094A (zh) * | 2022-07-08 | 2022-10-21 | 深圳市中易腾达科技股份有限公司 | 一种自动识别蓝牙芯片类型的ota升级方法及系统 |
WO2024114796A1 (zh) * | 2022-12-01 | 2024-06-06 | 长城汽车股份有限公司 | 车辆的usb固件升级的方法、装置及车辆 |
CN116847019A (zh) * | 2023-07-12 | 2023-10-03 | 荣耀终端有限公司 | 通讯异常处理方法、电子设备和计算机可读存储介质 |
CN116847019B (zh) * | 2023-07-12 | 2024-06-25 | 荣耀终端有限公司 | 通讯异常处理方法、电子设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107634859B (zh) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107634859A (zh) | 一种固件升级方法及装置 | |
CN103197943A (zh) | 一种单片机在线升级方法和系统 | |
CN109710296A (zh) | 一种空天飞机惯导嵌入式软件在线更新方法 | |
CN105183523A (zh) | 一种dsp程序的远程升级方法 | |
CN110333881A (zh) | 一种基于星载fpga处理的载荷类设备软件在轨重构方法 | |
CN103745167A (zh) | 单片机的iap方法及装置 | |
CN102004657B (zh) | 一种电子设备及其升级方法 | |
CN112947977A (zh) | 一种软件在线升级方法及系统 | |
US20130067455A1 (en) | Memory online update system and method | |
CN104461859B (zh) | 一种支持nvm软断点调试的仿真器和方法 | |
CN107463341A (zh) | Flash芯片的擦除方法、装置和移动终端 | |
US8943488B2 (en) | Video game forward compatibility including software patching | |
CN107844305A (zh) | 嵌入式设备的软件升级方法及嵌入式设备 | |
CN110337036A (zh) | 机顶盒的升级方法、装置及存储介质 | |
KR20090055074A (ko) | 이동통신단말기의 트랜잭션 단위 펌웨어 업그레이드 방법및 이를 이용한 펌웨어 업그레이드 시스템 | |
CN108153548A (zh) | 一种emmc固件升级方法和装置 | |
CN106020868A (zh) | 一种智能卡固件更新方法及系统 | |
CN103092648A (zh) | 一种镜像升级方法、系统及用户设备和个人计算机 | |
CN109358891B (zh) | 一种嵌入式控制器的dsp软件升级方法及系统 | |
CN106952426A (zh) | 数据处理方法及装置 | |
CN101790029A (zh) | 一种对机顶盒进行读写操作的方法 | |
CN112181460A (zh) | 程序固件升级方法、装置、电子设备及存储介质 | |
CN106775904A (zh) | 一种微控制器嵌入式系统的程序烧写系统及方法 | |
CN107515757A (zh) | 软件程序升级方法和系统、终端 | |
CN111459468A (zh) | 高可靠性串口通讯的dsp程序在线升级系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
OL01 | Intention to license declared |