首页> 中国专利> 一种蓝牙芯片OTA升级的方法和蓝牙芯片

一种蓝牙芯片OTA升级的方法和蓝牙芯片

摘要

本发明公开了一种蓝牙芯片OTA升级的方法,蓝牙芯片首先接收压缩升级包并且将所述压缩升级包储存到所述储存分区。压缩升级包由原始升级文件经过数据压缩并且保持格式不变后得到的,并且为可执行文件,因此蓝牙芯片能够直接对其进行读取。之后蓝牙芯片对压缩升级包进行解压,并将解压出来的数据写入所述程序启动分区。在完成对压缩升级包的解压时,重新启动蓝牙芯片以完成OTA升级的过程。在本申请方案中,在对原始压缩文件进行数据压缩的过程不会引起任何的数据失真,因此保证了升级过程中系统的稳定性。并且,由于对原始升级文件进行了压缩,因此可以极大的减小储存升级包所用的Flash空间。同时本申请公开了一种蓝牙芯片。

著录项

  • 公开/公告号CN106406935A

    专利类型发明专利

  • 公开/公告日2017-02-15

    原文格式PDF

  • 申请/专利权人 青岛海信电器股份有限公司;

    申请/专利号CN201610752813.5

  • 发明设计人 曾小光;李晓峰;周全;房鸿利;

    申请日2016-08-29

  • 分类号G06F9/445(20060101);

  • 代理机构11297 北京鑫媛睿博知识产权代理有限公司;

  • 代理人龚家骅

  • 地址 266100 山东省青岛市崂山区株洲路151号

  • 入库时间 2023-06-19 01:32:41

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-19

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F8/65 变更前: 变更后: 申请日:20160829

    专利权人的姓名或者名称、地址的变更

  • 2019-10-15

    授权

    授权

  • 2017-04-05

    实质审查的生效 IPC(主分类):G06F9/445 申请日:20160829

    实质审查的生效

  • 2017-02-15

    公开

    公开

说明书

技术领域

本发明涉及通信技术领域,特别涉及一种蓝牙芯片OTA升级的方法和蓝牙芯片。

背景技术

IOT(Internet of Things,物联网)是当前行业应用热点,同时也是设备互联互通的技术发展方向。作为IOT技术的重要载体:低功耗蓝牙SoC芯片,因其低成本,高效互联技术特征,应用的越来越广泛。

OTA全称over the air,也称为在线升级,增量升级。OTA升级是Android系统提供的标准软件升级方式。其升级模式有全量升级模式和增量升级模式。并且,OTA可以通过SD卡升级,也可以通过网络升级。通常所说的OTA升级,一般是指增量升级,最常见的就是先通过网络下载升级包,然后再进入升级界面,等升级完成就自动重启,完成升级。

实现蓝牙芯片的OTA升级,一方面可以修复产品缺陷,丰富产品功能,以及增加用户的粘性;另一方面,利于迭代的产品升级,有助于快速切入市场,降低整体开发成本,因此具有重要的意义。蓝牙芯片的OTA升级,一般都是通过智能电视、智能手机、平板电脑等嵌入式产品来完成。智能电视、智能手机、平板电脑等产品借助移动网络或者Wifi网络,首先将OTA升级包(一般为压缩包)从服务器下载到本地,在对升级包进行解压后通过蓝牙通道将解压后的升级包发送给蓝牙设备,最后蓝牙设备完成固件升级。

在低功耗蓝牙SoC芯片的推广过程中,随着用户应用的多元化,低功耗蓝牙SoC芯片的OTA升级功能需求突显。

上述提到的蓝牙芯片OTA升级过程需要依靠智能电视、智能手机、平板电脑等嵌入式产品来对升级包进行解压,但是对于一些非智能设备,如遥控器等,其内部CPU芯片很弱,无法完成解压升级包(此时的升级包一般为tar、zip等压缩文件格式)的过程。因此通常需要直接将原始的升级包发送给蓝牙SoC芯片。通常来说,如果直接通过原始的升级包进行升级,将占用大量的Flash资源(原始升级文件一般较大),这对于SRAM以及FLASH容量都有限(基于成本的考虑)的SoC蓝牙芯片而言,无疑增加了OTA升级的难度。

为了解决上述问题,现有技术中有两种解决方案。其一,通过增大SoC蓝牙芯片的Flash容量和增多Flash分区来完成蓝牙设备固件升级。其二,在SoC蓝牙芯片外接入额外的Flash来完成蓝牙设备固件升级。

申请人在实现本发明的过程中发现现有技术至少存在以下问题:

其一,增大Flash容量和分区的方法无疑增加了系统的成本。

其二,通过外接Flash来实现OTA升级的方法,一方面不仅增加了系统成本,而且也引入了Flash间数据传输的错误码问题,严重时会导致升级错误码,使整个低功耗蓝牙SoC芯片系统Boot失败。

因此,如何降低蓝牙SoC芯片的OTA升级的成本以及保证升级过程中系统的稳定性成为蓝牙SoC芯片生产厂家亟待解决的问题。

发明内容

本发明提供一种蓝牙芯片OTA升级的方法,通过该方法可以减少蓝牙芯片OTA升级过程中的内存占用。所述蓝牙SoC芯片内的Flash储存器内有程序启动分区和储存分区,该方法包括:

通过蓝牙通道接收智能设备发送的压缩升级包并且将所述压缩升级包储存到所述储存分区,所述压缩升级包是由原始升级文件经过数据压缩并且保持格式不变后得到的,所述压缩升级包为可执行文件;

对所述压缩升级包进行解压并将解压后的数据写入所述程序启动分区;

重新启动所述蓝牙芯片进行升级。

优选的,所述压缩升级包的生成过程如下:

接收初始压缩升级包;

判断所述初始压缩升级包的格式是否与所述原始升级文件的格式相同;

若相同,则确认所述初始压缩升级包为所述压缩升级包;

若不相同,则将所述初始压缩升级包解压为所述原始升级文件,在保持文件格式不变的基础上对所述原始升级文件进行数据压缩,并将经过数据压缩后的所述原始升级文件确认为所述压缩升级包。

优选的,所述对所述原始升级文件进行数据压缩,具体为:

在所述原始升级文件中读取长度为预设长度的数据;

对所述数据进行数据压缩后得到压缩数据段;

在所述压缩数据段的前面添加指示标记;所述指示标记用于指出所述压缩数据段的长度值;

判断是否完成对原始升级文件的压缩;

若已经完成对原始升级文件的压缩,则结束压缩过程;

若未完成对原始升级文件的压缩,则在原始升级文件中继续读取长度为预设长度的数据。

优选的,所述对所述压缩升级包进行解压具体为:

读取所述指示标记;

根据所述指示标记获取所述压缩数据段的长度值;

根据所述长度值在所述压缩升级包读取所述压缩数据段;

对读取到的所述压缩数据段进行解压处理;

判断是否已经完成对所述压缩升级包的解压;

若已经完成对所述压缩升级包的解压,则结束解压过程;

若未完成对所述压缩升级包的解压,则继续读取所述指示标记。

优选的,在所述对所述压缩升级包进行解压之前,所述方法还包括;

对所述压缩升级包进行校验,并且在校验失败时重新接收所述压缩升级包。

相应的,本申请提出一种蓝牙芯片,其特征在于,所述蓝牙芯片内的Flash储存器内有程序启动分区和储存分区,所述蓝牙芯片还包括:

接收模块,通过蓝牙通道接收智能设备发送的压缩升级包并且将所述压缩升级包储存到所述储存分区,所述压缩升级包是由原始升级文件经过数据压缩并且保持格式不变后得到的,所述压缩升级包为可执行文件;

解压模块,对所述压缩升级包进行解压并将解压后的数据写入所述程序启动分区;

运行模块,重新启动所述蓝牙芯片进行升级。

优选的,所述压缩升级包的生成过程如下:

接收初始压缩升级包;

判断所述初始压缩升级包的格式是否与所述原始升级文件的格式相同;

若相同,则确认所述初始压缩升级包为所述压缩升级包;若不相同,则将所述初始压缩升级包解压为所述原始升级文件,在保持文件格式不变的基础上对所述原始升级文件进行数据压缩,并将经过数据压缩后的所述原始升级文件确认为所述压缩升级包。

优选的,所述对所述原始升级文件进行数据压缩,具体为:

在所述原始升级文件中读取长度为预设长度的数据;

对所述数据进行数据压缩后得到压缩数据段;

在所述压缩数据段的前面添加指示标记;所述指示标记用于指出所述压缩数据段的长度值;

判断是否完成对原始升级文件的压缩;

若已经完成对原始升级文件的压缩,则结束压缩过程;

若未完成对原始升级文件的压缩,则在原始升级文件中继续读取长度为预设长度的数据。

优选的,所述解压模块具体用于:

读取所述指示标记;

根据所述指示标记获取所述压缩数据段的长度值;

根据所述长度值在所述压缩升级包读取所述压缩数据段;

对读取到的所述压缩数据段进行解压处理;

判断是否已经完成对所述压缩升级包的解压;

若已经完成对所述压缩升级包的解压,则结束解压过程;

若未完成对所述压缩升级包的解压,则继续读取所述指示标记。

优选的,还包括:

校验模块,对所述压缩升级包进行校验,并且在校验失败时重新接收所述压缩升级包。

通过本申请的技术方案,蓝牙芯片首先接收压缩升级包并且将所述压缩升级包储存到所述储存分区。压缩升级包由原始升级文件经过数据压缩并且保持格式不变后得到的,并且为可执行文件,因此蓝牙芯片能够直接对其进行读取。之后蓝牙芯片对压缩升级包进行解压,并将解压出来的数据写入所述程序启动分区。在完成对压缩升级包的解压时,重新启动蓝牙芯片以完成OTA升级的过程。在本申请方案中,在对原始压缩文件进行数据压缩的过程不会引起任何的数据失真,因此保证了升级过程中系统的稳定性。并且,由于对原始升级文件进行了压缩,因此可以极大的减小储存升级包所用的Flash空间。综上,通过本申请的方案在小Flash容量下实现蓝牙芯片OTA升级功能的同时,降低了蓝牙芯片的成本。进一步的,本申请的方案还能够保证升级过程中系统的稳定性。

附图说明

图1为本申请提出的一种蓝牙SoC芯片OTA升级的方法的流程示意图;

图2为本申请具体实施例提出在执行本申请方案时升级压缩包状态变化示意图;

图3为本申请具体实施例提出的应用本申请方法各设备间的交互示意图;

图4为本申请具体实施例中实际应用场景中蓝牙SoC芯片OTA升级的流程示意图;

图5为本申请具体实施例中升级包压缩过程的流程示意图;

图6为本申请具体实施例中升级包解压过程的流程示意图;

图7为本申请提出的一种蓝牙芯片的结构示意图。

具体实施方式

如背景技术所述,由于蓝牙SoC芯片无法读取如tar、zip等格式的压缩文件。因此,为了完成蓝牙SoC芯片的OTA升级过程,需要将原始格式的升级包直接发送给芯片。对于Flash容量有限的蓝牙SoC芯片(基于成本考虑),如果直接通过原始升级文件进行升级,将占用大量的Flash资源,这增加芯片OTA升级的难度。为了解决上述问题,现有的技术方案采用的方法为增大芯片的Flash容量或者外接外接新的Flash的方法。但是,上述方法无疑增加了芯片的制作成本,同时外接Flash还会存在引入了Flash间数据传输的错误码的问题,严重影响了芯片OTA升级过程中系统的稳定性。

因此,针对现有蓝牙SoC芯片升级过程中存在的问题,本申请提出了一种蓝牙芯片OTA升级的方法,采用无损数据压缩的方法对原始升级文件进行多分段压缩,可以在减小升级包的同时保证确保数据的准确性;同时在对升级包进行解压时,相应的采用分段解压的方法,降低了对芯片内存资源的占用。因此,可以在不增大芯片Flash内存的前提下,完成蓝牙芯片的OTA升级,同时保证了系统在升级过程中的稳定性。

上述提到的无损数据压缩是指利用数据的统计冗余进行压缩,然后对压缩后的数据进行重构(或解压缩),重构可完全恢复原始数据而不引起任何失真。因此,在本申请中,在对原始升级文件进行无损数据压缩之后,一方面可以减小升级包的大小,另一方面还能确保数据的准确性。

如图1所示,为本申请提出的一种蓝牙芯片OTA升级的方法,需要说明的是在本申请中涉及的蓝牙芯片一般是指非智能设备(如智能遥控器)的蓝牙芯片。该类设备的特点是内部的CPU芯片较弱,无法完成对于tar、zip等压缩格式文件的解压过程。因此,芯片需要接收原始格式的升级包,来完成OTA升级过程。同时该类型芯片的Flash储存器内分为储存分区和程序正常启动分区,其中储存分区是用来储存升级包的,程序正常启动分区是用来烧写解压后的升级包的。

具体的,该方法包括以下步骤:

S101,通过蓝牙通道接收智能设备发送的压缩升级包并且将压缩升级包储存到储存分区。

在本申请的实施例中,压缩升级包是由原始升级文件经过数据压缩并且保持格式不变后得到的。原始升级文件为可执行文件,可执行文件为二进制文件,因此,即使是在CPU较弱的蓝牙芯片也可以直接加载运行。并且由于经压缩后原始升级文件的格式未变,压缩升级包同样也为可执行文件。

上述提到的数据压缩可以无损数据压缩,在基于本申请思想的基础上,本领域技术人员也可以采用其他的压缩方法,这并不影响本申请的保护范围。

在本申请的优选实施例中,压缩升级包是由智能设备(如智能手机、平板电脑、智能电视等)生成并发送的,压缩升级包的生成过程如下:

(1)接收初始压缩升级包。

智能设备可以从PC端或者是云端服务器中获取初始压缩升级包。

(2)判断初始压缩升级包的格式是否与原始升级文件的格式相同。

由于,智能设备获取的初始压缩升级包的格式可能和原始升级文件的格式不同,而蓝牙芯片只能够读取与原始升级文件格式相同的文件,因此智能设备在将升级包发送给蓝牙芯片之前,必须得先判断该升级包的格式是否与原始升级文件的格式相同。

(3)若相同,则确认初始压缩升级包为压缩升级包。

如果格式相同,则说明芯片能够对其进行读取,因此可将其直接发送给蓝牙芯片。

(4)若不相同,则将初始压缩升级包解压为原始升级文件,在保持文件格式不变的基础上对原始升级文件进行数据压缩,并将经过数据压缩后的原始升级文件确认为压缩升级包。

如果格式不相同,则说明芯片不能够对其进行读取,因此智能设备必须要先将其解压为原始升级文件,并重新将原始升级文件压缩为芯片能够读取的压缩升级包。

在本申请的优选实施例中,压缩升级包由多个压缩数据段组成,并且每个压缩数据段均是采用无损数据压缩的方法压缩得到的。采用多个压缩数据段是因为考虑到芯片的内存有限,不能一次性的将整个压缩包读取,因此将压缩升级包分为多个压缩数据段,并且芯片在解压时每次只读取一段,从而降低了解压过程中的内存占用。相应的,智能设备对原始升级文件的压缩过程如下:

(1)在原始升级文件中读取长度为预设长度的数据。

预设长度的大小可以根据芯片的内存大小来确定,确定的原则是必须的保证芯片内存能够完成对该预设长度数据的读取,进而保证芯片能够完成解压的过程。

(2)对读取出来的数据进行数据压缩得到压缩数据段。

对读取出来的数据进行无损数据压缩,一方面降低了数据内存的占用,另一方面保证了数据的格式不发生改变,从而芯片能够对其进行读取。

(3)在压缩数据段的前面添加指示标记。

芯片在对压缩数据段进行读取之前,首先得获取压缩数据段的长度,因此,在本申请的优选实施例中,在压缩数据段的前面添加指示标记,上述指示标记用于指出所述压缩数据段的长度值。在解压的过程中,芯片首先读取指示标记,以获取压缩数据段的数据长度,之后根据数据长度相应的读取压缩数据段,并对其进行解压操作。

(4)判断是否完成对原始升级文件的压缩。

在每完成一段数据的压缩后,都需要判断是否完成对原始升级文件的压缩,以便继续下面的过程。

(5)若已经完成对原始升级文件的压缩,则结束压缩过程。

如果完成了对原始升级文件的压缩,则表示该段数据是最后一段数据,因此结束压缩的过程。

(6)若未完成对原始升级文件的压缩,则在原始升级文件中继续读取长度为预设长度的数据。

如果未完成对原始升级文件的压缩,则表示还有数据需要压缩,因此需要继续读取原始升级文件中为压缩的数据,并对其进行压缩。

通过上述的流程能够在减小升级包大小的同时,保证蓝牙芯片能够对升级包进行读取以及解压。

在本申请的优选实施例中,蓝牙芯片内的Flash储存器内有程序启动分区和储存分区。因为芯片在升级的过程中需要将程序启动分区清空,因此必须要将升级包与储存在储存分区,以便完成OTA升级过程。

当蓝牙芯片需要升级时,需要接收升级压缩包,并且将其储存到Flash储存器的储存分区中。

S102,对压缩升级包进行解压并将解压后的数据写入程序启动分区。

在本申请的优选实施例中,在接收了压缩升级包之后需要对压缩升级包进行校验。校验的目的是为了验证压缩升级包的完整性,以保证能够完成芯片的OTA升级过程,常用的校验方法有CRC校验等。

在校验完毕,确认压缩升级包没有问题之后,对压缩升级包进行解压,并将解压得到的数据烧写到Flash储存器的程序启动分区。

由于蓝牙SoC芯片的内存有限,因此为了能够降低蓝牙芯片在解压时候的负载,在本申请的优选实施例中,对压缩升级包采用分段解压的方法。

在本申请的优选实施例中,蓝牙芯片逐一的对每一个压缩数据段进行解压,并且将解压出来的数据存入Flash储存器的程序启动分区。

上述解压过程可以通过以下步骤实现:

(1)读取压缩数据段前面的指示标记。

在解压之前,蓝牙芯片并不知道每一个压缩数据段的数据长度,因此在对压缩数据段进行读取之前,首先读取压缩数据段之前的指示标记,以获取压缩数据段的数据长度值。

(2)根据所述指示标记获取将要解压的压缩数据段的数据长度值。

芯片通过解析指示标记的内容,获取将要读取的压缩数据段的数据长度值。

(3)根据获取的数据长度值在所述压缩升级包读取压缩数据段;

在获取了压缩数据段的数据长度值之后,芯片在原始升级文件读取相应长度的压缩数据段。采用在每个压缩数据段前面添加指示标记的方法,可以使芯片能够准确的对压缩数据段进行读取。

(4)对读取到的所述压缩数据段进行解压处理。

芯片在读取了压缩数据段之后,对其进行解压的处理,并且相应的将解压出来的数据写入Flash储存器的程序运行分区。

需要说明的是,上述对压缩数据段解压的过程是持续重复进行的,直到对整个压缩升级包解压完成后才停止。

(5)判断是否已经完成对所述压缩升级包的解压;

在每次解压完一段压缩数据段之后,需要判断是否已经完成了对压缩升级包的解压过程。

(6)若已经完成对所述压缩升级包的解压,则结束解压过程;

(7)若未完成对所述压缩升级包的解压,则继续读取所述指示标记。

如果未完成,则需要继续解压。

通过上述分段对压缩升级包解压的方法,可以有效的降低压缩升级包在解压过程中的内存消耗,减少了压缩升级包的解压负载。

S103,重新启动蓝牙芯片进行升级。

在本申请的优选实施例中,蓝牙芯片对压缩升级包的解压过程是以压缩数据段为单位逐一进行的。在完成对所有的压缩数据段解压后,需要重新启动蓝牙芯片,以完成蓝牙芯片的OTA升级过程。

为了更好的对本申请优选实施例中提到的对升级包的压缩与解压过程,如图2所示为本申请蓝牙芯片在OTA升级过程中升级包的变化示意图。由图可见,原始升级文件在未经压缩之前是由很多的原始数据段组成的;之后,对原始升级文件中的每一个原始数据段进行无损压缩之后,得到相应的压缩数据段,并在每个压缩数据段前面添加指示标记;在解压时,逐一的对各压缩数据段进行解压后得到解压后的原始升级文件。由于采用无损数据压缩的方法不会给压缩数据带来任何的失真,因此解压后的升级包是和原始升级文件是完全一样的,这保证了升级包数据的完整性,从而保证了蓝牙芯片在OTA升级过程中系统的稳定性。

通过以上步骤的描述可知,通过本申请的技术方案,蓝牙芯片首先接收压缩升级包并且将所述压缩升级包储存到所述储存分区。压缩升级包由原始升级文件经过数据压缩并且保持格式不变后得到的,并且为可执行文件,因此蓝牙芯片能够直接对其进行读取。之后蓝牙芯片对压缩升级包进行解压,并将解压出来的数据写入所述程序启动分区。在完成对压缩升级包的解压时,重新启动蓝牙芯片以完成OTA升级的过程。在本申请方案中,在对原始压缩文件进行数据压缩的过程不会引起任何的数据失真,因此保证了升级过程中系统的稳定性。并且,由于对原始升级文件进行了压缩,因此可以极大的减小储存升级包所用的Flash空间。综上,通过本申请的方案在小Flash容量下实现蓝牙芯片OTA升级功能的同时,降低了蓝牙芯片的成本。进一步的,本申请的方案还能够保证升级过程中系统的稳定性。

为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。

如图3所示为本申请在具体应用场景中各设备的交互示意图,由图可知本申请应用于包括PC平台,云服务器、智能设备、蓝牙设备的系统中。各设备的作用如下:

PC平台,负责对OTA升级包进行无损压缩;

云服务器,负责储存PC平台上传的OTA升级包;

智能设备,负责从云服务器下载OTA升级包,以及将OTA升级包发送给蓝牙设备;

蓝牙设备,接收OTA升级包,并完成OTA升级过程。

如图4所示,为本申请在具体的应用场景中的流程示意图。

该具体流程包括以下步骤:

S401,对OTA升级包进行无损压缩。

S402,将压缩后的OTA升级包发布至服务器。

S403,智能电视、智能手机、平板电脑对OTA升级包进行检测是否需要更新,若是,则转到S404,否则,转到S405;

S404,将OTA升级包下载到本地设备上;

S405,不进行下载;

S406,智能电视、手机或平板电脑与蓝牙设备建立连接;

S407,读取蓝牙设备固件版本号,与本地OTA升级包版本号继续对比,看是否需要升级;

S408,智能电视、手机、平板电脑与蓝牙设备将本地存储的OTA升级包发送给蓝牙设备;

S409,蓝牙设备对接受到的OTA升级包进行CRC校验,若校验成功,则转到S410,若校验失败,则转到S408;

S410,蓝牙设备对OTA升级包进行解压缩,恢复原始OTA升级包,烧写至正常启动区;

S411,通知智能电视、手机、平板电脑等设备,升级失败;

S412,重启蓝牙设备,完成升级;

为了进一步的对本申请的发明进行说明,如图5所示为本申请提出的一种原始升级文件的压缩过程。

该过程包括以下步骤:

S501,读取固定长度原始OTA升级包数据;

S502,对读取到的数据进行无损压缩;

S503,将压缩后的数据添加长度为9bytes的head然后写入文件;

在该具体的流程中,标记文件为长度为9bytes的head。

S504,判断是否压缩完整个原始OTA升级包,若是,转到S505;若否,转到S501

S505,结束压缩过程。

为了进一步的对本申请的发明进行说明,如图6所示为本申请提出的一种原始数据压缩包的解压缩过程。

该过程包括以下步骤:

S601首先读取长度为9bytes的head数据,通过head数据确定有所数据的长度;

在该具体的流程中,标记文件为长度为9bytes的head。

S602,根据获取的压缩数据长度读取相应的压缩数据;

S603,对读取的压缩数据进行解压处理,将解压后的数据写入flash;

S604,判断是否解压完整个OTA升级包,若是,转到S605;否,转到S601;

S605,结束解压过程。

通过以上对具体应用场景的描述可知,通过本申请的技术方案,蓝牙芯片首先接收压缩升级包并且将所述压缩升级包储存到所述储存分区。压缩升级包由原始升级文件经过数据压缩并且保持格式不变后得到的,并且为可执行文件,因此蓝牙芯片能够直接对其进行读取。之后蓝牙芯片对压缩升级包进行解压,并将解压出来的数据写入所述程序启动分区。在完成对压缩升级包的解压时,重新启动蓝牙芯片以完成OTA升级的过程。在本申请方案中,在对原始压缩文件进行数据压缩的过程不会引起任何的数据失真,因此保证了升级过程中系统的稳定性。并且,由于对原始升级文件进行了压缩,因此可以极大的减小储存升级包所用的Flash空间。综上,通过本申请的方案在小Flash容量下实现蓝牙芯片OTA升级功能的同时,降低了蓝牙芯片的成本。进一步的,本申请的方案还能够保证升级过程中系统的稳定性。

为了达到以上技术目的,本申请还提出了一种蓝牙芯片,蓝牙芯片内的Flash储存器内有程序启动分区和储存分区如图6所示,所述蓝牙芯片还包括:

接收模块701,通过蓝牙通道接收智能设备发送的压缩升级包并且将所述压缩升级包储存到所述储存分区,所述压缩升级包是由原始升级文件经过数据压缩并且保持格式不变后得到的,所述压缩升级包为可执行文件;

解压模块702,对所述压缩升级包进行解压并将解压后的数据写入所述程序启动分区;

运行模块703,重新启动所述蓝牙芯片进行升级。

在具体的应用场景中,所述压缩升级包的生成过程如下:

接收初始压缩升级包;

判断所述初始压缩升级包的格式是否与所述原始升级文件的格式相同;

若相同,则确认所述初始压缩升级包为所述压缩升级包;若不相同,则将所述初始压缩升级包解压为所述原始升级文件,在保持文件格式不变的基础上对所述原始升级文件进行数据压缩,并将经过数据压缩后的所述原始升级文件确认为所述压缩升级包。

在具体的应用场景中,所述对所述原始升级文件进行数据压缩,具体为:

在所述原始升级文件中读取长度为预设长度的数据;

对所述数据进行数据压缩后得到压缩数据段;

在所述压缩数据段的前面添加指示标记;所述指示标记用于指出所述压缩数据段的长度值;

判断是否完成对原始升级文件的压缩;

若已经完成对原始升级文件的压缩,则结束压缩过程;

若未完成对原始升级文件的压缩,则在原始升级文件中继续读取长度为预设长度的数据。

在具体的应用场景中,所述解压模块具体用于:

读取所述指示标记;

根据所述指示标记获取所述压缩数据段的长度值;

根据所述长度值在所述压缩升级包读取所述压缩数据段;

对读取到的所述压缩数据段进行解压处理;

判断是否已经完成对所述压缩升级包的解压;

若已经完成对所述压缩升级包的解压,则结束解压过程;

若未完成对所述压缩升级包的解压,则继续读取所述指示标记。

在具体的应用场景中,还包括:

校验模块,对所述压缩升级包进行校验,并且在校验失败时重新接收所述压缩升级包。

通过以上描述可以知道,通过本申请的技术方案,蓝牙芯片首先接收压缩升级包并且将所述压缩升级包储存到所述储存分区。压缩升级包由原始升级文件经过数据压缩并且保持格式不变后得到的,并且为可执行文件,因此蓝牙芯片能够直接对其进行读取。之后蓝牙芯片对压缩升级包进行解压,并将解压出来的数据写入所述程序启动分区。在完成对压缩升级包的解压时,重新启动蓝牙芯片以完成OTA升级的过程。在本申请方案中,在对原始压缩文件进行数据压缩的过程不会引起任何的数据失真,因此保证了升级过程中系统的稳定性。并且,由于对原始升级文件进行了压缩,因此可以极大的减小储存升级包所用的Flash空间。综上,通过本申请的方案在小Flash容量下实现蓝牙芯片OTA升级功能的同时,降低了蓝牙芯片的成本。进一步的,本申请的方案还能够保证升级过程中系统的稳定性。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本发明序号仅仅为了描述,不代表实施场景的优劣。

以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号