固件升级方法和相关设备与流程

文档序号:25050699发布日期:2021-05-14 13:10阅读:122来源:国知局
固件升级方法和相关设备与流程

1.本发明涉及蓝牙技术领域,尤其涉及一种固件升级方法和相关设备。


背景技术:

2.蓝牙ota(over

the

air technology,空中下载技术),即采用蓝牙方式对设备中的固件进行升级的技术。目前基于蓝牙对设备中的固件升级的过程主要包括:蓝牙从设备启动ota代码,并从蓝牙主设备获取新版本固件的数据包。其中,蓝牙从设备中的ota代码通常集成在ram(random access memory,随机存储器),这会占用系统较多的ram资源。而且蓝牙从设备接收到蓝牙主设备发送的固件数据包之后采用边擦除边写入的方式将固件数据写入用于存储固件数据包的存储空间。此方式,不仅占用的时间比较长,而且常常需要关闭蓝牙收发中断,容易引起蓝牙断连,影响蓝牙主设备和蓝牙从设备连接的稳定性。


技术实现要素:

3.有鉴于此,本发明实施例提供了一种固件升级方法和相关设备,第一固件中的固件升级代码可以存放在预设存储器由此以节省系统ram资源;该方案提前对用于存储固件数据包的存储空间执行擦除操作,在获取到固件数据包后可以直接执行写入操作,节约固件数据包的传输时间;进一步,上述擦除操作和写入操作在蓝牙传输空闲时间执行,不仅可以降低蓝牙功耗,而且无需关闭蓝牙收发中断,提高设备之间蓝牙连接的稳定性。
4.第一方面,本发明实施例提供了一种固件升级方法,包括:根据第一固件的描述信息,确定第一存储空间,其中,所述第一固件的部分或者全部代码存储于预设存储器,所述第一存储空间位于预设存储器;在蓝牙传输的第一空闲时间,对所述第一存储空间执行擦除操作;在蓝牙传输的第二空闲时间,将第一固件的更新包写入所述第一存储空间,其中,所述更新包来自第一蓝牙设备。可选的,所述预设存储器可以是闪存(flash)存储器。在一个示例中,所述预设存储器可以是nor flash存储器。可选的,第一空闲时间可以包括多个子空闲时间,在每个子空闲时间执行一次擦除操作。可选的,第二空闲时间可以包括多个子空闲时间,在每个子空闲时间执行一次写入操作。可选的,上述子空闲时间均可以是指相邻两个收发中断节点之间的空闲时间。
5.所述第一固件的描述信息是所述第一蓝牙设备确定对第二蓝牙设备中的第一固件升级时发送给所述第二蓝牙设备的。
6.可选的,所述第一固件的描述信息包括:第一固件的大小、第一存储空间的起始地址和代码的运行地址。在一些实施例中,第一固件的描述信息包括第一固件的大小。第二蓝牙设备可以根据第一固件的大小自主确定第一存储空间。可选的,第一固件的描述信息可以包括第一固件的大小和第一存储空间的地址,该地址可以是第一存储空间的起始地址。第二蓝牙设备可以根据第一固件的大小和第一存储空间的地址动态确定第一存储空间。当然第一存储空间也可以是预设存储器中的固定空间。代码的运行地址用于确定更新后的第一固件的运行地址。
7.可选的,在蓝牙传输的第一空闲时间,对所述第一存储空间执行擦除操作,包括:根据所述第一存储空间的大小,对所述第一存储空间执行m次擦除操作,每次擦除操作均在蓝牙传输的空闲时间执行,每次擦除操作擦除的空间均是单位空间的整数倍,m≥1;其中,如果执行完第m

1次擦除操作之后剩余的待擦除空间小于一个单位空间的大小,则将待擦除空间补足为一个单位空间并执行第m次擦除操作。其中,将待擦除空间补足为一个单位空间的方式可以是根据对应存储器的物理特性延伸补足。
8.可选的,对所述第一存储空间执行所述m次中的第q次擦除操作,包括:确定第q次擦除操作需要的擦除时间;确定从当前时间到下一个收发中断节点的第一时间;如果所述第一时间与所述擦除时间的差值在第一取值范围,则在所述第一时间执行第q次擦除操作;否则触发蓝牙连接参数的调整。
9.可选的,所述方法还包括:在蓝牙连接参数调整后,确定当前时间到下一个收发中断节点的第二时间与所述擦除时间的差值在第一取值范围时,在所述第二时间执行第q次擦除操作。
10.可选的,所述第一固件的更新包分为多个子更新包,第一子更新包为第一固件的任意一个子更新包;其中,将所述第一子更新包写入所述第一存储空间,包括:确定将所述第一子更新包写入所述第一存储空间需要的写入时间;确定从当前时间到下一个收发中断节点的第三时间;如果所述第三时间与所述写入时间的差值在第二取值范围,则在所述第三时间将所述第一子更新包写入所述第一存储空间;否则触发蓝牙连接参数的调整。
11.可选的,所述方法还包括:在蓝牙连接参数调整后,确定当前时间到下一个收发中断节点的第四时间与所述写入时间的差值在所述第二取值范围时,在所述第四时间将所述第一子更新包写入所述第一存储空间。
12.可选的,触发蓝牙连接参数的调整,包括:如果所述第三时间与所述写入时间的差值小于所述第二取值范围的最小边界值,则确定后续n个收发中断节点对应的空闲时间与所述写入时间的差值是否均小于所述最小边界值;如果是,则触发增大蓝牙连接参数的调整。
13.可选的,将所述第一固件的更新包写入所述第一存储空间之后,所述方法还包括:在所述第一固件重新启动时,将所述第一固件的更新包代码拷贝至代码的运行地址并运行。
14.第二方面,本发明实施例提供了一种固件升级装置,包括:预设存储模块,用于存储第一固件的部分或者全部代码,以及提供第一存储空间;其中,所述第一固件中对应的固件升级代码包括如下功能模块:确定模块,用于根据第一固件的描述信息,确定第一存储空间;擦写模块,用于在蓝牙传输的第一空闲时间,对所述第一存储空间执行擦除操作;以及用于在蓝牙传输的第二空闲时间,将第一固件的更新包写入所述第一存储空间;蓝牙收发模块,用于从第一蓝牙设备接收更新包。
15.第三方面,本发明实施例提供了一种蓝牙芯片,包括:处理器,其用于执行存储在存储器中的计算机程序指令,其中,当该计算机程序指令被该处理器执行时,触发所述蓝牙芯片执行上述第一方面或者第一方面任一实施例的方法。
16.第四方面,本发明实施例提供了一种电子设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程
序指令,所述处理器调用所述程序指令能够执行上述第一方面或者第一方面任一实施例的方式。
17.第五方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行上述第一方面或者第一方面任一实施例的方式。
18.本发明实施例方案中,第一固件的ota代码可以部分或者全部存放在预设存储器,该预设存储器无需是ram存储器,由此以节省系统ram资源;该方案提前对用于存储固件数据包的存储空间执行擦除操作,在获取到固件数据包后可以直接执行写入操作,节约固件数据包的传输时间;进一步,上述擦除操作和写入操作在蓝牙传输空闲时间执行,不仅可以降低蓝牙功耗,而且无需关闭蓝牙收发中断,设备之间可以正常进行数据收发,提高设备之间蓝牙连接的稳定性。
附图说明
19.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1是本发明实施例提供的一种蓝牙系统的结构示意图;
21.图2是本发明实施例提供的一种蓝牙传输的时间节点示意图;
22.图3是本发明实施例提供的一种固件升级方法的流程图;
23.图4

a是本发明实施例提供的另一种固件升级方法的流程图;
24.图4

b是基于图4

a提供的一种执行擦除操作的流程图;
25.图4

c是基于图4

a提供的一种执行写入操作的流程图;
26.图5是本发明实施例提供的一种固件升级装置的结构示意图;
27.图6是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
28.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.图1是本发明实施例提供的一种蓝牙系统的结构示意图。如图1所示,该系统包括:第一蓝牙设备和第二蓝牙设备。其中,第一蓝牙设备可以作为蓝牙主设备,第二蓝牙设备可以作为蓝牙从设备。第一蓝牙设备与第二蓝牙设备建立蓝牙连接。第一蓝牙设备可以获取新版的第一固件。第二蓝牙设备设置有旧版的第一固件。第一蓝牙设备确定第二蓝牙设备的第一固件需要升级时,第一蓝牙设备向第二蓝牙设备发送第一固件的相关数据包。如图2所示,在蓝牙通信机制中,蓝牙设备之间基于蓝牙连接参数确定收发中断节点(对应图2中的中断节点),相邻的两个收发中断节点的时间可以分为工作时间和空闲时间。其中,工作时间又可以分为用于硬件启动、代码调用等的时间以及数据收发时间。可选的,对于本发明
实施例重点关注处于工作时间的数据收发时间。在数据收发时间,第一蓝牙设备和第二蓝牙设备可以进行数据交互。例如第一蓝牙设备和第二蓝牙设备在数据收发时间可以进行有效数据的收发;如果第一蓝牙设备和第二蓝牙设备之间没有有效数据则可以进行心跳数据的收发。在空闲时间,第一蓝牙设备和第二蓝牙设备进入睡眠状态。如图2可以看出,相邻两个收发中断节点之间工作时间占据的时间长度不同,对应的空闲时间占据的时间长度也不同。
30.上述第一蓝牙设备和第二蓝牙设备均可以是手机、平板电脑、照相机、可穿戴设备、车载设备、楼宇设备、智能家居设备、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备等电子设备,本申请实施例对电子设备的具体类型不作任何限制。
31.图3是本发明实施例提供的一种固件升级方法的流程图。图3所示方法的执行主体可以是上述的第二蓝牙设备。该固件升级方法可以应用于低功耗蓝牙传输方案也可以应用于传统蓝牙传输方案中。可选的,本发明实施例第一固件的代码可以部分或者全部存储在预设存储器。相应的,第一固件包含的固件升级代码的部分或者全部存储在预设存储器。例如,固件升级代码包含将第一固件的更新包写入第一存储空间的代码,该部分代码可以存储在ram或者rom存储器,除此之外的固件升级代码均存储在预设存储器。当然,固件升级代码放置在预设存储器、ram或者rom存储器的部分可以根据实际需要进行调整,此处不再一一举例。所述预设存储器可以是flash存储器。在一个示例中,所述预设存储器可以是nor flash存储器。该方法的处理步骤包括:
32.101,根据第一固件的描述信息,确定第一存储空间。其中,第一固件为第二蓝牙设备中需要升级更新的固件。第一固件可以是第二蓝牙设备中的任意一个固件。第二蓝牙设备获取第一固件的描述信息的方式可以是从固件服务器获取、根据用户的输入获取或者从第一蓝牙设备获取。可选的,第二蓝牙设备从第一蓝牙设备获取第一固件的描述信息的方式可以包括:第二蓝牙设备与第一蓝牙设备建立连接之后,第一蓝牙设备可以读取第二蓝牙设备中已有的第一固件的版本和/或固件bin文件的版本等信息。第一蓝牙设备根据读取的第一固件的版本和/或固件bin文件的版本等信息确定第二蓝牙设备中已有的第一固件需要升级。此时,第一蓝牙设备可以将第一固件的描述信息发送给第二蓝牙设备。需要说明的是,步骤101中第一固件的描述信息为新版本的第一固件的描述信息。可选的,第一固件的描述信息可以包括:第一固件的大小、第一存储空间的起始地址和代码的运行地址。在一些实施例中,第一固件的描述信息包括第一固件的大小。第二蓝牙设备可以根据第一固件的大小自主确定第一存储空间。可选的,第一固件的描述信息可以包括第一固件的大小和第一存储空间的地址,该地址可以是第一存储空间的起始地址。第二蓝牙设备可以根据第一固件的大小和第一存储空间的地址动态确定第一存储空间。当然第一存储空间也可以是预设存储器中的固定空间。代码的运行地址用于确定更新后的第一固件的运行地址。
33.第二蓝牙设备确定对第一固件升级更新之后,可以根据第一固件的描述信息确定第一存储空间。可选的,第二蓝牙设备可以在预设存储器,如上述flash存储器确定第一存储空间。该第一存储空间用于存储升级后的第一固件的更新包。
34.102,在蓝牙传输的第一空闲时间,对第一存储空间执行擦除操作。不同于相关技术中,边擦除边向存储空间写入固件数据的方式。本发明实施例中,在确定第一存储空间之
后,在蓝牙传输的第一空闲时间对第一存储空间执行擦除操作。其中,在蓝牙传输的第一空闲时间,对所述第一存储空间执行擦除操作可以包括:根据第一存储空间的大小,对第一存储空间执行m次擦除操作,每次擦除操作均在蓝牙传输的空闲时间执行,每次擦除操作擦除的空间均是单位空间的整数倍,m≥1。
35.其中,如果执行完第m

1次擦除操作之后剩余的待擦除空间小于一个单位空间的大小,则将待擦除空间补足为一个单位空间并执行第m次擦除操作。其中,将待擦除空间补足为一个单位空间的方式可以是根据对应存储器的物理特性延伸补足。
36.在一些实施例中,如果第一存储空间小于或者等于一个单位空间,则m等于1。即对第一存储空间执行一次擦除操作。其中,如果第一存储空间小于一个单位空间,则需要将第一存储空间补足为一个单位空间再执行擦除操作。该一次次擦除操作的擦除时间对应一个单位时间,该单位时间为擦除一个单位空间需要的时间。其中,该单位时间是基于预设存储器的物理特性确定的。例如,当预设存储器是flash存储器时,该单位时间是基于flash存储器的物理特性确定的。
37.在一些实施例中,如果第一存储空间大于一个单位空间,则m大于1,即对第一存储空间执行至少两次擦除操作。每次擦除操作的擦除空间为单位空间的整数倍。每次擦除操作的擦除时间根据擦除的单位空间个数确定。例如,第q次擦除操作对应一个单位空间,则第q次擦除操作对应一个单位时间。如果第q次擦除操作对应两个单位空间,则第q次擦除操作对应两个单位时间。其中,对于最后一次擦除操作,如果不足一个单位空间,则需要将第一存储空间补足为一个单位空间再执行擦除操作。
38.在一些实施例中,上述单位空间可以包含不同大小的多个单位空间。在执行第q次擦除操作时,首先确定剩余的待擦除空间是否大于或者等于第一单位空间,如果待擦除空间大于或者等于第一单位空间,则第q次擦除一个第一单位空间,第一单位空间为第q

1次擦除操作对应的单位空间。如果剩余的待擦除空间小于第一单位空间,则进一步确定剩余的待擦除空间是否大于或者等于第二单位空间,第二单位空间小于第一单位空间,
……
直至比较至最小的单位空间。如果剩余的待擦除空间小于或者等于最小的单位空间,则第q次擦除操作是最后一次擦除操作。可选的,各个大小不同的单位空间对应的单位时间可以相同,也可以不同。在本发明实施例中,各个大小不同的单位空间对应的单位时间相同。因此,在对第一存储空间擦除时,先基于较大的单位空间擦除,如果不足较大的单位空间,再按照较小的单位空间擦除,由此以提高擦除效率,节约擦除时间。对于最后一次擦除操作,如果最后一次擦除操作对应的剩余待擦除空间不足一个单位空间则补足为一个单位空间。可选的,可以基于最小的单位空间进行补足。
39.103,在蓝牙传输的第二空闲时间,将第一固件的更新包写入第一存储空间,其中,第一固件的更新包来自第一蓝牙设备。
40.本发明实施例中,第二蓝牙设备对第一存储空间擦除完毕后,可以在之后的数据收发时间通知第一蓝牙设备发送第一固件的更新包。第一蓝牙设备根据该通知信息向第二蓝牙设备发送第一固件的更新包。可选的,第一固件的更新包可以分为多个子更新包。各个子更新包可以分别发送给第二蓝牙设备。例如,第一蓝牙设备每次发送一个子更新包给第二蓝牙设备。第二蓝牙设备将该一个子更新包写入第一存储空间之后,再进行下一个子更新包的接收和写入。当然第一蓝牙设备和第二蓝牙设备之间也可以根据实际需要调整子更
新包的收发数量和写入时间等。其中,为描述的方便将第一固件的各个子更新包中的任意一个子更新包称为第一子更新包。
41.第二蓝牙设备接收到第一子更新包之后,在蓝牙传输的一个空闲时间将第一子更新包写入第一存储空间。该空闲时间可以是第二蓝牙设备接收到第一子更新包之后,下一个收发中断节点之前的空闲时间。例如,当前时间为t3,下一个收发中断节点的到来时间为t4,则第二蓝牙设备可以在t4‑
t3的这段空闲时间将第一子更新包写入第一存储空间。
42.本发明实施例的固件升级方法,ota代码可以部分或者全部存放在预设存储器,该预设存储器无需是ram存储器,由此以节省系统ram资源;该方案提前对用于存储固件数据包的存储空间执行擦除操作,在获取到固件数据包后可以直接执行写入操作,节约固件数据包的传输时间;进一步,上述擦除操作和写入操作在蓝牙传输空闲时间执行,不仅可以降低蓝牙功耗,而且无需关闭蓝牙收发中断,蓝牙设备之间可以正常进行数据收发,提高设备之间蓝牙连接的稳定性。
43.图4

a是本发明实施例提供的另一种固件升级方法的流程图。如图4

a所示,该方法的处理步骤包括:
44.201,第一蓝牙设备确定第二蓝牙设备中的第一固件需要升级时,向第二蓝牙设备发送第一固件的描述信息。第一固件的描述信息包括第一固件的大小、第一存储空间的起始地址和和代码的运行地址。该第一固件的大小即为新版本第一固件的大小。
45.202,第二蓝牙设备根据第一固件的大小和第一存储空间的起始地址,确定第一存储空间。可选的,第二蓝牙设备可以在nor flash中确定第一存储空间。
46.203,第二蓝牙设备根据第一存储空间的大小,对第一存储空间执行m次擦除操作,每次擦除操作均在蓝牙传输的空闲时间执行,每次擦除操作擦除的空间均是单位空间的整数倍,m≥1。
47.如果执行完第m

1次擦除操作之后剩余的待擦除空间小于一个单位空间的大小,则将待擦除空间补足为一个单位空间并执行第m次擦除操作。
48.本发明实施例中,对所述第一存储空间执行m次中的第q次擦除操作,如图4

b所示,具体可以包括:
49.2031,确定第q次擦除操作需要的擦除时间。q取值为1、2
……
m。该擦除时间为单位时间的整数倍,单位时间根据预设存储空间的物理特性确定。在一些实施例中,第一存储空间支持以第一单位空间和第二单位空间为单位进行擦除操作。第一单位空间大于第二单位空间。如果第q次擦除操作对应的剩余待擦除空间大于或者等于一个第一单位空间,则第q次擦除一个第一单位空间,擦除时间对应一个第一单位空间需要的单位时间。如果第q次擦除操作对应的剩余待擦除空间小于一个第一单位空间,大于或等于一个第二单位空间,则第q次擦除一个第二单位空间,擦除时间对应一个第二单位空间需要的单位时间。如果第q次擦除操作对应的剩余待擦除空间小于一个第二单位空间,则第q次擦除操作为最后一次擦除操作,则将剩余待擦除空间补足为一个第二单位空间并执行擦除操作,擦除时间对应一个第二单位空间需要的单位时间。可选的,第一单位空间和第二单位空间需要的单位时间可以相同,也可以不同,其可以根据flash的物理特性确定。例如在flash存储器中,支持以64k和4k为单位执行擦除操作。假设第一存储空间大小为70k,其包含一个64k空间、1个4k空间并剩余1个2k空间。一个64k空间对应的单位擦除时间为a,一个4k空间对应的单位擦除
时间为b,剩余的1个2k空间补足为一个4k空间。则实际擦除的空间为64k+4k+4k,擦除时间为a+2b。a和b的取值可以根据flash的物理特性确定。可选的,a和b可以取值相同。基于上述方式可以尽量降低第一存储空间需要的擦除时间。
50.2032,确定从当前时间到下一个收发中断节点的第一时间。其中,该第一时间即对应一个蓝牙传输的空闲时间。
51.2033,第一时间与擦除时间的差值是否在第一取值范围,如果是执行步骤2034,如果否执行步骤2035。其中,第一时间与擦除时间的差值不在第一取值范围包括:第一时间减去擦除时间的差值小于第一取值范围的最小边界值,或者,第一时间减去擦除时间的差值大于第一取值范围的最大边界值。该最小边界值和最大边界值限定的取值范围为第一取值范围。
52.2034,在第一时间执行第q次擦除操作。
53.2035,触发蓝牙连接参数的调整。其中,触发蓝牙连接参数的调整可以是通过底层硬件调整蓝牙连接参数。可选的,第二蓝牙设备中的第一固件向底层硬件发送调整蓝牙连接参数的第一信息。可选的,此处的第一固件可以是第一固件的升级程序。第二蓝牙设备中的底层硬件根据该第一信息对蓝牙连接参数进行调整,并在经第一蓝牙设备的底层硬件确认后,第二蓝牙设备的底层硬件将调整后的蓝牙连接参数发送给第二蓝牙设备上层的第一固件。
54.如果第一时间减去擦除时间的差值小于第一取值范围的最小边界值,则增大蓝牙连接参数。如果第一时间减去擦除时间的差值大于第一取值范围的最大边界值,则减小蓝牙连接参数。
55.2036,在蓝牙连接参数调整后,确定当前时间到下一个收发中断节点的第二时间与所述擦除时间的差值在第一取值范围时,在所述第二时间执行第q次擦除操作。
56.经过上述m次擦除操作,对第一存储空间擦除完毕后,第二蓝牙设备可以通知第一蓝牙设备发送第一固件的更新包。可选的,第二蓝牙设备在通知第一蓝牙设备发送第一固件的更新包之前可以再次调整蓝牙连接参数,该次调整可以为减小蓝牙连接参数,以减小相邻两个收发中断节点之间的间隔,以使后续写入时对应的空闲时间与更新包的大小更加匹配。当然,第二蓝牙设备也可以对第一存储空间擦除完毕后不对蓝牙连接参数进行调整即通知第一蓝牙设备发送第一固件的更新包。
57.204,第二蓝牙设备分别接收第一固件的各个子更新包,并在蓝牙传输的空闲时间分别将各个子更新包写入第一存储空间。其中,将第一子更新包写入第一存储空间的方式,第一子更新包为各个子更新包中的任意一个,如图4

c所示,包括:
58.2041,第二蓝牙设备确定将第一子更新包写入第一存储空间需要的写入时间。
59.2042,第二蓝牙设备确定从当前时间到下一个收发中断节点的第三时间(对应图中的t3)。
60.2043,第二蓝牙设备确定第三时间与写入时间的差值是否在第二取值范围,如果是,执行步骤2044;如果否,执行步骤2045。
61.其中,第三时间与写入时间的差值不在第二取值范围包括:第三时间减去写入时间的差值小于第二取值范围的最小边界值,或者,第三时间减去写入时间的差值大于第二取值范围的最大边界值。其中,此处的最小边界值和最大边界值限定的取值范围为第二取
值范围。
62.例如,当前时间为t3,下一个收发中断节点的到来时间为t4,则第三时间为t4‑
t3。如果t4‑
t3‑
写入时间的差值在第二取值范围内,说明在第三时间内可以比较高效地执行完对第一子更新包的写入操作。但如果t4‑
t3‑
写入时间的差值大于第二取值范围的最大边界值,说明当前时间到下一个收发中断节点之间的空闲时间远远大于写入时间,会造成不必要的等待,因此可以通过调整蓝牙连接参数将空闲时间调小以提高第一固件的传输效率。如果t4‑
t3‑
写入时间的差值小于第二取值范围的最小边界值,说明当前蓝牙连接参数下的空闲时间难以完成写入操作,则需要通过调整蓝牙连接参数将空闲时间增大以提高第一固件传输的稳定性。
63.2044,第二蓝牙设备在第三时间将第一子更新包写入第一存储空间。
64.2045,第二蓝牙设备触发蓝牙连接参数的调整。其中,当所述第三时间与所述写入时间的差值小于所述第二取值范围的最小边界值时,第二蓝牙设备确定后续n个收发中断节点对应的空闲时间与所述写入时间的差值是否均小于所述第二取值范围的最小边界值,如果是,则触发增大蓝牙连接参数的调整。
65.本发明实施例中,如果第三时间与所述写入时间的差值小于所述第二取值范围的最小边界值,可能是由于代码运行、数据收发时间占用较多造成的。由此可以继续确定后续n个收发中断节点对应的空闲时间是否能满足上述差值要求,如果在第x个中断收发节点与第x

1个中断收发节点之间的空闲时间与写入时间的差值在第二取值范围内,则在该空闲时间将第一子更新包写入第一存储空间。其中,n可以根据实际需要设定,例如可以设置为3,4,5或者其它可能的个数。x为n中的一个取值。如果后续n个收发中断节点对应的空闲时间与写入时间的差值均小于第二取值范围的最小边界值,则可以通过调整蓝牙连接参数使相应的空闲时间满足写入要求。通过此方式,可以减少对蓝牙连接参数的调整,保证蓝牙连接的稳定性。
66.2046,在蓝牙连接参数调整后,确定当前时间到下一个收发中断节点的第四时间与所述写入时间的差值在所述第二取值范围时,在所述第四时间将所述第一子更新包写入所述第一存储空间。
67.在本实施例中,上述第一子更新包为新版本固件的任意一个子更新包。各个子更新包写入第一存储空间的方式相同,不再赘述。
68.第二蓝牙设备将所述第一固件的所有子更新包均写入所述第一存储空间之后,所述方法还包括:在所述第一固件重新启动时,将所述第一固件的更新包代码拷贝至代码的运行地址并运行。
69.本发明实施例中,根据新版本固件的大小,可以提前对存储空间执行擦除操作,减少固件升级过程中的擦写时间,增加系统和蓝牙连接的稳定性。进一步,本发明实施例的固件升级代码可以直接存储在nor flash中运行,节省系统ram资源。进一步,本方案在蓝牙传输的空闲时间执行存储空间的擦除操作和固件升级数据的写入操作,可以提高处理器利用率,加快固件升级速度。另外,该方案可以根据执行擦除操作需要的时间和执行写入操作需要的时间动态调整蓝牙连接参数,可以提高第一固件更新包传输的效率和稳定性。进一步,该估计升级过程无需关闭蓝牙传输中断,可正常进行蓝牙数据的收发,确保设备之间蓝牙连接的稳定性。当然,在固件升级阶段也可以支持闪存挂起/恢复(flash suspend/resume)
机制,也支持可被其他中断打断。
70.对应上述固件升级方法,本发明实施例还提供了一种固件升级装置。本领域技术人员可以理解,这些固件升级装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
71.如图5所示,该固件升级装置包括:预设存储模块,该预设存储模块用于存储第一固件的部分或者全部代码,以及提供第一存储空间;如图5所示,第一固件中对应的固件升级代码包括如下功能模块:
72.确定模块301,用于根据第一固件的描述信息,确定第一存储空间;擦写模块302,用于在蓝牙传输的第一空闲时间,对所述第一存储空间执行擦除操作;以及在蓝牙传输的第二空闲时间,将第一固件的更新包写入所述第一存储空间;蓝牙收发模块303,用于从第一蓝牙设备接收第一固件的更新包。
73.本发明实施例的固件升级装置可以执行图3

图4所示实施例的方法。本实施例未详细描述的部分,可以参考对图3

图4所示实施例的相关说明。该技术方案的执行过程和技术效果参见图3

图4所示实施例中的描述,在此不再赘述。
74.应理解,图5所示的固件升级装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块以软件通过处理元件调用的形式实现,部分模块通过硬件的形式实现。例如,擦写模块可以为单独设立的处理元件,也可以集成在电子设备的某一个芯片中实现。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
75.例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit;以下简称:asic),或,一个或多个微处理器(digital singnal processor;以下简称:dsp),或,一个或者多个现场可编程门阵列(field programmable gate array;以下简称:fpga)等。再如,这些模块可以集成在一起,以片上系统(system

on

a

chip;以下简称:soc)的形式实现。
76.本发明实施例还提供了一种蓝牙芯片,包括:处理器,其用于执行存储在存储器中的计算机程序指令,其中,当该计算机程序指令被该处理器执行时,触发所述蓝牙芯片执行上述固件升级方法。可选的,所述存储器可以包括flash存储器,所述flash存储器用于存储第一固件的部分或者全部代码。在一个示例中,所述flash存储器可以是nor flash存储器。
77.图6是本发明实施例提供的一种电子设备的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本说明书实施例的功能和使用范围带来任何限制。如图6所示,电子设备以通用计算设备的形式表现。电子设备的组件可以包括但不限于:一个或者多个处理器410,通信接口420,存储器430,连接不同系统组件(包括存储器430,通信接口420和处理器410)的通信总线440。上述通信接口420可以与其它电子设备或者其它部件连接,例如通信接口420可以与其它蓝牙设备通信。
78.具体的,在本申请一实施例中,电子设备的处理器可以是片上装置soc,该处理器中可以包括中央处理器(central processing unit,cpu),还可以进一步包括其他类型的
处理器。
79.具体的,在本申请一实施例中,涉及的处理器可以例如包括cpu、dsp、微控制器或数字信号处理器,还可包括gpu、嵌入式神经网络处理器(neural

network process units,npu)和图像信号处理器(image signal processing,isp),该处理器还可包括必要的硬件加速器或逻辑处理硬件电路,如asic,或一个或多个用于控制本申请技术方案程序执行的集成电路等。此外,处理器可以具有操作一个或多个软件程序的功能,软件程序可以存储在存储介质中。
80.通信总线440表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industry standard architecture;以下简称:isa)总线,微通道体系结构(micro channel architecture;以下简称:mac)总线,增强型isa总线、视频电子标准协会(video electronics standards association;以下简称:vesa)局域总线以及外围组件互连(peripheral component interconnection;以下简称:pci)总线。
81.电子设备典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
82.存储器430可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(random access memory;以下简称:ram)和/或高速缓存存储器。电子设备可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。可选的,存储器430可以包括flash存储器,flash存储器用于存储固件的部分或者全部代码。其中,固件代码中的固件升级代码的部分或者全部存储在flash存储器。当固件升级代码被处理器410调用时执行本说明书各实施例的固件升级方法。可选的,存储器430可以包括ram存储器,ram存储器可以用于配合flash存储器执行本发明实施例的固件升级方法。例如,当通过通信接口420接收到第一蓝牙设备发送的第一固件的数据包,可以将数据包缓存在ram中,之后再从ram写入flash存储器。
83.本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行本说明书图3~图4所示实施例提供的方法。
84.上述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(read only memory;以下简称:rom)、flash存储器、可擦式可编程只读存储器(erasable programmable read only memory;以下简称:eprom)或闪存、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
85.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但
不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
86.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、rf等等,或者上述的任意合适的组合。
87.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
88.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
89.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本说明书的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
90.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本说明书的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本说明书的实施例所属技术领域的技术人员所理解。
91.取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
92.在本说明书所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
93.另外,在本说明书各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
94.以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1