CN106843942B - 穿戴式设备的固件升级方法及穿戴式设备 - Google Patents
穿戴式设备的固件升级方法及穿戴式设备 Download PDFInfo
- Publication number
- CN106843942B CN106843942B CN201611270285.6A CN201611270285A CN106843942B CN 106843942 B CN106843942 B CN 106843942B CN 201611270285 A CN201611270285 A CN 201611270285A CN 106843942 B CN106843942 B CN 106843942B
- Authority
- CN
- China
- Prior art keywords
- data
- firmware
- upgrading
- group
- data packets
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明涉及通信技术领域,尤其涉及一种穿戴式设备的固件升级方法及穿戴式设备,在一种穿戴式设备的固件升级方法中,穿戴式设备在接收到移动终端下发的固件升级数据时,对固件升级数据进行完整性校验。在对固件升级数据完整性校验通过后,根据固件升级数据中的描述信息,从固件升级数据中读取各个固件的升级数据。将各个固件的升级数据对应存储到各个固件的对应区域中。对存储到各个固件的对应区域的升级数据进行校验。在对各个固件的对应区域的升级数据校验通过后,根据对应区域中的升级数据,升级各个固件。由此,可以提高穿戴式设备的固件升级的全面性,从而可以很好的满足用户的需求。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种穿戴式设备的固件升级方法及穿戴式设备。
背景技术
近年来,穿戴式设备发展如火如荼,市场上穿戴式设备(如,智能手环、智能手表、智能眼镜等)如雨后春笋般涌现,穿戴式设备正从概念热走向产品热,不少穿戴式设备已经融入大众的生活,涉及到的生活领域有:娱乐控制、儿童监护、健康医疗,智能家居、智能服饰,智能通信等等,市场前景非常广阔。穿戴式设备有望成为继智能手机、平板电脑后全球信息技术产业的新增长点。
同穿戴式设备的丰富种类一样,具体到某一款穿戴式设备,设备软件更迭速度非常之快,人机交互和功能需求越来越复杂。为了满足更复杂的人机交互和功能需求,传统技术中,主要是通过对穿戴式设备的固件进行升级的方式来实现。然而,现有的固件升级方法,通常只能升级穿戴式设备中的部分固件,也即不能对穿戴式设备的固件进行全面升级,从而不能很好的满足用户的需求。
发明内容
本发明描述了一种穿戴式设备的固件升级方法及穿戴式设备,可以提高穿戴式设备的固件升级的全面性,从而可以很好的满足用户的需求。
第一方面,提供了一种穿戴式设备的固件升级方法,包括:
穿戴式设备接收移动终端下发的固件升级数据,所述固件升级数据包括头部信息以及所述穿戴式设备的各个固件的升级数据,所述头部信息包括所述各个固件的升级数据的描述信息;
对所述固件升级数据进行完整性校验;
在对所述固件升级数据完整性校验通过后,根据所述描述信息,从所述固件升级数据中读取所述各个固件的升级数据;
将所述各个固件的升级数据对应存储到所述各个固件的对应区域中;
对存储到各个固件的对应区域的升级数据进行校验;
在对所述各个固件的对应区域的升级数据校验通过后,根据所述对应区域中的升级数据,升级所述各个固件。
在一种可能的实现方式中,所述固件升级数据由至少一组数据包构成,其中,每组数据包包括至少一个数据包;所述穿戴式设备接收移动终端下发的固件升级数据,包括:
所述穿戴式设备接收固件升级数据中的各组数据包;
当接收完成所述各组数据包中的一组数据包时,向所述移动终端返回用于指示所述一组数据包中的每个数据包是否接收正确的指示消息,所述指示消息用于指示所述移动终端向所述穿戴式设备重传所述一组数据包中接收不正确的数据包。
在另一种可能的实现方式中,还包括:
预先配置各组数据包对应的比特图,所述比特图中的bit位与所述各组数据包中的数据包相对应;
所述穿戴式设备接收固件升级数据中的各组数据包中的一组数据包,包括:
所述穿戴式设备接收所述一组数据包中的各个数据包,判断当前数据包是否接收正确;若接收不正确,则将所述一组数据包对应的比特图中当前数据包对应的bit位置为第一标识信息;若接收正确,则将所述一组数据包对应的比特图中当前数据包对应的bit位置为第二标识信息;
所述向所述移动终端返回用于指示所述一组数据包中的每个数据包是否接收正确的指示消息,包括:
根据所述一组数据包对应的比特图中各bit位的第一标识消息和/或第二标识信息,向所述移动终端返回用于指示所述一组数据包中的每个数据包是否接收正确的指示消息。
在再一种可能的实现方式中,所述固件升级数据还包括所述固件升级数据的密文信息,所述头部信息还包括所述密文信息的描述信息,所述对所述固件升级数据进行完整性校验,包括:
根据预设的第一算法,计算所述固件升级数据的哈希值;
根据所述密文信息的描述信息,从所述固件升级数据中获取所述密文信息;
将所述固件升级数据的哈希值与所述密文信息进行比对,若比对一致,则对所述固件升级数据完整性校验通过;若比对不一致,则对所述固件升级数据完整性校验不通过。
在又一种可能的实现方式中,所述描述信息包括所述各个固件的升级数据的校验信息,所述对存储到各个固件的对应区域的升级数据进行校验,包括:
根据预设的第二算法,计算所述各个固件的对应区域的升级数据的校验值;
将所述各个固件的对应区域的升级数据的校验值与对应的校验信息进行比对;
若比对一致,则对所述各个固件的对应区域的升级数据校验成功;
若比对不一致,则对所述各个固件的对应区域的升级数据校验不成功。
第二方面,提供了一种穿戴式设备,包括:
接收单元,用于接收移动终端下发的固件升级数据,所述固件升级数据包括头部信息以及穿戴式设备的各个固件的升级数据,所述头部信息包括所述各个固件的升级数据的描述信息;
校验单元,用于对所述接收单元接收的所述固件升级数据进行完整性校验;
读取单元,用于在所述校验单元对所述固件升级数据完整性校验通过后,根据所述描述信息,从所述固件升级数据中读取所述各个固件的升级数据;
存储单元,用于将所述读取单元读取的所述各个固件的升级数据对应存储到所述各个固件的对应区域中;
所述校验单元,还用于对所述存储单元存储到各个固件的对应区域的升级数据进行校验;
升级单元,用于在所述校验单元对所述各个固件的对应区域的升级数据校验通过后,根据所述对应区域中的升级数据,升级所述各个固件。
在一种可能的实现方式中,所述固件升级数据由至少一组数据包构成,其中,每组数据包包括至少一个数据包;
所述接收单元具体用于:
接收固件升级数据中的各组数据包;
当接收完成所述各组数据包中的一组数据包时,向所述移动终端返回用于指示所述一组数据包中的每个数据包是否接收正确的指示消息,所述指示消息用于指示所述移动终端向重传所述一组数据包中接收不正确的数据包。
在另一种可能的实现方式中,还包括:
配置单元,用于预先配置各组数据包对应的比特图,所述比特图中的bit位与所述各组数据包中的数据包相对应;
所述接收单元还具体用于:
接收所述一组数据包中的各个数据包,判断当前数据包是否接收正确;若接收不正确,则将所述一组数据包对应的比特图中当前数据包对应的bit位置为第一标识信息;若接收正确,则将所述一组数据包对应的比特图中当前数据包对应的bit位置为第二标识信息;
根据所述一组数据包对应的比特图中各bit位的第一标识消息和/或第二标识信息,向所述移动终端返回用于指示所述一组数据包中的每个数据包是否接收正确的指示消息。
在再一种可能的实现方式中,所述固件升级数据还包括所述固件升级数据的密文信息,所述头部信息还包括所述密文信息的描述信息,所述校验单元具体用于:
根据预设的第一算法,计算所述固件升级数据的哈希值;
根据所述密文信息的描述信息,从所述固件升级数据中获取所述密文信息;
将所述固件升级数据的哈希值与所述密文信息进行比对,若比对一致,则对所述固件升级数据完整性校验通过;若比对不一致,则对所述固件升级数据完整性校验不通过。
在又一种可能的实现方式中,所述描述信息包括所述各个固件的升级数据的校验信息,所述校验单元还具体用于:
根据预设的第二算法,计算所述各个固件的对应区域的升级数据的校验值;
将所述各个固件的对应区域的升级数据的校验值与对应的校验信息进行比对;
若比对一致,则对所述各个固件的对应区域的升级数据校验成功;
若比对不一致,则对所述各个固件的对应区域的升级数据校验不成功。
本发明提供的穿戴式设备的固件升级方法及穿戴式设备,穿戴式设备在接收到移动终端下发的固件升级数据时,对固件升级数据进行完整性校验。在对固件升级数据完整性校验通过后,根据固件升级数据中的描述信息,从固件升级数据中读取各个固件的升级数据。将各个固件的升级数据对应存储到各个固件的对应区域中。对存储到各个固件的对应区域的升级数据进行校验。在对各个固件的对应区域的升级数据校验通过后,根据对应区域中的升级数据,升级各个固件。由此,可以提高穿戴式设备的固件升级的全面性,从而可以很好的满足用户的需求。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明提供的穿戴式设备的示意图;
图2为本发明提供的穿戴式设备的MCU的示意图;
图3为本发明一种实施例提供的穿戴式设备的固件升级方法流程图;
图4为本发明提供的应答机制的流程图;
图5为本发明提供的校验机制的流程图;
图6为本发明一种实施例提供的穿戴式设备的示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
本发明实施例提供的穿戴式设备的固件升级方法适用于对如图1所示的穿戴式设备的固件(也称组件(Component))进行升级的场景。图1中,穿戴式设备主要包括两大模块:微控制单元(Microcontroller Unit,MCU)10和蓝牙模块20,其中,MCU10可以用于实时采集、处理各个传感器所感知的数据,运动算法执行、读写外部Flash、用户界面(UserInterface,UI)模块30显示控制等。蓝牙模块20可以是指蓝牙低功耗(Bluetooth LowEnergy,BLE)模块,其可以与移动终端进行无线数据交互、与MCU10进行数据通信,并将数据以无线的方式传送到移动终端。因此,本发明中,穿戴式设备的固件升级可以包括对MCU10和蓝牙模块20等的升级。
需要说明的是,图1中的MCU10还可以包括内部Flash,该内部Flash可以如图2所示,图2中,该内部Flash可以包括四个模块:启动加载模块(BootLoader)101、标示模块(Flag)102、信息控制模块(Info control)103以及MCU应用模块(MCU Application)104,其中,BootLoader101可以用于从外部Flash中拷贝数据至MCU Application 104、蓝牙模块20以及用户界面模块30的对应区域中,还可以用于引导Application启动等。Flag102可以用于写入穿戴式设备关机时需要保存的变量,如,升级标识等。Info control103用于存储用户数据或日志(log)数据等。MCU Application 104是整个MCU10的运行区域,其可以用于将从移动终端接收的固件升级数据存储至外部Flash中。
图3为本发明一种实施例提供的穿戴式设备的固件升级方法流程图。所述方法的执行主体可以为具有处理能力的设备:服务器或者系统或者装置,如,图1中的穿戴式设备。如图3所示,所述方法具体可以包括:
步骤310,穿戴式设备接收移动终端下发的固件升级数据。
该固件升级数据可以包括头部信息以及穿戴式设备中各个固件的升级数据,该头部信息可以包括各个固件的升级数据的描述信息。
以固件升级数据为固件升级模式(Development Firmware Upgrade,DFU)数据为例来说,该DFU数据可以如表1所示。
表1
DFU Header | MCU DATA | UI DATA | BLE DATA |
表1中,DFU数据包括DFU头部(Header)信息、固件MCU的升级数据(MCU DATA)、固件UI的升级数据(UI DATA)以及固件BLE的升级数据(BLE DATA),也即通过该DFU数据可以升级穿戴式设备的三个固件。其中,DFU Header信息又可以如表2所示。
表2
表1中,字段Index的内容为各个固件的索引值,字段StartAddress的内容为各个固件的升级数据的起始地址,字段Length的内容为各个固件的升级数据的长度,字段CRC16的内容为各个固件的升级数据的循环冗余校验(Cyclic Redundancy Check,CRC)值,字段Version的内容为各个固件的升级数据的版本号,字段Reserved为预留字节,可供后续使用。
由以上可以看出,本发明中的固件升级数据可以同时包括多个固件的升级数据,从而后续可以根据该多个固件的升级数据,对多个固件进行升级,避免了现有技术中只能对一个固件进行升级而导致的固件升级不全面的问题。
需要说明的是,移动终端可以通过数据包(也称帧)的形式向穿戴式设备下发固件升级数据。其中,该数据包可以如表3所示。
表3
Header | Payload | CRC |
其中,Header用来区分该数据包是固件升级数据,Payload是每个数据包数据携带的有效载荷,CRC是每包数据的校验和。
当上述固件升级数据通过数据包的形式发送时,为了提高数据传输的高效性,移动终端与穿戴式设备可以预先商定应答机制,也即穿戴式设备在接收到多少个数据包时,向移动终端返回应答ACK消息。以商定的应答机制为:穿戴式设备在接收到N(N为正整数)个数据包时,向移动终端返回ACK消息为例来说,该N个数据包可以组成一组数据包。也即上述固件升级数据由至少一组数据包构成,其中,每组数据包包括至少一个数据包。
在一种实现方式中,穿戴式设备为了标识移动终端下发的各组数据包中的每个数据包是否接收正确,可以预先配置各组数据包对应的比特图(bitmap),该bitmap中的bit位与各组数据包中的数据包相对应。以穿戴式设备接收一组数据包为例来说,穿戴式设备接收一组数据包中的各个数据包,判断当前数据包是否接收正确,若接收不正确,则将该一组数据包对应的bitmap中当前数据包对应的bit位置为第一标识信息;若接收正确,则将该一组数据包对应的bitmap中当前数据包对应的bit位置为第二标识信息。根据该一组数据包对应的bitmap中各bit位的第一标识消息和/或第二标识信息,向移动终端返回用于指示该一组数据包中的每个数据包是否接收正确的指示消息。该指示消息用于指示移动终端向穿戴式设备重传该一组数据包中接收不正确的数据包。
举例来说,以商定的应答机制为:穿戴式设备在接收到32个数据包时,向移动终端返回ACK消息为例来说,可以在穿戴式设备端预置一个bitmap,该bitmap可以为:[0b00000000,0b0000 0000,0b0000 0000,0b0000 0000],分别代表32个数据包(bit31 bit30….bit1 bit0)。将上述bitmap表示为四个字节可以为:[0x00,0x00,0x00,0x00]。具体地,穿戴式设备每正确接收一个数据包,则把该数据包对应的bit位置1,接收一个数据包不正确,则把该数据包对应的bit位置0,以此类推,直到接收完第32个数据包,也即直到穿戴式设备接收完一组数据包。穿戴式设备可以以字节的形式回复该组数据包中每个数据包的接收情况,比如回复[0XFF,OXFF,0XFE,0XFF]代表该组数据包中的第9个数据包传送错误。移动终端解析穿戴式设备回复的四字节的ACK消息,就可以确定重传哪些数据包。
在一个例子中,移动终端解析ACK消息的过程可以为:移动终端先解析出所有bit位为0的数据包在组内的索引号,并将组内索引号转换成整个固件升级数据的索引号后,重新发送所有穿戴式设备侧接收失败的数据包,直到穿戴式设备侧返回的bitmap全为0xFF。
步骤310中,可以具体是由穿戴式设备的MCU10接收移动终端发送的固件升级数据,且MCU10在接收到移动终端发送的固件升级数据之后,可以将该固件升级数据存储在图1中的外部Flash中,该外部Flash可以是指外部存储器芯片,其可以是通过SPI总线与MCU10相连接。
步骤320,对固件升级数据进行完整性校验。
可选地,本发明中的固件升级数据还可以包括该固件升级数据对应的密文信息,相应的,固件升级数据的头部信息还可以包括密文信息的描述信息。以固件升级数据为DFU数据为例来说,当DFU数据还包括对应的密文信息,且DFU数据的头部信息还包括密文信息的描述信息时,该DFU数据的头部信息可以如表4所示。
表4
表4中,最后一行的内容即为密文信息的描述信息,也即DFU数据的头部信息中包括了密文信息的起始地址和长度等信息。
在固件升级数据还可以包括该固件升级数据对应的密文信息时,步骤320具体可以为:
步骤A:根据预设的第一算法,计算固件升级数据的哈希值。
此处,预设的第一算法可以为任一能够校验固件升级数据的正确性的算法,如,SHA256算法等。举例来说,MCU10可以从外部Flash中读取固件升级数据,之后根据SHA256算法计算固件升级数据的哈希值。
步骤B:根据密文信息的描述信息,从固件升级数据中获取密文信息。
以固件升级数据的头部信息如表4所示为例来说,可以根据密文信息的起始地址和长度,从固件升级数据中获取密文信息。
步骤C:将固件升级数据的哈希值与密文信息进行比对,若比对一致,则对固件升级数据完整性校验通过;若比对不一致,则对固件升级数据完整性校验不通过。
在上述过程中,如果对固件升级数据完整性校验通过,则证明固件升级数据接收完整无误。否则,认为固件升级数据接收错误或Flash数据写入错误,其完整性被破坏。在对固件升级数据完整性校验后,可以重启MCU10,进入BootLoader,。在进入BootLoader后,若根据升级标识,确定不满足升级条件,则可以不予升级,直接引导MCU Application运行。本发明中的固件升级数据完整性校验是保证固件升级数据完整,防止升级变砖的措施之一。
步骤330,在对固件升级数据完整性校验通过后,根据描述信息,从固件升级数据中读取各个固件的升级数据。
可选地,在MCU10还包括内部Flash,且该内部Flash如图2所示时,在对固件升级数据完整性校验后(包括通过或者不通过),可以向图2的Flag102中写入升级标识。在一个例子中,如果对固件升级数据完整性校验通过,则可以向Flag102中写入升级标识:0Xaa0Xaa;如果对固件升级数据完整性校验不通过,则可以向Flag102中写入升级标识:0X550X55。
在还向Flag102中写入升级标识时,当MCU10重启进入BootLoader之后,从Flag102中读取升级标识,若升级标识为:0X55 0X55,则表示固件升级数据的完整性被破坏,从而不需要对各个固件进行升级,跳转进入MCU Application。而若升级标识为:0Xaa 0Xaa,则可以从固件升级数据的头部信息中读取各个固件的描述信息,如,读取表2或中字段Index的内容,若字段Index的内容全部正确,则根据描述信息,从固件升级数据中读取各个固件的升级数据。
步骤340,将各个固件的升级数据对应存储到各个固件的对应区域中。
以固件升级数据的头部信息如表4所示为例来说,可以根据固件MCU的起始地址和长度,从固件升级数据中读取固件MCU的升级数据。之后可以将固件MCU的升级数据存储到固件MCU的运行区域,如,存储到图2中的MCUApplication 104中。同理,可以将固件UI和BLE的升级数据拷贝到固件UI和BLE的存储区域中。
步骤350,对存储到各个固件的对应区域的升级数据进行校验。
以固件升级数据的头部信息如表2或表4所示为例来说,因为表2或表4中包括了字段CRC16,也即头部信息包括了固件升级数据的描述信息,且该描述信息包括了各个固件的升级数据的校验信息。所以对存储到各个固件的对应区域的升级数据进行校验的步骤可以如下:
步骤a:根据预设的第二算法,计算各个固件的对应区域的升级数据的校验值。
此处的预设的第二算法可以是用于计算数据的CRC值的算法。以固件升级数据的头部信息如表2或表4所示为例来说,则可以计算固件MCU的运行区域的升级数据的CRC值,并计算固件UI和BLE的存储区域的升级数据的CRC值。
步骤b:将所述各个固件的对应区域的升级数据的校验值与对应的校验信息进行比对。
如前述例子,则可以分别将固件MCU的运行区域的升级数据的CRC值与表2或表4中第一行字段CRC16对应的内容进行比对,也即将固件MCU的运行区域的升级数据的CRC值与“CRC_MCU”进行比对。将固件BLE的存储区域的升级数据的CRC值与“CRC_BLE”进行比对,将固件UI的存储区域的升级数据的CRC值与“CRC_UI”进行比对。
步骤c:若比对一致,则对各个固件的对应区域的升级数据校验成功。
步骤d:若比对不一致,则对各个固件的对应区域的升级数据校验不成功。
需要说明的是,在对各个固件的对应区域的升级数据校验不成功的情况下,可以再次执行步骤330-步骤350,直至对各个固件的对应区域的升级数据校验成功或者校验次数达到预设阈值。
步骤360,在对各个固件的对应区域的升级数据校验通过后,根据对应区域中的升级数据,升级各个固件。
如,可以根据固件MCU的运行区域的升级数据,对固件MCU进行升级。根据固件BLE的存储区域的升级数据,对固件BLE进行升级。根据固件UI的存储区域的升级数据,对固件UI进行升级。由此,实现了对穿戴式设备中所有固件的升级。
需要说明的是,虽然本发明在步骤320对存储在外部Flash的固件升级数据进行了完整性校验,但是有可能因为硬件个体的差异,在数据拷贝过程中,发生数据拷贝错误的问题。为了避免此种情况,本发明在对拷贝到各个固件的对应区域的升级数据进行了再次验证(也称BootLoader阶段数据拷贝过程的防变砖校验机制),从而可以进一步保证固件升级的准确性。
综上,本发明的穿戴式设备的固件升级方法,通过独创的固件升级数据以及其头部信息、可以提高数据传输效率的bitmap,数据完整性校验以及对拷贝到固件的对应区域的升级数据的再次校验,可以保证穿戴式设备软件迭代快速、高效,准确,延长穿戴式设备的上市周期。
需要说明的是,因为本发明的应答机制可以提高数据传输的效率,为了使本领域技术人员能够了解该应答机制,本发明将通过图4来说明其具体实施过程。
图4中,首先可以初始化参数ReceivedIndex,该参数用于表示已写入成功的数据包数。以固件升级数据的一组数据包包括N个数据包为例来说,该参数的范围为[1-N]。此外,还可以清空与各组数据包对应的bitmap。之后,就可以正常接收数据包,并用参数PackageIndex表示已接收的数据包数。在循环多次接收数据包之后,可以判断一组数据包是否已接收完成,即通过判断ReceivedIndex%ArrayPackage是否为0来判断,其中,ArrayPackage为一组数据包中包括的数据包的个数。当ReceivedIndex%ArrayPackage为0时,说明一组数据包接收完成,可以初始化bitmap中的内容。在初始化bitmap中的内容之后,或者当ReceivedIndex%ArrayPackage不为0时,可以比较PackageIndex与ReceivedIndex的大小,来确定是否有数据包接收不正确。当PackageIndex<(ReceivedIndex+1)时,说明未发生丢包的情况,也即数据包接收正确,则继续正常接收数据包。而当PackageIndex>(ReceivedIndex+1)时,说明有丢包的情况,可以统计丢包个数ErrorCount加1,即ErrorCount,且ReceivedIndex++。执行该两步骤之后,或者当PackageIndex=(ReceivedIndex+1)时,可以判断PackageIndex是否小于PackageTotal,其中,PackageTotal为一组数据包中包括的数据包的个数。
图4中,若PackageIndex不小于PackageTotal,则继续判断PackageIndex是否等于PackageTotal,若不等于,则继续正常接收数据包;若等于,则说明一组数据包接收完成,可以向移动终端回复ACK消息。在回复ACK消息之前,可以先对当前数据包进行CRC校验,若CRC校验不成功,可以将CRC未校验成功的数据包的个数加1,即ErrorCount++,并将该值赋予ErrorIndex,并回复ACK消息。若CRC校验成功,则向外部Flash中写入当前数据包,之后可以将当前数据包在整个固件升级数据中的索引值转换为组内索引,并将该数据包在bitmap中对应的bit位置为1,具体通过如下代码实现:
innerindex=(PackageIndex-1)%ArrayPackage;
Bitmap[innerindex/8]=(1<<(innerindex%8))|Bitmap[innerindex/8]
之后,可以将ErrorCount赋予ErrorIndex,并通过ErrorIndex是否大于0来判断是否需要重传数据包。如果需要重传(ErrorIndex>0),则继续正常接收数据包。如果不需要重传(即ErrorIndex<=0),则对固件升级数据进行完整性校验,并根据完整性校验的结果写入升级标识。MCU重启之后,根据升级标识,来确定是否进行升级。
图4中,若PackageIndex小于PackageTotal,则说明还未接收完一组数据包,对当前接收的数据包进行CRC校验,若CRC校验成功,则可以将当前接收的数据包写入外部Flash。将当前接收的数据包在整个固件升级数据中的索引值转换为组内索引,并将当前接收的数据包在bitmap中对应的bit位置为1。之后更新已接收报文索引,ReceivedIndex=M,其中,M为最新接收的数据包的索引。更新ReceivedIndex之后,可以判断当前接收的数据包是否接收错误;或者在CRC校验失败之后,将CRC未校验成功的数据包的个数加1,即ErrorCount++,且ReceivedIndex++,可以判断当前接收的数据包是否接收错误。若接收错误,则判断该数据包是否为组内最后一个数据包,若否,则继续正常接收数据包;若是,则将ErrorCount赋予ErrorIndex,并在将ErrorCount清零,返回ACK消息之后,进入继续正常接收数据包。若接收正确,则可以将ErrorIndex减一,并判断重新接收的数据包是否接收完成,若接收完成,则继续正常接收数据包。否则,并返回ACK消息,之后判断是否已接收完成最后一组重传的数据包,若否,则继续正常接收数据包。若是,对固件升级数据进行完整性校验,并根据完整性校验的结果写入升级标识。MCU重启之后,根据升级标识,来确定是否进行升级。
还需要说明的是,为了使本领域技术人员能够了解各个固件的升级数据的校验机制,本发明将通过图5说明其具体实施过程。
图5中,以固件升级数据为DFU数据为例来说,在对DFU数据进行完整性校验后,可以重启MCU,并进入BootLoader。之后,可以读取Flag模块中的升级标识,并根据升级标识来确定是否需要升级。在确定需要升级时,可以判断外部Flash中是否存在升级包,若存在,则可以读取DFU数据的头部信息。判断DFU数据的头部信息是否正确,若不正确,则跳转至MCUApplication。若正确,则解析DFU数据的头部信息,获取各个固件的升级数据的起始地址、长度以及CRC值并保存。擦除各个固件的对应区域中的数据,并将外部Flash中各个固件的升级数据拷贝到对应区域中。之后从对应区域中读出各个固件的升级数据,并计算各个固件的升级数据的校验和,若各个固件的升级数据的校验和与对应的CRC值相同,则各个固件的升级数据校验成功,写升级成功标识和新版本号至Flag模块后,跳转至MCUApplication。若各个固件的升级数据校验失败,则在校验失败的次数不超过预设阈值的情况下,重新从外部Flash中拷贝数据至各个固件的对应区域。
与上述穿戴式设备的固件升级方法对应地,本发明实施例还提供的一种穿戴式设备,如图6所示,该穿戴式设备包括:
接收单元601,用于接收移动终端下发的固件升级数据,该固件升级数据包括头部信息以及穿戴式设备的各个固件的升级数据,其头部信息包括各个固件的升级数据的描述信息。
校验单元602,用于对接收单元601接收的固件升级数据进行完整性校验。
读取单元603,用于在校验单元602对固件升级数据完整性校验通过后,根据描述信息,从固件升级数据中读取各个固件的升级数据。
存储单元604,用于将读取单元603读取的各个固件的升级数据对应存储到各个固件的对应区域中。
校验单元602,还用于对存储单元604存储到各个固件的对应区域的升级数据进行校验。
升级单元605,用于在校验单元602对各个固件的对应区域的升级数据校验通过后,根据对应区域中的升级数据,升级各个固件。
可选地,上述固件升级数据由至少一组数据包构成,其中,每组数据包包括至少一个数据包。
接收单元601具体用于:
接收固件升级数据中的各组数据包;
当接收完成各组数据包中的一组数据包时,向移动终端返回用于指示一组数据包中的每个数据包是否接收正确的指示消息,该指示消息用于指示移动终端向重传一组数据包中接收不正确的数据包。
可选地,穿戴式设备还可以包括:
配置单元606,用于预先配置各组数据包对应的比特图,比特图中的bit位与各组数据包中的数据包相对应。
接收单元601还具体用于:
接收一组数据包中的各个数据包,判断当前数据包是否接收正确;若接收不正确,则将一组数据包对应的比特图中当前数据包对应的bit位置为第一标识信息;若接收正确,则将一组数据包对应的比特图中当前数据包对应的bit位置为第二标识信息。
根据一组数据包对应的比特图中各bit位的第一标识消息和/或第二标识信息,向移动终端返回用于指示一组数据包中的每个数据包是否接收正确的指示消息。
可选地,上述固件升级数据还可以包括固件升级数据的密文信息,头部信息还可以包括所述密文信息的描述信息,校验单元602具体用于:
根据预设的第一算法,计算固件升级数据的哈希值。
根据密文信息的描述信息,从固件升级数据中获取密文信息。
将固件升级数据的哈希值与密文信息进行比对,若比对一致,则对固件升级数据完整性校验通过;若比对不一致,则对固件升级数据完整性校验不通过。
可选地,描述信息包括各个固件的升级数据的校验信息,校验单元602还具体用于:
根据预设的第二算法,计算各个固件的对应区域的升级数据的校验值。
将各个固件的对应区域的升级数据的校验值与对应的校验信息进行比对。
若比对一致,则对各个固件的对应区域的升级数据校验成功。
若比对不一致,则对各个固件的对应区域的升级数据校验不成功。
本发明实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本发明提供的装置的具体工作过程,在此不复赘述。
本发明提供的穿戴式设备,接收单元601接收移动终端下发的固件升级数据。校验单元602对固件升级数据进行完整性校验。在对固件升级数据完整性校验通过后,读取单元603根据描述信息,从固件升级数据中读取各个固件的升级数据。存储单元604将各个固件的升级数据对应存储到各个固件的对应区域中。校验单元602对各个固件的对应区域的升级数据进行校验。在各个固件的对应区域的升级数据校验通过后,升级单元605根据对应区域中的升级数据,升级各个固件。由此,可以提高穿戴式设备的固件升级的全面性,从而可以很好的满足用户的需求。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (6)
1.一种穿戴式设备的固件升级方法,其特征在于,包括:
穿戴式设备接收移动终端下发的固件升级数据,所述固件升级数据包括头部信息以及所述穿戴式设备的各个固件的升级数据,所述头部信息包括所述各个固件的升级数据的描述信息;
对所述固件升级数据进行完整性校验;
在对所述固件升级数据完整性校验通过后,根据所述描述信息,从所述固件升级数据中读取所述各个固件的升级数据;
将所述各个固件的升级数据对应存储到所述各个固件的对应区域中;
对存储到各个固件的对应区域的升级数据进行校验;
在对所述各个固件的对应区域的升级数据校验通过后,根据所述对应区域中的升级数据,升级所述各个固件;所述固件升级数据由至少一组数据包构成,其中,每组数据包包括至少一个数据包;所述穿戴式设备接收移动终端下发的固件升级数据,包括:
所述穿戴式设备接收固件升级数据中的各组数据包;
当接收完成所述各组数据包中的一组数据包时,向所述移动终端返回用于指示所述一组数据包中的每个数据包是否接收正确的指示消息,所述指示消息用于指示所述移动终端向所述穿戴式设备重传所述一组数据包中接收不正确的数据包;
还包括:
预先配置各组数据包对应的比特图,所述比特图中的bit位与所述各组数据包中的数据包相对应;
所述穿戴式设备接收固件升级数据中的各组数据包中的一组数据包,包括:
所述穿戴式设备接收所述一组数据包中的各个数据包,判断当前数据包是否接收正确;若接收不正确,则将所述一组数据包对应的比特图中当前数据包对应的bit位置为第一标识信息;若接收正确,则将所述一组数据包对应的比特图中当前数据包对应的bit位置为第二标识信息;
所述向所述移动终端返回用于指示所述一组数据包中的每个数据包是否接收正确的指示消息,包括:
根据所述一组数据包对应的比特图中各bit位的第一标识消息和/或第二标识信息,向所述移动终端返回用于指示所述一组数据包中的每个数据包是否接收正确的指示消息。
2.根据权利要求1所述的方法,其特征在于,所述固件升级数据还包括所述固件升级数据的密文信息,所述头部信息还包括所述密文信息的描述信息,所述对所述固件升级数据进行完整性校验,包括:
根据预设的第一算法,计算所述固件升级数据的哈希值;
根据所述密文信息的描述信息,从所述固件升级数据中获取所述密文信息;
将所述固件升级数据的哈希值与所述密文信息进行比对,若比对一致,则对所述固件升级数据完整性校验通过;若比对不一致,则对所述固件升级数据完整性校验不通过。
3.根据权利要求1所述的方法,其特征在于,所述描述信息包括所述各个固件的升级数据的校验信息,所述对存储到各个固件的对应区域的升级数据进行校验,包括:
根据预设的第二算法,计算所述各个固件的对应区域的升级数据的校验值;
将所述各个固件的对应区域的升级数据的校验值与对应的校验信息进行比对;
若比对一致,则对所述各个固件的对应区域的升级数据校验成功;
若比对不一致,则对所述各个固件的对应区域的升级数据校验不成功。
4.一种穿戴式设备,其特征在于,包括:
接收单元,用于接收移动终端下发的固件升级数据,所述固件升级数据包括头部信息以及穿戴式设备的各个固件的升级数据,所述头部信息包括所述各个固件的升级数据的描述信息;
校验单元,用于对所述接收单元接收的所述固件升级数据进行完整性校验;
读取单元,用于在所述校验单元对所述固件升级数据完整性校验通过后,根据所述描述信息,从所述固件升级数据中读取所述各个固件的升级数据;
存储单元,用于将所述读取单元读取的所述各个固件的升级数据对应存储到所述各个固件的对应区域中;
所述校验单元,还用于对所述存储单元存储到各个固件的对应区域的升级数据进行校验;
升级单元,用于在所述校验单元对所述各个固件的对应区域的升级数据校验通过后,根据所述对应区域中的升级数据,升级所述各个固件;所述固件升级数据由至少一组数据包构成,其中,每组数据包包括至少一个数据包;
所述接收单元具体用于:
接收固件升级数据中的各组数据包;
当接收完成所述各组数据包中的一组数据包时,向所述移动终端返回用于指示所述一组数据包中的每个数据包是否接收正确的指示消息,所述指示消息用于指示所述移动终端向重传所述一组数据包中接收不正确的数据包;还包括:
配置单元,用于预先配置各组数据包对应的比特图,所述比特图中的bit位与所述各组数据包中的数据包相对应;
所述接收单元具体用于:
接收所述一组数据包中的各个数据包,判断当前数据包是否接收正确;若接收不正确,则将所述一组数据包对应的比特图中当前数据包对应的bit位置为第一标识信息;若接收正确,则将所述一组数据包对应的比特图中当前数据包对应的bit位置为第二标识信息;
根据所述一组数据包对应的比特图中各bit位的第一标识消息和/或第二标识信息,向所述移动终端返回用于指示所述一组数据包中的每个数据包是否接收正确的指示消息。
5.根据权利要求4所述的穿戴式设备,其特征在于,所述固件升级数据还包括所述固件升级数据的密文信息,所述头部信息还包括所述密文信息的描述信息,所述校验单元具体用于:
根据预设的第一算法,计算所述固件升级数据的哈希值;
根据所述密文信息的描述信息,从所述固件升级数据中获取所述密文信息;
将所述固件升级数据的哈希值与所述密文信息进行比对,若比对一致,则对所述固件升级数据完整性校验通过;若比对不一致,则对所述固件升级数据完整性校验不通过。
6.根据权利要求4所述的穿戴式设备,其特征在于,所述描述信息包括所述各个固件的升级数据的校验信息,所述校验单元还具体用于:
根据预设的第二算法,计算所述各个固件的对应区域的升级数据的校验值;
将所述各个固件的对应区域的升级数据的校验值与对应的校验信息进行比对;
若比对一致,则对所述各个固件的对应区域的升级数据校验成功;
若比对不一致,则对所述各个固件的对应区域的升级数据校验不成功。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611270285.6A CN106843942B (zh) | 2016-12-31 | 2016-12-31 | 穿戴式设备的固件升级方法及穿戴式设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611270285.6A CN106843942B (zh) | 2016-12-31 | 2016-12-31 | 穿戴式设备的固件升级方法及穿戴式设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106843942A CN106843942A (zh) | 2017-06-13 |
CN106843942B true CN106843942B (zh) | 2021-04-30 |
Family
ID=59116931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611270285.6A Active CN106843942B (zh) | 2016-12-31 | 2016-12-31 | 穿戴式设备的固件升级方法及穿戴式设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106843942B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107205041B (zh) * | 2017-06-30 | 2022-03-15 | 歌尔股份有限公司 | 音频设备的升级方法、音频设备及智能音箱 |
CN107222643A (zh) * | 2017-07-25 | 2017-09-29 | 深圳市芯中芯科技有限公司 | 一种基于软件app技术的蓝牙设备固件升级方法及系统 |
CN109491691A (zh) * | 2018-11-30 | 2019-03-19 | 歌尔科技有限公司 | 一种tws耳机及其升级方法、装置、介质 |
CN109697081B (zh) * | 2018-12-19 | 2021-04-13 | 广州小鹏汽车科技有限公司 | 固件安全升级方法、装置、车载系统和车辆 |
CN111813425A (zh) * | 2019-04-12 | 2020-10-23 | 顺丰科技有限公司 | 设备升级方法、装置、设备及存储介质 |
CN110399149A (zh) * | 2019-06-26 | 2019-11-01 | 杭州智缤科技有限公司 | 一种低功耗场景下的远程升级方法 |
CN110764806B (zh) * | 2019-10-29 | 2023-12-26 | 歌尔科技有限公司 | 一种tws耳机及其升级方法及装置 |
CN111240885A (zh) * | 2019-12-28 | 2020-06-05 | 杭州拓深科技有限公司 | 一种嵌入式在线升级防错检测方法 |
CN111221553A (zh) * | 2019-12-31 | 2020-06-02 | 深圳优地科技有限公司 | 一种固件升级的方法及装置 |
CN111538513B (zh) * | 2020-04-16 | 2021-08-27 | 深圳比特微电子科技有限公司 | 一种虚拟货币矿机电源的批量固件更新方法和系统 |
CN111984298B (zh) * | 2020-07-17 | 2023-07-25 | 歌尔科技有限公司 | 一种闪存中的程序升级区、程序升级方法及系统 |
CN112000355B (zh) * | 2020-08-21 | 2023-10-24 | 青岛海尔科技有限公司 | 用于固件升级的方法及装置、家电设备 |
CN113821238B (zh) * | 2021-08-02 | 2024-02-09 | 惠州Tcl移动通信有限公司 | 智能穿戴设备外设固件更新方法、装置、移动终端及介质 |
CN116382745B (zh) * | 2023-06-06 | 2023-09-19 | 飞天诚信科技股份有限公司 | 一种固件加载升级的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105591824A (zh) * | 2016-01-14 | 2016-05-18 | 杭州赫智电子科技有限公司 | 一种固件升级的方法、系统 |
CN105912340A (zh) * | 2016-04-26 | 2016-08-31 | 江苏惠通集团有限责任公司 | 一种主设备、遥控器及对其空中升级的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7299463B2 (en) * | 2001-09-28 | 2007-11-20 | Intel Corporation | Method for atomically updating a plurality of files |
CN105094913B (zh) * | 2015-07-31 | 2018-06-15 | 广东欧珀移动通信有限公司 | 系统、基带固件和系统应用升级方法及装置 |
CN106201552A (zh) * | 2016-07-22 | 2016-12-07 | 北京智能管家科技有限公司 | 一种软件升级方法、客户端、服务器及系统 |
-
2016
- 2016-12-31 CN CN201611270285.6A patent/CN106843942B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105591824A (zh) * | 2016-01-14 | 2016-05-18 | 杭州赫智电子科技有限公司 | 一种固件升级的方法、系统 |
CN105912340A (zh) * | 2016-04-26 | 2016-08-31 | 江苏惠通集团有限责任公司 | 一种主设备、遥控器及对其空中升级的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106843942A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106843942B (zh) | 穿戴式设备的固件升级方法及穿戴式设备 | |
CN106569847B (zh) | 一种用于车载系统基于移动网络实现iap远程升级的方法 | |
CN108021410A (zh) | 一种智能家电设备的固件升级方法及系统 | |
CN105262627B (zh) | 一种固件升级方法、装置及系统 | |
CN102281121A (zh) | 一种数据文件传输和校验的方法、设备及系统 | |
CN106341136A (zh) | Ldpc解码方法及其装置 | |
CN107908417B (zh) | 固件升级方法及电子设备 | |
CN106897166B (zh) | 一种移动终端及其修复方法 | |
WO2017016282A1 (zh) | 软件升级方法及装置、计算机存储介质 | |
CN106851625A (zh) | 一种蓝牙产品ota升级方法 | |
CN114281394A (zh) | 一种快速在线升级程序的方法、系统、设备及介质 | |
CN108958752B (zh) | 单片机在线升级系统及方法 | |
CN103763067A (zh) | 一种通信数据包纠错校验方法与装置 | |
CN112631628A (zh) | 单片机升级方法、单片机、存储介质 | |
US7571374B2 (en) | Method for transmitting and processing command and data | |
CN107239358A (zh) | 安卓系统的启动方法、移动终端及具有存储功能的装置 | |
CN102999397A (zh) | 一种嵌入式软件升级校验的方法 | |
CN112286565B (zh) | 一种基于存储容器的嵌入式系统差分升级方法 | |
CN108196975B (zh) | 基于多校验和的数据验证方法、装置及存储介质 | |
US9356736B2 (en) | Portable electronic device and IC card processing device | |
CN113360161A (zh) | 资源升级方法及相关产品 | |
EP2420936A1 (en) | Protocol conversion Communication Device | |
CN112527548B (zh) | 快闪存储器控制器、储存装置及读取方法 | |
CN110008059B (zh) | 非易失性存储介质的数据更新方法、装置及存储介质 | |
US10296415B2 (en) | IC card, portable electronic device, and IC card processing device |
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 |