CN117098105A - 一种嵌入式设备集群的固件升级方法、装置和系统 - Google Patents
一种嵌入式设备集群的固件升级方法、装置和系统 Download PDFInfo
- Publication number
- CN117098105A CN117098105A CN202311057420.9A CN202311057420A CN117098105A CN 117098105 A CN117098105 A CN 117098105A CN 202311057420 A CN202311057420 A CN 202311057420A CN 117098105 A CN117098105 A CN 117098105A
- Authority
- CN
- China
- Prior art keywords
- loader
- firmware
- sub
- embedded
- upgraded
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 157
- 230000015654 memory Effects 0.000 claims description 122
- 238000004891 communication Methods 0.000 claims description 69
- 238000012545 processing Methods 0.000 claims description 7
- 239000003550 marker Substances 0.000 claims description 2
- 230000008569 process Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 24
- 238000012795 verification Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000001680 brushing effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
- H04W76/11—Allocation or use of connection identifiers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
- H04W76/14—Direct-mode setup
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/40—Connection management for selective distribution or broadcast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W8/00—Network data management
- H04W8/22—Processing or transfer of terminal data, e.g. status or physical capabilities
- H04W8/24—Transfer of terminal data
- H04W8/245—Transfer of terminal data from a network towards a terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W84/00—Network topologies
- H04W84/02—Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
- H04W84/04—Large scale networks; Deep hierarchical networks
- H04W84/08—Trunked mobile radio systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及固件升级领域,提供了一种嵌入式设备集群的固件升级方法、装置、系统、电子设备、计算机可读存储介质和芯片。该方法包括:接收嵌入式设备集群中的嵌入式设备发送的蓝牙广播包,其中,蓝牙广播包包括第一标识信息,第一标识信息用于标识嵌入式设备的种类;若第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的嵌入式设备建立BLE连接;通过BLE将与第一标识信息对应的升级文件发送给待升级嵌入式设备,以使待升级嵌入式设备通过升级文件升级其固件。本发明提高了嵌入式设备集群的固件升级效率。
Description
技术领域
本发明涉及固件升级领域,尤其涉及一种嵌入式设备集群的固件升级方法、装置、系统、电子设备、计算机可读存储介质和芯片。
背景技术
随着物联网技术的快速发展及可穿戴式智能设备的普及,在越来越多的应用场景中,需要由多个嵌入式设备组成嵌入式设备集群,共同完成各应用场景下的功能需求。
目前,在对嵌入式设备集群中每个嵌入式设备的固件进行升级时,上位机在获取到升级包后,上位机基于蓝牙协议与嵌入式设备集群中的嵌入式设备建立一对一的通信连接,上位机串行对嵌入式设备进行固件升级,使得上位机对嵌入式设备集群中的多个设备进行升级的时候,升级效率低。且所有的待升级嵌入式设备通常会加载同一升级包,该升级包由每个待升级嵌入式设备升级所需的升级资源组合而成。当嵌入式设备集群中的嵌入式设备需要升级的时候,所有需要升级的嵌入式设备都会下载这一升级包中的全部升级资源,使得下载的数据量大、下载效率低,进而导致升级效率低。
因此,如何提高嵌入式设备集群的固件的升级效率成了一个亟待解决的问题。
发明内容
基于上述现状,本发明的主要目的在于提供一种嵌入式设备集群的固件升级方法、装置、系统、电子设备、计算机可读存储介质和芯片,提高了嵌入式设备集群的固件的升级效率。
为实现上述目的,本发明采用的技术方案如下:
一种嵌入式设备集群的固件升级方法,应用于上位机,该方法包括:S110,接收嵌入式设备集群中的嵌入式设备发送的蓝牙广播包,其中,蓝牙广播包包括第一标识信息,第一标识信息用于标识嵌入式设备的种类;S120,若第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的嵌入式设备建立BLE连接;S130,通过BLE将与第一标识信息对应的升级文件发送给待升级嵌入式设备,以使待升级嵌入式设备通过升级文件升级其固件。
优选地,嵌入式设备集群具有M个嵌入式设备,其中M为正整数,M≥1;S110包括:S111,接收第i个嵌入式设备发送的蓝牙广播包,其中i为正整数,1≤i≤M,i的初始值为1;S120包括:若第i个嵌入式设备发送的蓝牙广播包中的第一标识信息属于多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的第i个嵌入式设备建立BLE连接,对i自加1并转至步骤S111,直至i=M。
优选地,在S130之后,该方法还包括:S140,接收由待升级嵌入式设备发送的固件升级完成信息;S150,将待升级嵌入式设备加入已升级设备列表。
优选地,蓝牙广播包还包括第二标识信息,第二标识信息用于标识每个嵌入式设备;S150包括:将发送固件升级完成信息的待升级嵌入式设备的第二标识信息加入已升级设备列表;S120包括:S122若第一标识信息属于多种待升级嵌入式设备中其中一种设备的标识信息且第二标识信息不位于已升级设备列表,则与作为待升级嵌入式设备的嵌入式设备建立BLE连接。
优选地,嵌入式设备集群具有M个嵌入式设备,其中M为正整数,M≥1;S110包括:S112,接收第i个嵌入式设备发送的蓝牙广播包,其中i为正整数,1≤i≤M,i的初始值为1;S122包括:判断第i个嵌入式设备发送的蓝牙广播包中的第一标识信息是否属于多种待升级嵌入式设备中其中一种设备的标识信息;若属于,则判断第i个嵌入式设备发送的蓝牙广播包中的第二标识信息是否位于已升级设备列表;若不位于,则与待升级嵌入式设备的第i个嵌入式设备建立BLE连接,对i自加1并转至步骤S112,直至i=M。
优选地,升级文件包括前级装载程序和多个子装载程序,前级装载程序用于加载子装载程序,前级装载程序包括与预设多种待升级嵌入式设备对应的多个子装载程序列表,每个子装载程序列表中记录有多个子装载程序标识,多个子装载程序用于升级与记录其标识的列表所对应的待升级嵌入式设备中的多个待升级固件;S130包括:通过BLE将前级装载程序发送给待升级嵌入式设备以使待升级嵌入式设备通过与其对应的子装载程序列表中的多个子装载程序标识从多个子装载程序中拉取与其对应的子装载程序,以升级其固件。
优选地,在S110之前,该方法还包括:通过big或cig蓝牙通讯方式向嵌入式设备集群发送指令,以使嵌入式设备集群中的嵌入式设备将蓝牙通讯方式从big或cig切换为BLE。
在本发明实施例中,上位机通过接收嵌入式设备集群中的嵌入式设备发送的蓝牙广播包以实现与嵌入式设备的快速连接;上位机通过与嵌入式设备的BLE连接,可以实现快速、稳定的通信,且可以实现对多台嵌入式设备的并行升级;上位机通过第一标识信息将与该待升级嵌入式设备对应的升级文件发送给待升级嵌入式设备以避免待升级嵌入式设备升级时需要接收所有的升级资源,从而提高升级效率。
本发明还提供了如下技术方案:
一种嵌入式设备集群的固件升级方法,应用于嵌入式设备,该方法包括:S210,发送包含第一标识信息的蓝牙广播包以使上位机根据第一标识信息确定嵌入式设备的种类是否为待升级嵌入式设备中的一种,其中,第一标识信息用于标识嵌入式设备的种类;S220,在上位机识别嵌入式设备为待升级嵌入式设备后,与上位机进行BLE连接;S230,通过BLE从上位机中获取与第一标识信息对应的升级文件并通过升级文件升级待升级嵌入式设备中的固件。
优选地,在S230之后,该方法还包括:S240,通过BLE向上位机发送固件升级完成信息以使上位机将嵌入式设备加入已升级设备列表。
优选地,S240包括:通过BLE向上位机发送固件升级完成信息以使上位机将嵌入式设备的第二标识信息加入已升级设备列表,其中,第二标识信息用于标识每个嵌入式设备;S210包括:发送包含第一标识信息和第二标识信息的蓝牙广播包以使上位机根据第一标识信息、第二标识信息和已升级设备列表确定嵌入式设备为待升级嵌入式设备。
优选地,S230包括:S231,通过BLE从上位机获取前级装载程序,前级装载程序包括与多种待升级嵌入式设备对应的多个子装载程序列表,每个子装载程序列表中记录有多个子装载程序标识;S232,运行前级装载程序以从多个子装载程序列表中查找到与第一标识信息对应的子装载程序列表;S233,根据子装载程序列表中记录的子装载程序标识,通过BLE从上位机中拉取与子装载程序标识对应的子装载程序;S234,运行子装载程序,以升级嵌入式设备中与子装载程序对应的固件。
优选地,在S210之前,该方法还包括:通过big或cig蓝牙通讯方式接收来自上位机的指令,基于指令将蓝牙通讯方式从big或cig蓝牙通讯方式切换为BLE。
优选地,S231包括:S2311,通过BLE从上位机获取前级装载程序,并将至少部分前级装载程序存储在可擦写非易失性存储器中;S2312,将前级装载程序加载至RAM;S232包括:在RAM中运行前级装载程序以从多个子装载程序列表中查找到与第一标识信息对应的子装载程序列表;S233包括:S2332,根据子装载程序列表中记录的子装载程序标识,通过BLE从上位机中拉取与子装载程序标识对应的子装载程序;S2334,将与子装载程序标识对应的子装载程序加载至RAM中;S234包括:在RAM中运行子装载程序,以升级嵌入式设备中与子装载程序对应的固件。
优选地,前级装载程序包括第一装载程序和第二装载程序,第二装载程序包括与多种待升级嵌入式设备对应的多个子装载程序列表;S2311包括:S2311a,通过BLE从上位机获取第一装载程序,并将第一装载程序存储在可擦写非易失性存储器中;S2311b,运行第一装载程序,以从上位机获取第二装载程序;S2312包括:将第二装载程序加载至RAM;S232包括:在RAM中运行第二装载程序,以从多个子装载程序列表中查找到与第一标识信息对应的子装载程序列表。
优选地,第一装载程序由通信接口代码和第一加载代码组成,其中,通信接口代码用于实现嵌入式设备和上位机的通信接口,第一加载代码用于通过通信接口从上位机获取第二装载程序。
优选地,嵌入式设备的固件包括引导程序、应用程序、程序资源中的一个或多个,与嵌入式设备对应的子装载程序列表中按顺序记录有N个子装载程序标识,其中N为正整数,N≥1;S2332包括:根据子装载程序列表中记录的第i个子装载程序标识,通过BLE从上位机中拉取第i个子装载程序标识所对应的子装载程序,其中i为正整数,1≤i≤N,i的初始值为1;S2334包括:将第i个子装载程序标识所对应的第i个子装载程序加载至RAM中;S234包括:在RAM中运行第i个子装载程序,以从上位机中获取与第i个子装载程序对应的第i个固件的升级数据从而升级嵌入式设备中与第i个子装载程序对应的固件;在S234之后,方法还包括S235:对i自加1并转至S2332,直至i=N。
优选地,在S2311之后,该方法还包括:在RAM中设置标志位,其中,标志位在掉电时会被删除;S232包括:S2321,运行引导程序,以判断RAM中是否存在标志位;S2323,若引导程序判断RAM中存在标志位,在RAM中运行前级装载程序,以从多个子装载程序列表中查找到与第一标识信息对应的子装载程序列表;S2325,若引导程序判断RAM中不存在标志位,引导嵌入式设备正常启动;在S235后,方法还包括:S236,删除标志位。
优选地,可擦写非易失性存储器的记录区域记录有当前升级进度,S2332包括:在RAM中运行前级装载程序,以根据记录区域记录的当前升级进度和子装载程序列表中记录的子装载程序标识从上位机获取相应的第i个子装载程序,其中,相应的第i个子装载程序为当前升级进度下所需执行的下一操作步骤用于升级的第i个固件所对应的子装载程序;S234包括:S2342,在RAM中运行第i个子装载程序,根据记录区域记录的当前升级进度,若当前升级进度为第i个固件擦除成功,则执行步骤S2346;若当前升级进度为第i个固件写入成功,则执行S2348;若当前升级进度为无升级状态,则执行S2344;若当前升级进度为第i个固件升级成功,则执行S235;S2344,擦除可擦写非易失性存储器中存储的与第i个子装载程序对应的第i个固件,并在可擦写非易失性存储器的记录区域记录当前升级进度为第i个固件擦除成功;S2346,从上位机中获取该固件的升级数据,将该固件的升级数据存储至可擦写非易失性存储器,并在记录区域记录当前升级进度为第i个固件写入成功;S2348,若校验该固件升级成功,在记录区域记录当前升级进度为第i个固件升级成功;若校验该固件升级失败,在记录区域记录当前升级进度为该固件擦除成功的前一升级进度,前一升级进度为第(i-1)个固件升级成功或无升级状态。
优选地,在S234之后S235之前,方法还包括:S2343,在RAM中运行前级装载程序,以根据第i个子装载程序标识从上位机中获取与第i个子装载程序对应的第i个校验程序,并将第i个校验程序加载至RAM中;S2345,在RAM中运行该校验程序,以校验与第i个子装载程序对应的第i个固件的升级是否成功,若成功则执行步骤S235,否则重复执行上一次执行的步骤S2332。
优选地,步骤S2332中拉取的当前子装载程序用于更新嵌入式设备中的引导程序;在S2332之后,该方法还包括:S2333,将可擦写非易失性存储器中第一地址存储的引导程序备份至可擦写非易失性存储器中的第二地址。
优选地,嵌入式设备的固件包括引导程序以及应用程序和程序资源中的至少一个,与嵌入式设备对应的子装载程序列表中按顺序记录有N个子装载程序标识,其中N为正整数,N≥1,与子装载程序标识对应的每个子装载程序分别用于更新嵌入式设备中与其对应的固件;S232包括:运行前级装载程序以从多个子装载程序列表中查找到与第一标识信息对应的子装载程序列表,前级装载程序用于:根据子装载程序列表中记录的子装载程序标识,通过BLE从上位机中拉取与第1个子装载程序标识所对应的第1个子装载程序,第1个子装载程序为引导程序装载程序,引导程序装载程序用于:将可擦写非易失性存储器中第一地址存储的引导程序备份至可擦写非易失性存储器中的第二地址,并擦除第一地址存储的引导程序;从上位机中获取引导程序,将获取的引导程序写入可擦写非易失性存储器;按照与嵌入式设备对应的子装载程序列表中记录的N个子装载程序标识的顺序,依次根据子装载程序列表中记录的子装载程序标识从上位机中拉取剩余的子装载程序,剩余的子装载程序为应用程序装载程序和/或程序资源应用程序,子装载程序用于从上位机中获取与该子装载程序对应的固件的升级数据,将获取的升级数据写入可擦写非易失性存储器。
优选地,可擦写非易失性存储器的记录区域用于记录升级进度;引导程序装载程序在将可擦写非易失性存储器中第一地址存储的引导程序备份至可擦写非易失性存储器中的第二地址之前,还用于:在记录区域无记录信息时,判断上位机中引导程序的头部CRC码与嵌入式设备的引导程序的头部CRC码是否一致;若上位机中引导程序的头部CRC码与嵌入式设备的引导程序的头部CRC码不一致,执行将可擦写非易失性存储器中第一地址存储的引导程序备份至可擦写非易失性存储器中的第二地址的步骤。
优选地,第二地址为可擦写非易失性存储器中n*m字节地址,n为整数,n≥0,m为正整数;该方法还包括:步骤S203,上电后读取可擦写非易失性存储器中j*m字节地址存储的数据,判断读取的数据是否符合可擦写非易失性存储器的头部结构,其中,其中j为正整数,1≤j≤n,j的初始值为1;若读取的数据符合可擦写非易失性存储器的头部结构,执行步骤S205,否则,执行步骤S207;步骤S205,偏移可擦写非易失性存储器的头部长度读取存储于可擦写非易失性存储器的头部之后的引导程序,将该引导程序从可擦写非易失性存储器加载至RAM中运行;步骤S207,对j自加1并转至步骤S203,直至j=n。
优选地,上位机中包括按顺序排列的N个固件,每个固件的头部包括头部CRC码、数据CRC码、固件存储地址、固件运行地址和固件长度;从上位机中获取与第i个子装载程序对应的第i个固件的升级数据从而升级嵌入式设备中与第i个子装载程序对应的固件,包括:计算第i个固件的头部的偏移值,第i个固件的头部的偏移值等于上位机中该固件之前的所有固件的固件长度之和;通过第i个固件的头部CRC码确定第i个固件的头部的完整性;若第i个固件的头部完整,从上位机中的与第i个固件的固件存储地址对应的地址,读取长度为第i个固件的固件长度的数据,将其写入至可擦写非易失性存储器中的与第i个固件的固件运行地址对应的地址;计算写入可擦写非易失性存储器中的与第i个固件的固件运行地址对应的地址的固件的CRC码,将该固件的CRC码与上位机中第i个固件的头部中的数据CRC码是否一致以校验固件读取是否正确。
本发明还提供了如下技术方案:
一种嵌入式设备集群的固件升级装置,应用于上位机,该装置包括:接收模块,用于接收嵌入式设备集群中的嵌入式设备发送的蓝牙广播包,其中,蓝牙广播包包括第一标识信息,第一标识信息用于标识嵌入式设备的种类;连接模块,用于若第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的嵌入式设备建立BLE连接;发送模块,用于通过BLE将与第一标识信息对应的升级文件发送给待升级嵌入式设备,以使待升级嵌入式设备通过升级文件升级其固件。
本发明还提供了如下技术方案:
一种嵌入式设备集群的固件升级装置,应用于嵌入式设备,该装置包括:发送模块,用于发送包含第一标识信息的蓝牙广播包以使上位机根据第一标识信息确定嵌入式设备的种类是否为待升级嵌入式设备中的一种,其中,第一标识信息用于标识嵌入式设备的种类;连接模块,用于在上位机识别嵌入式设备为待升级嵌入式设备后,与上位机进行BLE连接;处理模块,用于通过BLE从上位机中获取与第一标识信息对应的升级文件并通过升级文件升级待升级嵌入式设备中的固件。
本发明还提供了如下技术方案:
一种嵌入式设备集群的固件升级系统,包括上位机和多个嵌入式设备;嵌入式设备,用于发送包含第一标识信息的蓝牙广播包,其中,第一标识信息用于标识嵌入式设备的种类;上位机,用于接收嵌入式设备发送的蓝牙广播包;上位机,还用于若第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的嵌入式设备建立BLE连接;待升级嵌入式设备,用于与上位机进行BLE连接;上位机,还用于通过BLE将与第一标识信息对应的升级文件发送给待升级嵌入式设备;待升级嵌入式设备,还用于通过BLE从上位机中获取与第一标识信息对应的升级文件并通过升级文件升级待升级嵌入式设备中的固件。
本发明实施例还提供了一种电子设备,包括:处理器和存储器,存储器中存储有可执行指令,处理器能执行可执行指令以实现上位机侧所执行的任意实施例中的嵌入式设备集群的固件升级方法,处理器还能执行上述可执行指令以实现嵌入式设备侧所执行的任意实施例中的嵌入式设备集群的固件升级方法。
本发明实施例还提供了一种计算机可读存储介质,存储介质中存储有至少一可执行指令,可执行指令被执行时能实现如上位机侧所执行的任意实施例中的嵌入式设备集群的固件升级方法的操作或者如嵌入式设备侧所执行的任意实施例中的嵌入式设备集群的固件升级方法的操作。
本发明实施例还提供了一种芯片,适用于电子设备,芯片内存储有指令集,指令集被执行时,能够指示电子设备实现如上在上位机侧执行的嵌入式设备集群的固件升级方法的操作,指示电子设备实现如上在嵌入式设备侧执行的嵌入式设备集群的固件升级方法的操作。
本发明的其他有益效果,将在具体实施方式中通过具体技术特征和技术方案的介绍来阐述,本领域技术人员通过这些技术特征和技术方案的介绍,应能理解所述技术特征和技术方案带来的有益技术效果。
附图说明
以下将参照附图对本发明的嵌入式设备集群的固件升级方法、装置、系统、电子设备、计算机可读存储介质和芯片的优选实施方式进行描述。图中:
图1为本发明实施例提供的嵌入式设备集群的固件升级方法的应用场景示意图;
图2为本发明实施例提供的嵌入式设备集群的固件升级方法的流程示意图;
图3为本发明另一实施例提供的嵌入式设备集群的固件升级方法的流程示意图;
图4为本发明另一实施例提供的嵌入式设备集群的固件升级方法的流程示意图;
图5为本发明另一实施例提供的嵌入式设备集群的固件升级方法的流程示意图;
图6为本发明实施例提供的嵌入式设备集群的固件升级方法中步骤S234的子步骤的流程示意图;
图7为一具体实例中嵌入式设备中Flash和RAM的存储区域结构、上位机中升级文件的结构以及固件升级流程示意图;
图8为图7中n个子装载程序的结构示意图;
图9为图7中一个子装载程序具体实例的结构示意图;
图10为图7中升级文件中的新固件的头部的结构示意图;
图11为第二装载程序的结构示意图;
图12为子装载程序列表的结构示意图;
图13为本发明实施例提供的嵌入式设备集群的固件升级装置的结构框图;
图14为本发明另一实施例提供的嵌入式设备集群的固件升级装置的结构框图;
图15为本发明实施例提供的嵌入式设备集群的固件升级系统的结构框图;
图16为本发明实施例提供的电子设备的结构框图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分,为了避免混淆本发明的实质,公知的方法、过程、流程、元件并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
为便于理解,首先对本发明实施例所涉及的相关技术术语进行解释和说明。
嵌入式设备:也即嵌入式系统,是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的专用计算机系统。嵌入式系统主要由嵌入式处理器、相关支撑硬件和嵌入式软件系统组成。嵌入式处理器主要由单片机或微控制单元(Microcontroller Unit,MCU)组成。相关支撑硬件包括显卡、存储介质、通讯设备、各类卡读取设备等。关于存储介质,嵌入式系统有别于通常的计算机处理系统,通常不具备硬盘等大容量存储介质,大多使用闪存(Flash Memory)、只读存储器(Read Only Memory,ROM)和随机存取存储器(Random Access Memory,RAM)等作为存储介质。嵌入式软件包括与硬件相关的底层软件、操作系统、图形界面、通讯协议、数据库系统、标准化浏览器和应用软件等。
固件:嵌入式设备中的软件,根据其功能划分为引导程序(uboot)、应用程序和程序资源。
BLE:也称为低功耗蓝牙(Bluetooth Low Energy),是一种无线通信技术,旨在为低功耗设备提供短距离通信,它可以提供较快的连接和数据传输速率。
引导程序:例如uboot,是嵌入式设备上电后运行最早的程序,主要用于初始化底层硬件,并负责引导操作系统和应用程序的启动运行。
应用程序:也称为App Code,包括操作系统和其他设备程序,由uboot引导运行,可以实现各种功能,部分应用程序可以和用户进行交互,具有可视的用户界面。
程序资源:也称为Resource,为运行应用程序时所需的配置信息等资源。
下文的部分描述中将上述引导程序、应用程序和程序资源统称为程序。
BootLoader:指启动加载程序,可用于嵌入式设备的固件升级,通过启动升级模式进行固件升级。
空中下载技术(Over-the-Air Technology,OTA)升级:通过网络从云服务器远程下载新的程序包,对嵌入式设备的固件进行更新或升级,也即在线升级嵌入式设备的固件。
ROM:只读存储器,以非破坏性读出方式工作,只能读出无法随意写入信息。信息一旦写入后就固定下来,即使切掉电源,信息也不会丢失,因此也称为固定存储器。ROM所存数据通常是装入设备前写入的,设备工作过程中只能读出。由于ROM所存数据稳定,掉电后所存数据也不会改变,并且结构较简单,使用方便,因而常用于存储各种固定程序和数据。ROM包括可编程只读存储器(Programmable read-only memory,PROM)、可擦写可编程只读存储器(Erasable Programmable Read-Only Memory EPROM)和带电可擦写可编程只读存储器(Electrically Erasable Programmable read only memory,EEPROM)等不同的种类。
RAM:随机存取存储器,也称为主存,是与CPU直接交换数据的内部存储器。可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。RAM与ROM的最大区别是数据的易失性,即RAM一旦掉电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。RAM包括静态随机存取存储器(Static Random-Access Memory,SRAM)、动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM)、双倍速率SDRAM(Double Data Rate SDRAM,DDR SDRAM)、第二代双倍速率SDRAM(Double Data Rate 2SDRAM,DDR2 SDRAM)和第三代双倍速率SDRAM(Double Data Rate3SDRAM,DDR3 SDRAM)等。
Flash Memory(下文简称为Flash):快闪存储器,也称为闪存,结合了ROM和RAM的长处,是一种非易失性存储器,即使掉电数据也不会丢失,且具备电子可擦除可编程的性能,允许在操作中被多次擦或写,同时可以快速读取数据。Flash主要用于通常性数据存储,以及在计算机与其他数字产品间交换传输数据。Flash分为NOR Flash和Nand Flash。其中,NOR Flash的特点是芯片内执行(eXecute In Place,XIP),应用程序可以直接在NOR Flash内运行,不必再把代码读到系统RAM中,其传输效率高,但写入和擦除速度较低。Nand Flash内部采用非线性宏单元模式,具有容量较大、改写速度快等优点,适用于大量数据的存储。
嵌入式设备由硬件和软件(也即固件)组成,嵌入式设备的厂商通常会陆续推出新固件以修复软件中的Bug或者提供新的软件功能。相应地,嵌入式设备的用户可以通过下载厂商提供的新固件以进行设备固件升级。
目前,在对嵌入式设备集群中每个嵌入式设备的固件进行升级时,上位机在获取到升级包后,通过蓝牙扫描得到设备列表,上位机进一步识别设备列表得到嵌入式设备集群中的嵌入式设备并基于蓝牙协议与嵌入式设备建立一对一的通信连接。上位机进行扫描和识别设备所消耗的时间较长,且上位机与嵌入式设备一对一进行通信只能串行对嵌入式设备进行固件升级,使得上位机对嵌入式设备集群中的多个设备进行升级的时候,升级效率低。
在连接到嵌入式设备集群中的嵌入式设备之后,上位机将同一升级包发送给嵌入式设备集群中的不同待升级嵌入式设备,该升级包由每个待升级嵌入式设备升级所需的升级资源组合而成,而嵌入式设备集群中两个或更多个嵌入式设备可能具有相同的固件,相同的固件所需的升级资源也相同,且升级包中可能包括了需要升级的嵌入式设备所不需要的固件所对应的升级资源。即升级包中包含冗余的升级资源,总体上导致升级包数据量较大。待升级嵌入式设备加载该升级包将导致加载时间较长,进而导致升级效率低。
基于此,本发明申请人发现,可以在获取到升级包后,上位机接收嵌入式设备集群中每个嵌入式设备发送的带有设备种类的标识信息的蓝牙广播包,上位机通过设备种类的标识信息判断该设备是否属于嵌入式设备集群中的设备,并与嵌入式设备集群的设备建立BLE连接,以避免与非嵌入式设备集群中的设备建立连接,且在上位机同时接收多个蓝牙广播包后BLE连接可以使上位机同时与多个嵌入式设备进行通信,进而提高升级效率;进一步地,上位机通过蓝牙广播包中的设备种类的标识信息将升级包与该设备种类对应的升级资源发送给该蓝牙广播包对应的嵌入式设备,以提高待升级嵌入式设备加载升级资源的效率进而提高了升级效率。
图1为本发明实施例提供的嵌入式设备集群的固件升级方法的应用场景示意图,请参阅图1,由上位机将升级文件发送给嵌入式设备集群中的待升级嵌入式设备,待升级嵌入式设备通过升级文件对自身固件进行升级。其中,上位机为存储有升级文件的通信设备。上位机可以是终端设备,如手机、电脑等。当终端设备作为上位机时,如图1(a)所示,终端设备从服务器下载升级文件后将升级文件中的升级资源传输给嵌入式设备集群,终端设备可以通过OTA的传输方式从服务器下载升级文件,其中,OTA文件传输是一种通过无线方式传输文件和数据的技术;如图1(b)所示,当上位机为终端设备时,上位机自身可以存储有升级文件,也可以是通过物理连接进行拷贝的方式获取到升级文件,例如:上位机通过与U盘连接,从U盘中读取升级文件并存储升级文件。上位机还可以是嵌入式设备集群中的主嵌入式设备,主嵌入式设备在嵌入式设备集群中负责协调和管理其他的从嵌入式设备,当主嵌入式设备作为上位机时,如图1(c)所示,主嵌入式设备从服务器下载升级文件后,将升级文件中的升级资源传输给嵌入式设备集群中的从嵌入式设备,同样地,主嵌入式设备也可以通过OTA的传输方式从服务器下载升级文件;如图1(d)所示,主嵌入式设备还可以自身存储有升级文件,即主嵌入式设备也可以通过物理连接进行拷贝的方式获取到升级文件。
需要指出的是,本发明实施例中的嵌入式设备可以是音箱,可以是智能家居设备,例如智能灯泡、智能插座、智能门锁等,还可以是电视和媒体播放器,例如智能电视、流媒体设备等,本发明实施例未对嵌入式设备的具体形态作限定。
图2为本发明实施例提供的嵌入式设备集群的固件升级方法的流程示意图。该方法由上位机执行,请参阅图2,该方法包括如下步骤:
S110,接收嵌入式设备集群中的嵌入式设备发送的蓝牙广播包,其中,蓝牙广播包包括第一标识信息,第一标识信息用于标识嵌入式设备的种类。
优选地,可以通过厂商标识和设备型号标识一起对嵌入式设备进行分类,也即第一标识信息包括厂商标识(即厂商ID)和设备型号标识(即产品ID),同一厂商生产的且为同一设备型号的嵌入式设备被分为一类。同一类的嵌入式设备所发送的蓝牙广播包中的第一标识信息相同。
嵌入式设备集群中的嵌入式设备在下载升级文件中的升级资源之前,需要先与上位机建立通信连接。在嵌入式设备发送蓝牙广播包之后,上位机可以接收到嵌入式设备集群中的嵌入式设备所发送的蓝牙广播包,并根据蓝牙广播包中的第一标识信息选择是否与发送该蓝牙广播包的嵌入式设备建立通信连接。
上位机可以同时接收多个蓝牙广播包,并且可以根据蓝牙广播包中的第一标识信息,选择与多个嵌入式设备并行连接,也可以选择依次与嵌入式设备进行串行连接。
S120,若第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的嵌入式设备建立BLE连接。
上位机通过第一标识信息区分发送蓝牙广播包的设备是否属于此次升级文件所对应的升级设备,以排除掉无法使用此升级文件的设备。升级文件通常与设备的厂商以及设备的型号相对应,上位机可以通过用于标识设备的厂商以及设备的型号的第一标识信息排除掉其他厂商的设备,也可以排除掉同一厂商中产品型号与该升级文件不匹配的嵌入式设备。例如,当升级对象是某厂商生产的立体声音箱的时候,上位机可以通过第一标识信息排除掉其他种类的嵌入式设备(如该厂商或其他厂商的智能家居、单声道音箱和多声道音箱等),上位机还可以通过第一标识信息排除掉其他厂商的立体声音箱。
升级文件中预设多种待升级嵌入式设备的标识信息,以便上位机能根据升级文件中预设的标识信息判断发送蓝牙广播包的嵌入式设备是否为待升级嵌入式设备。
在上位机判断蓝牙广播包中的第一标识信息属于预设多种待升级嵌入式设备的标识信息之后,上位机与待升级嵌入式设备建立BLE连接。
上位机与待升级嵌入式设备通过BLE连接进行通信,BLE具有快速连接和断开连接的能力,上位机和待升级嵌入式设备的连接建立和断开可以在毫秒级别内完成,使得上位机和待升级嵌入式设备的数据传输通道只在进行数据传输时存在,提高了上位机对嵌入式设备集群进行固件升级的效率,降低了蓝牙通信时上位机和待升级嵌入式设备产生的功率。
相比于移动信号通信提供的一对一的通信方式,BLE通信可以一对多通信,即移动信号通信只能一台设备与另外一台设备通信,而BLE通信可以使得一个上位机同时与多个待升级嵌入式设备进行通信,不同于对单个待升级嵌入式设备进行升级,当上位机对嵌入式集群中的多个待升级嵌入式设备进行升级时,BLE连接可以同时与多个待升级嵌入式设备进行通信,以提高嵌入式设备集群的升级效率。相比于设备适用的广泛性,大部分物联网设备都支持蓝牙通信,而不一定支持移动信号通信,因此,蓝牙通信的方法适用于大部分的物联网设备,即大部分的嵌入式设备能实现蓝牙通信,而BLE作为蓝牙通信中的一种通信方式,相比于其他4.0/4.1的蓝牙,设置BLE的成本更低,大部分物联网设备都会设置BLE通信方式,因此BLE通信适用于大部分嵌入式设备升级时的通信;并且,在使用上位机对嵌入式集群中的待升级嵌入式设备进行升级时,上位机与待升级嵌入式设备的距离在蓝牙的连接范围内,通常不会很远,而BLE在2.4GHz的频段进行短距离通信时允许设备在传输过程中根据环境条件和信道状态自动调整传输参数,使得BLE通信具有较强的抗干扰能力,即BLE相对比其他的蓝牙通信方式,在几米至几十米范围内有良好性能,可以使设备之间通信的信号更为稳定;再者,BLE通常使用简化的配对过程,使得上位机和待升级嵌入式设备能快速建立连接。
S130,通过BLE将与第一标识信息对应的升级文件发送给待升级嵌入式设备,以使待升级嵌入式设备通过升级文件升级其固件。
其中,与第一标识信息对应的升级文件可以是升级文件中与第一标识信息对应的升级资源,也可以是不同的升级文件。
通过BLE将与第一标识信息对应的升级文件发送给待升级嵌入式设备以避免待升级嵌入式设备接收所有的升级文件导致的升级效率低的问题。
在本发明实施例中,上位机通过接收嵌入式设备集群中的嵌入式设备发送的蓝牙广播包以实现与嵌入式设备的快速连接;上位机通过与嵌入式设备的BLE连接,可以实现快速、稳定的通信,且可以实现对多台嵌入式设备的并行升级;上位机通过第一标识信息将与该待升级嵌入式设备对应的升级文件发送给待升级嵌入式设备以避免待升级嵌入式设备升级时需要接收所有的升级资源,从而提高升级效率。
对嵌入式设备集群中的多个嵌入式设备发送的蓝牙广播包,可以在接收所有的蓝牙广播包之后,对接收的多个蓝牙广播包逐一进行第一标识信息的判断并建立BLE连接,也可以在接收蓝牙广播包时,便对当前接收到的蓝牙广播包进行第一标识信息的判断并建立BLE连接,然后再接收下一个蓝牙广播包。在一种优选的方式中,嵌入式设备集群具有M个嵌入式设备,其中M为正整数,M≥1:
上述步骤S110包括:S111,接收第i个嵌入式设备发送的蓝牙广播包,其中i为正整数,1≤i≤M,i的初始值为1。
上述步骤S120包括:S121,若第i个嵌入式设备发送的蓝牙广播包中的第一标识信息属于多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的第i个嵌入式设备建立BLE连接,对i自加1并转至步骤S111,直至i=M。
上位机可以对一定时间段内接收到的所有的蓝牙广播包,一一进行第一标识信息的判断,与判断通过(即第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息)的蓝牙广播包的发送设备建立BLE连接。优选地,上位机在接收到一个嵌入式设备的蓝牙广播包后,便对接收到的该蓝牙广播包的第一标识信息进行判断,并与判断通过的蓝牙广播包的发送设备建立BLE连接,相对于接收到所有的蓝牙广播包再一一判断并建立BLE连接的方式,一一接收蓝牙广播包并直接进行判断且建立BLE连接的方式,对第一标识信息判断不通过(即第一标识信息不属于预设多种待升级嵌入式设备中其中一种设备的标识信息)的蓝牙广播包,可以直接丢弃,而不必缓存所有的蓝牙广播包,以节省缓存所有蓝牙广播包的存储空间,且不需要等待所有广播包接收完毕后才能开始处理和建立连接,以减少接收蓝牙广播包的延迟所消耗的等待时间,提高了嵌入式设备集群的固件升级效率。
需要指出的是,对于上述步骤S130,在本实施例中,上位机可以是在判断完所有的嵌入式设备之后,对所有BLE连接的待升级嵌入式设备并行或者串行地发送对应于第一标识信息的升级文件;上位机也可以在步骤S120中的与嵌入式设备建立连接之后,在接收下一个蓝牙广播包之前,将对应于第一标识信息的升级文件发送给当前通过蓝牙广播包连接的待升级嵌入式设备。
为了记录升级完成的嵌入式设备,图3为本发明另一实施例提供的嵌入式设备集群的固件升级方法的流程示意图。请参阅图3,该方法包括如下步骤:
S110,接收嵌入式设备集群中的嵌入式设备发送的蓝牙广播包,其中,蓝牙广播包包括第一标识信息,第一标识信息用于标识嵌入式设备的种类。
S120,若第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的嵌入式设备建立BLE连接。
S130,通过BLE将与第一标识信息对应的升级文件发送给待升级嵌入式设备,以使待升级嵌入式设备通过升级文件升级其固件。
S140,接收由待升级嵌入式设备发送的固件升级完成信息。
当待升级嵌入式设备使用接收到的升级文件对自身需要升级的固件完成升级后,该嵌入式设备向上位机发送固件完成信息以指示上位机该嵌入式设备已完成升级。
S150,将待升级嵌入式设备加入已升级设备列表。
上位机中可设置已升级设备列表,将其存储于上位机的可擦写非易失性存储器,由于该存储器的非易失特性,掉电也不会丢失数据,可以在意外掉电或系统重启时保留存储于其中的已升级设备列表,而无需重复执行已经执行过的升级流程。其中,固件升级完成信息中可以包括嵌入式设备本身的标识信息和升级完成的指示信息,上位机通过将嵌入式设备本身的标识信息加入已升级设备列表以记录升级完成的嵌入式设备;固件升级完成信息中也可以不含有嵌入式设备本身的标识信息,上位机通过BLE的标识信息实现对升级完成的嵌入式设备的记录。
为了避免对已升级过的嵌入式设备进行重复升级,图3为本发明另一实施例提供的嵌入式设备集群的固件升级方法的流程示意图。其中,蓝牙广播包还包括第二标识信息,第二标识信息用于标识每个嵌入式设备。请参阅图3,该方法包括如下步骤:
S110,接收嵌入式设备集群中的嵌入式设备发送的蓝牙广播包,其中,蓝牙广播包包括第一标识信息,第一标识信息用于标识嵌入式设备的种类。
S122,若第一标识信息属于多种待升级嵌入式设备中其中一种设备的标识信息且第二标识信息不位于已升级设备列表,则与作为待升级嵌入式设备的嵌入式设备建立BLE连接。
其中,第二标识信息可以是嵌入式设备的MAC地址信息,每个嵌入式设备的MAC地址唯一,不会造成第二标识信息的重复。
当上位机需要对嵌入式设备集群进行升级的时候,嵌入式设备集群中的一些嵌入式设备可能已经完成了此次升级文件的升级,因此,上位机需要根据标识每台设备的第二标识信息进行判断,判断该设备是否位于已升级设备列表,若位于,则说明该设备已完成此次的升级文件的升级,上位机无需与该嵌入式设备建立通信连接;若不位于,则说明该设备未完成此次升级文件的升级,进一步地,若该设备还通过了第一标识信息的判断,则说明,该设备为此次升级文件的升级对象,将该设备确定为待升级嵌入式设备,并与待升级嵌入式设备建立BLE连接。
S130,通过BLE将与第一标识信息对应的升级文件发送给待升级嵌入式设备,以使待升级嵌入式设备通过升级文件升级其固件。
S140,接收由待升级嵌入式设备发送的固件升级完成信息。
S152,将发送固件升级完成信息的待升级嵌入式设备的第二标识信息加入已升级设备列表。
在待升级嵌入式设备完成固件的升级后,上位机接收来自该设备发送的固件升级完成信息并将标识该设备的第二标识信息加入已升级设备列表,记录完成此次升级文件对应的升级的嵌入式设备,以在下次对该嵌入式设备集群进行升级的时候,通过已升级设备列表跳过已经完成使用该升级文件进行升级的嵌入式设备,从而避免重复升级。
在上位机判断设备是否为待升级嵌入式设备的时候,上位机可以先判断第一标识信息是否属于多种待升级嵌入式设备中其中一种设备的标识信息,也可以先判断第二标识信息是否位于已升级设备列表,也可以同时对第一标识信息和第二标识信息进行判断。在一种优选的方式中,嵌入式设备集群具有M个嵌入式设备,其中M为正整数,M≥1;上位机执行以下步骤以避免对嵌入式设备集群中的嵌入式设备重复升级:
上述步骤S110包括:S112,接收第i个嵌入式设备发送的蓝牙广播包,其中i为正整数,1≤i≤M,i的初始值为1。
步骤S112和上述步骤S111的实现方式相同,因此,步骤S112的执行可以参考步骤S111的执行,在此不再赘述。
上述步骤S120包括如下子步骤:
S120a,判断第i个嵌入式设备发送的蓝牙广播包中的第一标识信息是否属于多种待升级嵌入式设备中其中一种设备的标识信息;
S120b,若属于,则判断第i个嵌入式设备发送的蓝牙广播包中的第二标识信息是否位于已升级设备列表;
S120c,若不位于,则与待升级嵌入式设备的第i个嵌入式设备建立BLE连接,对i自加1并转至步骤S112,直至i=M。
作为一种优选的实施方式,上位机先判断第一标识信息是否属于多种待升级嵌入式设备中其中一种设备的标识信息,在蓝牙广播包通过第一标识信息的判断之后,上位机再判断蓝牙广播包中的第二标识信息是否位于已升级设备列表。
上位机将对应于第一标识信息的升级文件发送给待升级嵌入式设备,可以是将不同的升级文件发送给不同的待升级嵌入式设备,也可以是将升级包中的不同升级资源发送给不同的待升级嵌入式设备。在一种优选的方式中,升级文件包括前级装载程序和多个子装载程序,前级装载程序用于加载子装载程序,前级装载程序包括与预设多种待升级嵌入式设备对应的多个子装载程序列表,每个子装载程序列表中记录有多个子装载程序标识,多个子装载程序用于升级与记录其标识的列表所对应的待升级嵌入式设备中的多个待升级固件。
上述步骤S130包括如下步骤:通过BLE将前级装载程序发送给待升级嵌入式设备以使待升级嵌入式设备通过与其对应的子装载程序列表中的多个子装载程序标识从多个子装载程序中拉取与其对应的子装载程序,以升级其固件。
其中,预设多种待升级嵌入式设备与第一标识信息对应,第一标识信息为标识此升级文件对应的待升级嵌入式设备的种类的信息,预设多种待升级嵌入式设备即为此升级文件对应的设备种类的嵌入式设备。
上位机通过判断蓝牙广播包中的第一标识信息中的设备种类是否属于预设多种待升级嵌入式设备的种类,以判断蓝牙广播包所属设备是否为待升级嵌入式设备。若该设备为待升级嵌入式设备,上位机则将前级装载程序发送给该设备。在待升级嵌入式设备接收到上位机发送的前级装载程序后,待升级嵌入式设备通过运行前级装载程序读取前级装载程序中的多个子装载程序列表,并从多个列表中查找到与自身的设备种类对应的子装载程序列表,待升级嵌入式设备通过运行前级装载程序以从上位机的升级文件中拉取记录在子装载程序列表上的子装载程序,并通过运行子装载程序升级对应的固件。子装载程序列表上记录有对应的子装载程序标识,待升级嵌入式设备通过子装载程序标识从上位机的升级文件中拉取子装载程序。优选地,子装载程序标识为子装载程序在升级文件中的存储位置信息。
本发明实施例中的升级文件包括前级装载程序和多个子装载程序,在升级流程中无需事先下载完整的升级文件,而是根据前级装载程序中的与该种待升级嵌入式设备对应的子装载程序列表下载对应的子装载程序,避免待升级嵌入式设备下载的升级文件冗余导致的升级效率低的问题。
在上位机与嵌入式设备建立BLE连接之前,嵌入式设备可能因不处于BLE通信方式无法建立BLE连接,因此,需要先将嵌入式设备切换为BLE通信方式。在一种可选的方式中,在执行S110之前,上位机还用于执行以下步骤:通过big或cig蓝牙通讯方式向嵌入式设备集群发送指令,以使嵌入式设备集群中的嵌入式设备将蓝牙通讯方式从big或cig切换为BLE。
其中,在连接模式中,每个音频串流被称为cis(Connected Isochronous Stream,连接同步流);每个cis连接在一个cig(Connected Isochronous Group,连接同步组)中,以进行音频同步(比如左、右耳机同步播放音频)。支持蓝牙5.2标准的设备可以创建多个cig。同样地,在非连接模式下,像智能电视这样的单一音源可以将数据传输到多个同步音频串流。每个音频串流则被称为bis(Broadcast Isochronous Stream,广播同步流),而多个音频串流被称为big(Broadcast Isochronous Group,广播同步组)。
一些嵌入式设备在通常情况下会使用big或者cig的方式进行通信,例如:带有扬声器系统的嵌入式设备,如音箱、智能电视、蓝牙耳机等。
在上位机需要对嵌入式设备集群进行升级的时候,上位机需要先通过big或者cig的蓝牙通信方式发送切换通信方式的指令给嵌入式设备集群,嵌入式设备集群将通信方式从big或cig切换为BLE后,发送蓝牙广播包以与上位机建立BLE连接,完成对自身固件的升级。
基于上述构思,本发明提供嵌入式设备集群的固件升级方法的另一实施例,具体请参阅图4,图4为本发明另一实施例提供的嵌入式设备集群的固件升级方法的流程示意图。该方法由嵌入式设备执行,请参阅图4,该方法包括如下步骤:
S210,发送包含第一标识信息的蓝牙广播包以使上位机根据第一标识信息确定嵌入式设备的种类是否为待升级嵌入式设备中的一种,其中,第一标识信息用于标识嵌入式设备的种类。
S220,在上位机识别嵌入式设备为待升级嵌入式设备后,与上位机进行BLE连接。
S230,通过BLE从上位机中获取与第一标识信息对应的升级文件并通过升级文件升级待升级嵌入式设备中的固件。
其中,步骤S210~步骤S230与步骤S110~步骤S130的具体实现过程类似、工作原理相同,因此,步骤S210~步骤S230的具体实现方式可参见步骤S110~步骤S130,在此不再赘述。
在一些实施例中,在S230之后,该方法还包括:S240,通过BLE向上位机发送固件升级完成信息以使上位机将嵌入式设备加入已升级设备列表。
在一些实施例中,S240包括:通过BLE向上位机发送固件升级完成信息以使上位机将嵌入式设备的第二标识信息加入已升级设备列表,其中,第二标识信息用于标识每个嵌入式设备;S210包括:发送包含第一标识信息和第二标识信息的蓝牙广播包以使上位机根据第一标识信息、第二标识信息和已升级设备列表确定嵌入式设备为待升级嵌入式设备。
在一些实施例中,S230包括:S231,通过BLE从上位机获取前级装载程序,前级装载程序包括与多种待升级嵌入式设备对应的多个子装载程序列表,每个子装载程序列表中记录有多个子装载程序标识;S232,运行前级装载程序以从多个子装载程序列表中查找到与第一标识信息对应的子装载程序列表;S233,根据子装载程序列表中记录的子装载程序标识,通过BLE从上位机中拉取与子装载程序标识对应的子装载程序;S234,运行子装载程序,以升级嵌入式设备中与子装载程序对应的固件。
在一些实施例中,在S210之前,该方法还包括:通过big或cig蓝牙通讯方式接收来自上位机的指令,基于指令将蓝牙通讯方式从big或cig蓝牙通讯方式切换为BLE。
上述方法的具体实现细节和工作原理可参考前述在上位机侧所执行方法的实施例,此处不再赘述。
目前,嵌入式设备在进行固件升级时,其中一种方式是在uboot中整合BootLoader,也即将BootLoader固化于uboot中,在通过OTA进行升级的过程中跳转至uboot中的BootLoader以执行升级流程。该方式由于uboot内整合了BootLoader,造成对本地(也即嵌入式设备自身)Flash存储空间的占用,特别是在嵌入式设备的固件程序较多时,每个程序都有其对应的BootLoader,将占用大量的Flash存储空间。当uboot存在缺陷时,只能通过刷机的方式强制升级,而无法通过OTA方式解决。另一种方式是通过uboot从上位机(例如移动终端或者服务器)将BootLoader下载到本地Flash,再从本地Flash中将BootLoader加载到Ram中运行,由BootLoader将上位机的升级文件下载到本地Flash中以完成固件升级。这种将BootLoader下载到本地Flash的升级方式造成对Flash存储空间的占用,特别是在嵌入式设备的固件程序较多时,每个程序都有其对应的BootLoader,将所有程序的BootLoader均下载到本地Flash中将占用大量的Flash存储空间。上述两种升级方式存在共同的问题,即本地Flash中均需要存储BootLoader,导致对本地Flash的占用,特别是在本地Flash需要存储多个BootLoader时将占用大量的Flash存储空间。
因此,为了减少固件升级时对嵌入式设备的可擦写非易失性存储器存储空间的占用,在一种优选的方式中,上述步骤S231包括如下子步骤:
S2311,通过BLE从上位机获取前级装载程序,并将至少部分前级装载程序存储在可擦写非易失性存储器中。
本发明实施例利用待升级嵌入式设备的可擦写非易失性存储器的可擦写性能将至少部分前级装载程序写入该存储器。同时由于该存储器的非易失特性,掉电也不会丢失数据,可以在意外掉电或系统重启时保留存储于其中的前级装载程序,从而能够使存储的前级装载程序正常加载和运行,以完成后续的升级流程。可擦写非易失性存储器可以为嵌入式设备的Flash、EPROM或者EEPROM等,下文以Flash为例进行说明。
从上位机获取前级装载程序时,可以获取全部的前级装载程序并将全部的前级装载程序存储于Flash;也可以仅获取前级装载程序的一部分,并将获取的部分前级装载程序存储于Flash,以进一步降低对Flash存储空间的占用,后文将对这两种方式进行详细说明。
S2312,将前级装载程序加载至RAM。
RAM是指嵌入式设备中的内存,用于暂时存放当前正在使用的(即执行中)的数据和程序,掉电后其中的程序和数据将丢失。若步骤S2311获取的是全部的前级装载程序,则本步骤将从上位机获取的全部的前级装载程序加载至RAM以使该程序在RAM中运行。若步骤S2311获取的是前级装载程序的一部分,则本步骤需要在Flash中运行获取的部分前级装载程序,以进一步获取前级装载程序的剩余部分并加载至RAM以使该剩余部分在RAM中运行。
通常需要在嵌入式设备复位重启后运行uboot,由uboot引导前级装载程序的运行。uboot可存储于嵌入式设备的主控芯片的内部Flash中,主控芯片的内部Flash通常为NOR Flash,可以直接运行存储于其中的程序,因此uboot可直接在主控芯片的内部Flash中运行。
上述步骤S232包括:S232a,在RAM中运行前级装载程序以从多个子装载程序列表中查找到与第一标识信息对应的子装载程序列表。
上述步骤S233包括如下子步骤:
S2332,根据子装载程序列表中记录的子装载程序标识,通过BLE从上位机中拉取与子装载程序标识对应的子装载程序。
S2334,将与子装载程序标识对应的子装载程序加载至RAM中。
前级装载程序通过现有的下载方式(例如OTA下载或者通信接口传输等方式)下载子装载程序,子装载程序未存储于Flash,而是直接被加载至RAM中运行。
上述步骤S234包括如下步骤:S234a,在RAM中运行子装载程序,以升级嵌入式设备中与子装载程序对应的固件。
在RAM中运行子装载程序,子装载程序通过现有的下载方式从上位机获取固件的升级数据从而更新固件。
本发明实施例中的升级文件包括前级装载程序和子级装载程序,在升级流程中无需事先下载完整的升级程序,而是分阶段下载升级程序,具体地,先下载前级装载程序并存储于可擦写非易失性存储器,之后通过前级装载程序下载子级装载程序,子级装载程序未写入可擦写非易失性存储器,而是被直接加载至RAM中运行,以对嵌入式设备的固件进行升级。因此,在升级流程中可以减少对嵌入式设备的可擦写非易失性存储器的存储空间的占用,并进一步使得其可擦写非易失性存储器可以装载更大或者更多的应用程序,提高了嵌入式设备中应用程序的丰富度,且减少了升级文件中冗余资源的下载,提高了嵌入式设备集群的固件升级效率。
此外,通过将获取的子级装载程序直接加载至RAM,缩短了升级流程中将包括多个子级装载程序的整个升级程序从Flash转移至RAM的时间,提高了升级效率。
当只有部分前级装载程序存储在可擦写非易失性存储器中时,可以进一步减少固件升级时对嵌入式设备的可擦写非易失性存储器存储空间的占用。在一种优选的方式中,前级装载程序包括第一装载程序和第二装载程序,第二装载程序包括与多种待升级嵌入式设备对应的多个子装载程序列表。通过上述方式,第一装载程序保留了加载第二装载程序的功能,而升级流程中其余的功能由第二装载程序和子装载程序实现。
上述步骤S2311包括如下子步骤:
S2311a,通过BLE从上位机获取第一装载程序,并将第一装载程序存储在可擦写非易失性存储器中。
S2311b,运行第一装载程序,以从上位机获取第二装载程序。
本实施方式中,Flash可以为嵌入式设备的主控芯片的内部Flash,主控芯片的程序存储区在片内NOR Flash,NOR Flash能直接像内存RAM一样寻址,因此能直接从芯片内部Flash运行程序,例如步骤S2311b直接从Flash运行存储于其中的第一装载程序。当然,步骤S2311b也可以将存储于主控芯片的内部Flash的第一装载程序加载至RAM运行。此外,Flash也可以是Nand Flash,步骤S2311b需要将存储于Nand Flash的第一装载程序加载至RAM运行。
上述步骤S2312进一步包括如下步骤:将第二装载程序加载至RAM。
获取的第二装载程序并未存储于Flash中,而是直接加载至RAM,从而进一步减小对Flash空间的占用。
上述步骤S232进一步包括如下步骤:在RAM中运行第二装载程序,以从多个子装载程序列表中查找到与第一标识信息对应的子装载程序列表。
该方式将前级装载程序分为第一装载程序和第二装载程序,仅从上位机将第一装载程序下载到Flash存储,由第一装载程序直接从升级文件中将第二装载程序加载至RAM运行,由第二装载程序根据子装载程序列表从升级文件中拉取子装载程序并将子装载程序加载至RAM运行以进行升级,相比将整个前级装载程序下载至Flash的实施方式,进一步减小了对Flash存储空间的占用。
为了提高固件升级时嵌入式设备拉取子装载程序的速度,在一种可选的方式中,第一装载程序由通信接口代码和第一加载代码组成,其中,通信接口代码用于实现嵌入式设备和上位机的通信接口,第一加载代码用于通过通信接口从上位机获取第二装载程序。
第一装载程序不仅保留了加载第二装载程序的功能还保留了数据通信接。待升级嵌入式设备通过运行第一装载程序不仅可以加载第二装载程序,还可以指定待升级嵌入式设备中用于与上位机进行BLE通信的通信接口,以提高通信速度。
嵌入式设备的固件通常包括引导程序、应用程序和程序资源。若嵌入式设备的固件包括引导程序、应用程序、程序资源中的一个或多个时,可以对应设置1个或多个子装载程序以分别对每个程序进行升级。在一种优选的方式中,与嵌入式设备对应的子装载程序列表中按顺序记录有N个子装载程序标识,其中N为正整数,N≥1。图5为本发明另一实施例提供的嵌入式设备集群的固件升级方法的流程示意图,请参阅图5,该方法包括如下步骤:
S210,发送包含第一标识信息的蓝牙广播包以使上位机根据第一标识信息确定嵌入式设备的种类是否为待升级嵌入式设备中的一种,其中,第一标识信息用于标识嵌入式设备的种类。
S220,在上位机识别嵌入式设备为待升级嵌入式设备后,与上位机进行BLE连接。
S2311,通过BLE从上位机获取前级装载程序,并将至少部分前级装载程序存储在可擦写非易失性存储器中。
S2312,将前级装载程序加载至RAM。
S232a,在RAM中运行前级装载程序以从多个子装载程序列表中查找到与第一标识信息对应的子装载程序列表。
S2332,根据子装载程序列表中记录的第i个子装载程序标识,通过BLE从上位机中拉取第i个子装载程序标识所对应的子装载程序,其中i为正整数,1≤i≤N,i的初始值为1。
S2334,将第i个子装载程序标识所对应的第i个子装载程序加载至RAM中。
S234a:在RAM中运行第i个子装载程序,以从上位机中获取与第i个子装载程序对应的第i个固件的升级数据从而升级嵌入式设备中与第i个子装载程序对应的固件。
S235:对i自加1并转至S2332,直至i=N。
例如,首先从上位机获取第1个子装载程序并加载至RAM中运行,以获取第1个子装载程序对应的第1个固件的升级数据;然后获取第2个子装载获取程序……以此类推,直至i=N,完成最后一个固件的更新。
通过上述方式,可以按顺序依次对每个固件进行升级,在需要更新的固件有多个时,可以依次完成对所有固件的升级。而升级文件拆分出的多个子装载程序,方便进行升级程序的修改或扩展:若某个固件的装载程序内容需要修改,仅需对该固件的子装载程序进行修改,无需修改其他固件的子装载程序;若有新的固件需要升级,可通过增加该固件的子装载程序实现扩展。
子装载程序还可以用于对嵌入式设备的除主控芯片的内部Flash以外的外部Flash进行数据更新,例如通过添加用于外部Flash数据更新的子装载程序,并在升级文件中对应的位置添加对外部Flash进行数据更新的新数据。也可以按照类似方式对嵌入式设备的MCU进行数据更新。
在嵌入式设备的固件包括引导程序、应用程序、程序资源中的多个时,升级文件包中通常会包括该嵌入式设备中的所有固件,但可能仅部分固件需要升级,也即升级文件中的部分固件的版本高于嵌入式设备中的固件版本(该部分固件需要升级),其余部分固件的版本与嵌入式设备中的固件版本相同(该部分固件无需升级)。在升级流程中,可以通过固件的版本号判断某个固件是否需要升级,例如在嵌入式设备中的某个固件的版本号低于升级文件中该固件的版本号时,才对该固件进行升级;也可以通过数据一致性判断某个固件否需要升级,例如在嵌入式设备中的某个固件的代码文件与升级文件中该固件的代码文件不一致时,才对该固件进行升级,数据一致性的判断可以通过循环冗余校验(CyclicRedundancy Check,CRC)实现,例如比较嵌入式设备中固件的头部CRC码与升级文件中该固件的头部CRC码是否一致。通过上述方式确定出需要升级的固件,进而调用该部分固件所对应的子装载程序,从而避免在固件无需升级时也对其执行升级流程,导致资源浪费和降低整体的升级效率。
嵌入式设备开机启动后,首先加载uboot运行,由uboot进行硬件初始化/获取内存大小信息等,调整嵌入式设备至适配状态,之后再将操作系统映像或固化的嵌入式应用程序加载至内存中运行。若uboot每次上电后均直接引导操作系统或者应用程序运行,不提供固件升级的通道,则无法进行固件升级。本发明实施例通过在需要升级时设置标志位,使uboot能够引导升级程序运行。在一种可选的方式中,该方法包括如下步骤:
在上述步骤S2311之后,该方法还包括如下步骤:在RAM中设置标志位,其中,标志位在掉电时会被删除。
将至少部分前级装载程序存储于Flash后将设置标志位,标志位用于在后续uboot运行后基于该标志位的存在而选择引导升级程序运行。也即,uboot根据标志位的有无,确定是进行固件升级还是正常启动系统。由于标志位设置于RAM中,掉电时会被删除,可以保证掉电后重新上电时能够正常启动系统,而不会每次重启都重复进入升级流程。若标志位设置于其他非易失性存储器中,掉电后也将继续存在,将导致每次掉电后重新上电时重复进入升级流程。
可以直接在RAM中定义一个标志位,例如gd->flags|=GD_FLG_RELOC。
上述步骤S232包括如下子步骤:
S2321,运行引导程序,以判断RAM中是否存在标志位。
S2323,若引导程序判断RAM中存在标志位,在RAM中运行前级装载程序,以从多个子装载程序列表中查找到与第一标识信息对应的子装载程序列表。
S2325,若引导程序判断RAM中不存在标志位,引导嵌入式设备正常启动。
不存在标志位时,uboot将引导嵌入式设备的操作系统或者应用程序运行,也即使嵌入式设备能够正常启动。
在上述步骤S235之后,该方法还包括如下步骤:S236,删除标志位。
拉取并加载完多个子装载程序后,需要删除标志位,否则将导致此次升级完成后系统重启时,由于标志位的存在uboot将继续引导升级程序运行,进行重复升级,而无法正常启动系统。
上述实施例通过设置标志位,使升级流程中uboot能够基于标志位的存在引导升级程序运行;此外,掉电时标志位被删除,以及将所需的所有子装载程序加载至RAM后也会删除标志位,从而使掉电后重新上电时以及此次升级完成后系统重启时能够正常启动系统。
若升级流程中发生掉电,将导致上电复位后重新执行升级流程,导致已经获取过的文件被重新获取,已经执行过的程序被重新执行,从而降低升级效率。本发明一些实施例通过在可擦写非易失性存储器的记录区域记录当前升级进度,使得上电后能够在当前升级进度处继续升级。在一种优选的方式中,可擦写非易失性存储器的记录区域记录有当前升级进度,嵌入式设备集群的固件升级方法包括:
上述步骤S2332包括如下步骤:S2332a,在RAM中运行前级装载程序,以根据记录区域记录的当前升级进度和子装载程序列表中记录的子装载程序标识从上位机获取相应的第i个子装载程序,其中,相应的第i个子装载程序为当前升级进度下所需执行的下一操作步骤用于升级的第i个固件所对应的子装载程序。
在运行前级装载程序时,根据当前升级进度和子装载程序列表中记录的子装载程序标识获取下一操作步骤所需升级的固件的子装载程序。
图6为本发明实施例提供的嵌入式设备集群的固件升级方法中步骤S234的子步骤的流程示意图,请参阅图6,本实施例中上述步骤S234包括如下子步骤:
S2342,在RAM中运行第i个子装载程序,根据记录区域记录的当前升级进度,若当前升级进度为第i个固件擦除成功,则执行步骤S2346;若当前升级进度为第i个固件写入成功,则执行S2348;若当前升级进度为无升级状态,则执行S2344;若当前升级进度为第i个固件升级成功,则执行S235。
S2344,擦除可擦写非易失性存储器中存储的与第i个子装载程序对应的第i个固件,并在可擦写非易失性存储器的记录区域记录当前升级进度为第i个固件擦除成功。
S2346,从上位机中获取该固件的升级数据,将该固件的升级数据存储至可擦写非易失性存储器,并在记录区域记录当前升级进度为第i个固件写入成功。
在运行子装载程序时,步骤S2342至步骤S2346分别根据当前升级进度执行所需操作的升级内容。
S2348,若校验该固件升级成功,在记录区域记录当前升级进度为第i个固件升级成功;若校验该固件升级失败,在记录区域记录当前升级进度为该固件擦除成功的前一升级进度,前一升级进度为第(i-1)个固件升级成功或无升级状态。
未进行升级时以及在未擦除任何固件前,当前升级进度均为无升级状态。升级流程中,运行子装载程序后,先擦除该子装载程序对应的固件,也即擦除升级前的固件(对应的当前升级进度为第i个固件擦除成功),再将新固件写入Flash(对应的当前升级进度为第i个固件写入成功),然后校验固件升级是否成功(若成功则对应的当前升级进度为第i个固件升级成功)。升级流程中对引导程序、应用程序和程序资源的升级进度均进行记录。
关于步骤S2332a,若记录区域记录的当前升级进度为第i个固件擦除成功,则当前升级进度下所需执行的下一操作步骤用于升级第i个固件;若记录区域记录的当前升级进度为第i个固件写入成功,则当前升级进度下所需执行的下一操作步骤用于校验第i个固件(也即其下一操作步骤还是用于升级第i个固件);若记录区域记录的当前升级进度为无升级状态,则当前升级进度下所需执行的下一操作步骤用于升级第1个固件;若记录区域记录的当前升级进度为第i个固件升级成功,则当前升级进度下所需执行的下一操作步骤用于升级第(i+1)个固件。
关于步骤S2346,将升级文件写入Flash后,还进一步校验升级是否成功。若校验结果为失败,说明升级文件的数据传输或存储过程出了问题,需要退出升级流程以进行后续干预检查,此时将当前升级进度记录为第(i-1)个固件升级成功或无升级状态。例如,校验第1个固件升级失败,则记录当前升级进度为无升级状态;若第2个固件升级失败,则记录当前升级进度为第1个固件升级成功……
通过上述方式,在Flash的记录区域记录当前升级进度,使得上电后能够在当前升级进度处继续升级,实现断点升级。同时由于记录区域记录有当前升级进度,可以根据该进度解析出当前加载的子应用程序,从而判断出现错误的阶段,有利于升级错误的排查。
由单独的校验程序执行升级校验时,升级文件中可以设置有与子装载程序一一对应的校验程序。在一种优选的方式中,嵌入式设备的固件升级方法包括如下步骤:
在S234之后S235之前,该方法还包括如下子步骤:
S2343,在RAM中运行前级装载程序,以根据第i个子装载程序标识从上位机中获取与第i个子装载程序对应的第i个校验程序,并将第i个校验程序加载至RAM中。
优选地,每个校验程序在升级文件中的排列顺序位于与该校验程序对应的子装载程序之后。待升级嵌入式设备可以通过子装载程序标识确定对应校验程序在升级文件中的存储位置。
S2345,在RAM中运行该校验程序,以校验与第i个子装载程序对应的第i个固件的升级是否成功,若成功则执行步骤S235,否则重复执行上一次执行的步骤S2332。
校验时,可通过比对Flash的固件区域的数据与升级文件中的固件数据的一致性以校验是否升级成功。例如,通过计算Flash的固件区域中待校验固件的数据的CRC码,与升级文件中该固件数据的头部信息中的数据CRC码进行比对,二者一致则说明比对成功,也即升级成功,进一步地可以在记录区域记录当前升级进度为该固件升级成功;否则说明升级失败,在记录区域记录当前升级进度为该固件擦除成功的前一升级进度,以重新执行该固件的升级流程。
通过上述方式,每对一个固件进行更新后,对该固件升级成功与否进行校验,确保固件升级成功后再执行下一固件的升级流程,若升级失败则继续进行该固件的升级,如此按照固件的升级顺序依次执行升级和校验,使得最终完成升级后每个固件均升级成功。为每个固件设置单独的校验程序,方便校验程序的修改或扩展:若某个固件的校验程序内容需要修改,仅需对该固件的校验程序进行修改,无需修改其他固件的校验程序;若有新的固件需要升级,可通过增加该固件的子装载程序和校验程序实现扩展。
如前所述,本发明实施例可以对所有固件类型的固件进行升级,包括引导程序、应用程序和程序资源。当需要升级的固件为引导程序时,本发明实施例还对升级前的引导程序进行备份。在一种可选的方式中,上述步骤S2332中拉取的当前子装载程序用于更新嵌入式设备中的引导程序;嵌入式设备的固件升级方法包括如下步骤:
在S2332之后,嵌入式设备集群的固件升级方法还包括如下步骤:
S2333,将可擦写非易失性存储器中第一地址存储的引导程序备份至可擦写非易失性存储器中的第二地址。
在后续步骤中将新的固件写入Flash时,会先将Flash中的原有固件进行擦除,以能够将新的固件写入Flash中存储原有固件的区域。针对uboot升级,若将原有的uboot擦除后,新的uboot成功写入前,出现意外掉电,系统中uboot缺失,将导致嵌入式设备无法正常开机运行;或者若新的uboot写入不成功,也将导致无法正常开机运行。因此,本发明实施例在对uboot升级时,擦除uboot前先进行uboot备份,防止升级流程中意外掉电或uboot写入失败导致无法正常开机运行,确保在该情形下重新上电后可以正常加载并运行备份的原有uboot。
在一种可选的方式中,嵌入式设备的固件包括引导程序以及应用程序和程序资源中的至少一个,与嵌入式设备对应的子装载程序列表中按顺序记录有N个子装载程序标识,其中N为正整数,N≥1,与子装载程序标识对应的每个子装载程序分别用于更新嵌入式设备中与其对应的固件;S232包括:运行前级装载程序以从多个子装载程序列表中查找到与第一标识信息对应的子装载程序列表,前级装载程序用于:根据子装载程序列表中记录的子装载程序标识,通过BLE从上位机中拉取与第1个子装载程序标识所对应的第1个子装载程序,第1个子装载程序为引导程序装载程序,引导程序装载程序用于:将可擦写非易失性存储器中第一地址存储的引导程序备份至可擦写非易失性存储器中的第二地址,并擦除第一地址存储的引导程序;从上位机中获取引导程序,将获取的引导程序写入可擦写非易失性存储器;按照与嵌入式设备对应的子装载程序列表中记录的N个子装载程序标识的顺序,依次根据子装载程序列表中记录的子装载程序标识从上位机中拉取剩余的子装载程序,剩余的子装载程序为应用程序装载程序和/或程序资源应用程序,子装载程序用于从上位机中获取与该子装载程序对应的固件的升级数据,将获取的升级数据写入可擦写非易失性存储器。
下面以一个具体实例详细说明本发明是如何实现的。
在本具体实例中,升级文件中包括装载程序和待升级固件。装载程序包括1个第一装载程序、1个第二装载程序和n个子装载程序。第一装载程序主要负责加载第二装载程序至RAM运行,仅具备与上位机的通信接口以及解析和加载第二装载程序的代码,通信接口可供第二装载程序使用;第二装载程序负责控制整个升级流程,包括是否升级、断点升级(也即根据记录区域记录的当前升级进度从断点处继续升级)以及加载升级流程中子装载程序的代码,通常根据记录区域记录的当前升级进度加载对应的第n个子装载程序;n个子装载程序负责下载待升级固件和升级校验等。待升级固件包括uboot、应用程序和程序资源。Flash为嵌入式设备的主控芯片的内部Flash。
图7为一具体实例中嵌入式设备中Flash和RAM的存储区域结构、上位机中升级文件的结构以及固件升级流程示意图。图8为图7中n个子装载程序的结构示意图,其中按顺序依次存储每个子装载程序的头部(head)和代码(code)。图9为图7中一个子装载程序具体实例的结构示意图,其中待升级固件包括uboot和第一应用程序;uboot的校验由uboot升级代码完成,uboot升级代码既引导写入新的uboot,也在新的uboot写入后进行校验(也可以在uboot升级代码之后的区域单独设置uboot校验程序对写入的新的uboot进行校验);第一应用程序的校验由单独设置的校验程序完成。
图7至图9中关键名词的解释如下:
Flash头部:用于标志Flash信息的数据段,是Flash中固化的ROM程序,uboot位于其之后的存储区域,可据特定的规则在Flash中寻找Flash头部信息,从而得知uboot的具体位置。
新的Flash头部:指升级后固件中的Flash头部。
原有的Flash头部:指升级前固件原有的Flash头部。
新的uboot:指升级后固件中的uboot。
原有的uboot:指升级前固件原有的uboot。
应用程序代码:包括应用程序的代码和程序资源的代码。
预留区域:Flash中用于可擦写数据存放的区域。
剩余空间:预留区域中写入数据后可用于可擦写数据存放的空间。
sp:RAM中的堆栈寄存器(stack pointer),用于存放要执行的数据,在跳转到子程序之前,先将子程序的返回地址存入sp,即进行入栈操作。
bss:RAM中的bss段(bss segment),是指用于存放程序中未初始化的全局变量的一块内存区域。请参阅图7至图12,升级流程如下:
1,加载第一装载程序:
首先判断固件是否需要升级,若是则从上位机请求升级文件数据,加载第一装载程序到Flash的预留区域。加载第一装载程序完成之后,更新记录区域的信息,记录当前升级进度(例如加载第一装载程序成功),接着执行复位操作,由uboot引导第一装载程序运行。
判断固件是否需要升级,可通过CRC校验的方式,例如计算上位机的升级文件中uboot代码和应用程序代码的头部数据的CRC码(根据多个头部数据的CRC码计算出一个CRC码),与当前嵌入式设备内部uboot代码和应用程序代码计算的头部CRC码比对,不一致说明存在新固件需要升级。
2,第一装载程序将第二装载程序加载至RAM运行:
第一装载程序从上位机中请求升级文件数据,解析得到第二装载程序在升级文件中的位置,加载第二装载程序到RAM中(也即第一装载程序直接从外部设备将第二装载程序加载到RAM运行)。
3,第二装载程序加载子装载程序:
如图11所示,图11为第二装载程序的结构示意图,第二装载程序中存储有与各种待升级嵌入式设备对应的子装载程序列表。通过运行第一装载程序加载第二装载程序到RAM中运行后,第二装载程序从存储的与各种待升级嵌入式设备对应的子装载程序列表中查找到与运行此第二装载程序的嵌入式设备对应的子装载程序列表,第二装载程序通过子装载程序列表中的子装载程序标识从上位机的升级文件中依次拉取对应的子装载程序到RAM中指定位置运行。如图12所示,图12为子装载程序列表的结构示意图,第一标识信息为厂商ID和产品ID,将同一厂商ID和同一产品ID的嵌入式设备归为一类,子装载程序列表中记录有该类嵌入式设备所对应的多个子装载程序的子装载程序标识。
当设置有记录区域时,第二装载程序根据子装载程序标识和记录区域记录的当前升级进度,从上位机中加载当前升级进度对应的子装载程序到RAM中指定位置运行。若记录区域无记录信息(也即当前升级进度为无升级状态),则判定为首次执行升级流程,执行步骤3.1,否则根据记录区域的信息加载对应的应用程序子装载程序或程序资源子装载程序,执行步骤3.2。
3.1,第二装载程序从上位机获取uboot装载程序并加载至RAM中的运行地址,执行升级uboot的流程。首先判断记录区域的信息中是否记录了uboot升级的当前升级进度。若有当前升级进度,则根据当前升级进度执行相应流程。若无当前升级进度,则判断uboot是否发生变化(可通过比对本地Flash中uboot头部中的CRC码和上位机的升级文件中uboot头部中的数据CRC码,不一致则认为uboot发生变化)。若uboot没有发生变化,则无需更新;若uboot发生变化,则需要先对uboot进行升级,执行步骤3.1.1。
3.1.1,将原有的Flash头部和原有的uboot备份至设定位置,更新记录区域,记录当前升级进度为uboot备份成功,然后擦除原有的Flash头部和原有的uboot,擦除完成之后更新记录区域,记录当前升级进度为uboot擦除成功。
3.1.2,从上位机读取新的uboot进行升级,新的uboot写入Flash之后执行升级校验,校验无误后写入新的Flash头部并更新记录区域,记录当前升级进度为应用程序升级。
关于备份uboot的读取方式:备份uboot时备份地址为Flash中n*64K地址,n为正整数。芯片上电后首先读取芯片内Flash的0地址数据进行比对,判断是否符合Flash头部结构;若是,则偏移Flash头部的长度读取uboot,并判断uboot完整性;若uboot完整,则将uboot从Flash加载至RAM中运行,再由uboot引导应用程序运行。若0地址数据不符合Flash头部结构,再读取Flash的1*64K位置进行同样的数据校验,若再不符合则读取2*64K,直至Flash尾部。升级uboot过程中若升级失败,可根据上述方式读取备份好的uboot,避免设备无法启动。64K仅为举例,还可以是其他大小,其与Flash的存储结构相关。
关于新固件的具体加载过程:
图10为图7中升级文件中的新固件的头部的结构示意图,也即图7中uboot代码或应用程序代码的头部的存储结构。请参阅图10,以uboot升级为例,每个子装载程序获取uboot头部的偏移值。关于偏移值,例如,uboot代码存储于升级文件的首位,则uboot头部的位置为0(也即偏移值为0),第一应用程序头部的偏移值为“0+升级文件中uboot头部长度+uboot主体长度”,uboot头部长度+uboot主体长度可以从uboot头部获取(也即图10中的长度),然后根据第一应用程序的名称是否为“app”判断当前头部是否为应用程序的头部,其他应用程序或程序资源的加载以此类推。根据uboot头部中的名称为“uboot”,确定该头部数据为uboot的头部数据,通过图10中该头部数据中的头部CRC码确定该头部数据的完整性,具体可根据图10中uboot的头部数据得到该uboot区域的长度和头部CRC码,然后对uboot的头部数据进行CRC计算得到计算的CRC码,本领域技术人员可以理解,计算CRC码时依据头部数据中除头部CRC码以外的其余数据进行计算,例如依据图10所示的头部CRC码以下的数据CRC码、地址……名称等五个部分的数据计算CRC码。最后将计算的CRC码和uboot的头部数据中记录的头部CRC码对比,相同则认为uboot区域完整(也即uboot的头部数据完整)。若该头部数据完整,则根据该头部数据中的地址(也即固件存储地址)从升级文件对应地址拉取长度为该头部数据中长度(length)的数据至Flash中与该头部数据中的运行地址(也即固件运行地址)对应的地址,并计算实际拉取的uboot的数据的CRC码与升级文件中uboot头部中的数据CRC码是否一致,以校验拉取的uboot代码是否正确。
以上为已uboot为例说明的固件的数据部分(也即主体部分)的写入过程,关于头部的写入过程,还是以uboot为例进行说明:
从升级文件拉取uboot头部区域的数据(不包括头部CRC码)至Flash,计算实际拉取的uboot的头部区域的CRC码与升级文件中uboot的头部数据中的头部CRC码是否一致,以校验拉取的uboot头部代码是否正确。若一致,则将升级文件中uboot的头部数据中的头部CRC码填入Flash中uboot的头部区域(也即图7中的新的Flash头部)。
3.2,第二装载程序按照图8中子装载程序的顺序加载子装载程序至RAM的运行地址,执行应用程序或程序资源的升级流程3.2.1。
3.2.1首先根据上位机的升级文件中应用程序代码的长度,擦除Flash中对应的应用程序代码区域的内容,并更新记录区域,记录当前升级进度为该固件擦除成功。接着从上位机读取新的应用程序代码写入Flash,写入完成之后更新记录区域,记录当前升级进度为该固件备份成功。
4,第二装载程序根据子装载程序的顺序加载该固件的校验程序代码至RAM的运行地址,执行应用程序或程序资源的校验流程。根据Flash中应用程序代码的数据计算CRC码,与升级文件中该应用程序的数据CRC码比对,一致则表示升级成功,更新当前升级进度为该固件升级成功;若校验失败,则需要把当前升级进度回退为该固件升级,并重新执行步骤3。
基于上述构思,根据本发明实施例的一个方面,提供一种嵌入式设备集群的固件升级装置,具体请参阅图13,图13为本发明实施例提供的嵌入式设备集群的固件升级装置的结构框图。该装置应用于嵌入式设备集群的固件升级的上位机侧。如图13所示,该装置300包括接收模块310、连接模块320和发送模块330。
接收模块310用于接收嵌入式设备集群中的嵌入式设备发送的蓝牙广播包,其中,蓝牙广播包包括第一标识信息,第一标识信息用于标识嵌入式设备的种类;
连接模块320用于若第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的嵌入式设备建立BLE连接;
发送模块330用于通过BLE将与第一标识信息对应的升级文件发送给待升级嵌入式设备,以使待升级嵌入式设备通过升级文件升级其固件。
本发明实施例的嵌入式设备集群的固件升级装置还包括其他用于执行上述在上位机侧执行的嵌入式设备集群的固件升级方法实施例的各步骤的各个模块,此处不再一一赘述。
基于上述构思,根据本发明实施例的一个方面,提供一种嵌入式设备集群的固件升级装置,具体请参阅图14,图14为本发明另一实施例提供的嵌入式设备集群的固件升级装置的结构框图。该装置应用于嵌入式设备集群的固件升级的嵌入式设备侧。如图14所示,该装置400包括发送模块410、连接模块420和处理模块430。
发送模块410用于发送包含第一标识信息的蓝牙广播包以使上位机根据第一标识信息确定嵌入式设备的种类是否为待升级嵌入式设备中的一种,其中,第一标识信息用于标识嵌入式设备的种类;
连接模块420用于在上位机识别嵌入式设备为待升级嵌入式设备后,与上位机进行BLE连接;
处理模块430用于通过BLE从上位机中获取与第一标识信息对应的升级文件并通过升级文件升级待升级嵌入式设备中的固件。
本发明实施例的嵌入式设备集群的固件升级装置还包括其他用于执行上述在上位机侧执行的嵌入式设备集群的固件升级方法实施例的各步骤的各个模块,此处不再一一赘述。
本发明还提供一种嵌入式设备集群的固件升级系统,请参考图15,图15为本发明实施例提供的嵌入式设备集群的固件升级系统的结构框图。该系统500包括上位机510和嵌入式设备520;
嵌入式设备520用于发送包含第一标识信息的蓝牙广播包,其中,第一标识信息用于标识嵌入式设备的种类;
上位机510用于接收嵌入式设备发送的蓝牙广播包;
上位机510还用于若第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的嵌入式设备建立BLE连接;
待升级嵌入式设备520用于与上位机进行BLE连接;
上位机510还用于通过BLE将与第一标识信息对应的升级文件发送给待升级嵌入式设备;
待升级嵌入式设备520还用于通过BLE从上位机中获取与第一标识信息对应的升级文件并通过升级文件升级待升级嵌入式设备中的固件。
本发明实施例的嵌入式设备集群的固件升级系统的各部分还用于执行前述嵌入式设备集群的固件升级方法实施例的各步骤,具体可参考前文描述,此处不再赘述。
本发明还提供一种电子设备,请参考图16,该电子设备600包括:处理器(processor)602和存储器(memory)604。
其中,处理器602,用于执行程序606,具体可以执行上述用于嵌入式设备集群的固件升级方法实施例中的相关步骤。
具体地,程序606可以包括计算机可执行指令。
处理器602可能是中央处理器CPU,或者是特定集成电路ASIC,或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器604,用于存储程序606。存储器604可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
本发明还提供了一种计算机可读存储介质,存储介质中存储有至少一可执行指令,可执行指令被执行时能实现如上位机侧所执行的任意实施例中的嵌入式设备集群的固件升级方法的操作或者如嵌入式设备侧所执行的任意实施例中的嵌入式设备集群的固件升级方法的操作。
此外,本发明还提供了一种芯片,适用于电子设备,芯片内存储有指令集,指令集被执行时,能够指示电子设备实现如上在上位机侧执行的嵌入式设备集群的固件升级方法的操作,指示电子设备实现如上在嵌入式设备侧执行的嵌入式设备集群的固件升级方法的操作。电子设备可以是前述的上位机或者嵌入式设备。
需要说明的是,本公开的实施例所述的计算机可读存储介质并不限定于上述所给实施例,例如还可以为电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。其中,附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生,例如,两个接连表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本文中对于各步骤的编号仅为了方便说明和引用,并不用于限定前后顺序,具体的执行顺序是由技术本身确定的,本领域技术人员可以根据技术本身确定各种允许的、合理的顺序。
需要说明的是,本发明中采用步骤编号(字母或数字编号)来指代某些具体的方法步骤,仅仅是出于描述方便和简洁的目的,而绝不是用字母或数字来限制这些方法步骤的顺序。本领域的技术人员能够明了,相关方法步骤的顺序,应由技术本身决定,不应因步骤编号的存在而被不适当地限制,本领域技术人员可以根据技术本身确定各种允许的、合理的步骤顺序。
本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。
应当理解,上述的实施方式仅是示例性的,而非限制性的,在不偏离本发明的基本原理的情况下,本领域的技术人员可以针对上述细节做出的各种明显的或等同的修改或替换,都将包含于本发明的权利要求范围内。
Claims (30)
1.一种嵌入式设备集群的固件升级方法,其特征在于,应用于上位机,所述方法包括:
S110,接收嵌入式设备集群中的嵌入式设备发送的蓝牙广播包,其中,所述蓝牙广播包包括第一标识信息,所述第一标识信息用于标识所述嵌入式设备的种类;
S120,若所述第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的所述嵌入式设备建立BLE连接;
S130,通过BLE将与所述第一标识信息对应的升级文件发送给所述待升级嵌入式设备,以使所述待升级嵌入式设备通过所述升级文件升级其固件。
2.根据权利要求1所述的方法,其特征在于,嵌入式设备集群具有M个所述嵌入式设备,其中M为正整数,M≥1;所述S110包括:S111,接收第i个嵌入式设备发送的蓝牙广播包,其中i为正整数,1≤i≤M,i的初始值为1;
所述S120包括:若所述第i个嵌入式设备发送的蓝牙广播包中的第一标识信息属于所述多种待升级嵌入式设备中其中一种设备的标识信息,与作为所述待升级嵌入式设备的所述第i个嵌入式设备建立BLE连接,对i自加1并转至步骤S111,直至i=M。
3.根据权利要求1所述的固件升级方法,其特征在于,在所述S130之后,所述方法还包括:
S140,接收由所述待升级嵌入式设备发送的固件升级完成信息;
S150,将所述待升级嵌入式设备加入已升级设备列表。
4.根据权利要求3所述的固件升级方法,其特征在于,所述蓝牙广播包还包括第二标识信息,所述第二标识信息用于标识每个嵌入式设备;
所述S150包括:将发送所述固件升级完成信息的所述待升级嵌入式设备的第二标识信息加入所述已升级设备列表;
所述S120包括:S122若所述第一标识信息属于所述多种待升级嵌入式设备中其中一种设备的标识信息且所述第二标识信息不位于所述已升级设备列表,则与作为所述待升级嵌入式设备的所述嵌入式设备建立BLE连接。
5.根据权利要求4所述的方法,其特征在于,嵌入式设备集群具有M个所述嵌入式设备,其中M为正整数,M≥1;所述S110包括:S112,接收第i个嵌入式设备发送的蓝牙广播包,其中i为正整数,1≤i≤M,i的初始值为1;
所述S122包括:判断所述第i个嵌入式设备发送的蓝牙广播包中的第一标识信息是否属于所述多种待升级嵌入式设备中其中一种设备的标识信息;若属于,则判断所述第i个嵌入式设备发送的蓝牙广播包中的第二标识信息是否位于所述已升级设备列表;若不位于,则与所述待升级嵌入式设备的所述第i个嵌入式设备建立BLE连接,对i自加1并转至步骤S112,直至i=M。
6.根据权利要求1所述的方法,其特征在于,所述升级文件包括前级装载程序和多个子装载程序,所述前级装载程序用于加载子装载程序,所述前级装载程序包括与所述预设多种待升级嵌入式设备对应的多个子装载程序列表,每个子装载程序列表中记录有多个子装载程序标识,所述多个子装载程序用于升级与记录其标识的列表所对应的待升级嵌入式设备中的多个待升级固件;
所述S130包括:通过BLE将所述前级装载程序发送给所述待升级嵌入式设备以使所述待升级嵌入式设备通过与其对应的所述子装载程序列表中的所述多个子装载程序标识从所述多个子装载程序中拉取与其对应的子装载程序,以升级其固件。
7.根据权利要求1~6中任意一项所述的方法,其特征在于,在所述S110之前,所述方法还包括:
通过big或cig蓝牙通讯方式向嵌入式设备集群发送指令,以使所述嵌入式设备集群中的嵌入式设备将蓝牙通讯方式从big或cig切换为BLE。
8.一种嵌入式设备集群的固件升级方法,应用于嵌入式设备,其特征在于,所述方法包括:
S210,发送包含第一标识信息的蓝牙广播包以使上位机根据所述第一标识信息确定所述嵌入式设备的种类是否为待升级嵌入式设备中的一种,其中,所述第一标识信息用于标识所述嵌入式设备的种类;
S220,在所述上位机识别所述嵌入式设备为待升级嵌入式设备后,与所述上位机进行BLE连接;
S230,通过BLE从所述上位机中获取与所述第一标识信息对应的升级文件并通过所述升级文件升级所述待升级嵌入式设备中的固件。
9.根据权利要求8所述的方法,其特征在于,在所述S230之后,所述方法还包括:
S240,通过BLE向所述上位机发送固件升级完成信息以使所述上位机将所述嵌入式设备加入已升级设备列表。
10.根据权利要求9所述的固件升级方法,其特征在于,所述S240包括:通过BLE向所述上位机发送固件升级完成信息以使所述上位机将所述嵌入式设备的第二标识信息加入已升级设备列表,其中,所述第二标识信息用于标识每个嵌入式设备;
所述S210包括:发送包含所述第一标识信息和所述第二标识信息的蓝牙广播包以使所述上位机根据所述第一标识信息、所述第二标识信息和所述已升级设备列表确定所述嵌入式设备为所述待升级嵌入式设备。
11.根据权利要求8所述的方法,其特征在于,所述S230包括:
S231,通过BLE从所述上位机获取前级装载程序,所述前级装载程序包括与多种待升级嵌入式设备对应的多个子装载程序列表,每个子装载程序列表中记录有多个子装载程序标识;
S232,运行所述前级装载程序以从所述多个子装载程序列表中查找到与所述第一标识信息对应的子装载程序列表;
S233,根据所述子装载程序列表中记录的子装载程序标识,通过BLE从所述上位机中拉取与所述子装载程序标识对应的子装载程序;
S234,运行所述子装载程序,以升级所述嵌入式设备中与所述子装载程序对应的固件。
12.根据权利要求8所述的方法,其特征在于,在所述S210之前,所述方法还包括:
通过big或cig蓝牙通讯方式接收来自所述上位机的指令,基于所述指令将蓝牙通讯方式从big或cig蓝牙通讯方式切换为BLE。
13.根据权利要求11所述的方法,其特征在于,所述S231包括:S2311,通过BLE从所述上位机获取所述前级装载程序,并将至少部分前级装载程序存储在可擦写非易失性存储器中;S2312,将所述前级装载程序加载至RAM;
所述S232包括:在所述RAM中运行所述前级装载程序以从所述多个子装载程序列表中查找到与所述第一标识信息对应的子装载程序列表;
所述S233包括:S2332,根据所述子装载程序列表中记录的子装载程序标识,通过BLE从所述上位机中拉取与所述子装载程序标识对应的子装载程序;S2334,将所述与所述子装载程序标识对应的子装载程序加载至所述RAM中;
所述S234包括:在所述RAM中运行所述子装载程序,以升级所述嵌入式设备中与所述子装载程序对应的固件。
14.根据权利要求13所述的方法,其特征在于,所述前级装载程序包括第一装载程序和第二装载程序,所述第二装载程序包括与多种待升级嵌入式设备对应的多个子装载程序列表;
所述S2311包括:S2311a,通过BLE从所述上位机获取所述第一装载程序,并将所述第一装载程序存储在所述可擦写非易失性存储器中;S2311b,运行所述第一装载程序,以从所述上位机获取所述第二装载程序;
所述S2312包括:将所述第二装载程序加载至所述RAM;
所述S232包括:在所述RAM中运行所述第二装载程序,以从所述多个子装载程序列表中查找到与所述第一标识信息对应的子装载程序列表。
15.根据权利要求14所述的方法,其特征在于,所述第一装载程序由通信接口代码和第一加载代码组成,其中,所述通信接口代码用于实现所述嵌入式设备和所述上位机的通信接口,所述第一加载代码用于通过所述通信接口从所述上位机获取所述第二装载程序。
16.根据权利要求13所述的方法,其特征在于,所述嵌入式设备的固件包括引导程序、应用程序、程序资源中的一个或多个,与所述嵌入式设备对应的子装载程序列表中按顺序记录有N个子装载程序标识,其中N为正整数,N≥1;
所述S2332包括:根据所述子装载程序列表中记录的第i个子装载程序标识,通过BLE从所述上位机中拉取所述第i个子装载程序标识所对应的子装载程序,其中i为正整数,1≤i≤N,i的初始值为1;
所述S2334包括:将所述第i个子装载程序标识所对应的第i个子装载程序加载至所述RAM中;
所述S234包括:在所述RAM中运行所述第i个子装载程序,以从所述上位机中获取与所述第i个子装载程序对应的第i个固件的升级数据从而升级所述嵌入式设备中与所述第i个子装载程序对应的固件;
在所述S234之后,所述方法还包括S235:对i自加1并转至S2332,直至i=N。
17.根据权利要求16所述的方法,其特征在于,在所述S2311之后,所述方法还包括:在所述RAM中设置标志位,其中,所述标志位在掉电时会被删除;
所述S232包括:
S2321,运行引导程序,以判断所述RAM中是否存在标志位;
S2323,若所述引导程序判断所述RAM中存在标志位,在所述RAM中运行所述前级装载程序,以从所述多个子装载程序列表中查找到与所述第一标识信息对应的子装载程序列表;
S2325,若所述引导程序判断所述RAM中不存在标志位,引导所述嵌入式设备正常启动;
在所述S235后,所述方法还包括:S236,删除所述标志位。
18.根据权利要求16所述的方法,其特征在于,所述可擦写非易失性存储器的记录区域记录有当前升级进度,所述S2332包括:在所述RAM中运行所述前级装载程序,以根据所述记录区域记录的当前升级进度和所述子装载程序列表中记录的子装载程序标识从所述上位机获取相应的第i个子装载程序,其中,相应的第i个子装载程序为所述当前升级进度下所需执行的下一操作步骤用于升级的第i个固件所对应的子装载程序;
所述S234包括:
S2342,在所述RAM中运行所述第i个子装载程序,根据所述记录区域记录的当前升级进度,若当前升级进度为第i个固件擦除成功,则执行步骤S2346;若当前升级进度为第i个固件写入成功,则执行S2348;若当前升级进度为无升级状态,则执行所述S2344;若当前升级进度为第i个固件升级成功,则执行S235;
S2344,擦除所述可擦写非易失性存储器中存储的与所述第i个子装载程序对应的第i个固件,并在所述可擦写非易失性存储器的记录区域记录当前升级进度为第i个固件擦除成功;
S2346,从所述上位机中获取该固件的升级数据,将该固件的升级数据存储至所述可擦写非易失性存储器,并在所述记录区域记录当前升级进度为第i个固件写入成功;
S2348,若校验该固件升级成功,在所述记录区域记录当前升级进度为第i个固件升级成功;若校验该固件升级失败,在所述记录区域记录当前升级进度为该固件擦除成功的前一升级进度,所述前一升级进度为第(i-1)个固件升级成功或无升级状态。
19.根据权利要求16所述的方法,其特征在于,在所述S234之后所述S235之前,所述方法还包括:
S2343,在所述RAM中运行所述前级装载程序,以根据所述第i个子装载程序标识从所述上位机中获取与所述第i个子装载程序对应的第i个校验程序,并将所述第i个校验程序加载至所述RAM中;
S2345,在所述RAM中运行该校验程序,以校验与所述第i个子装载程序对应的第i个固件的升级是否成功,若成功则执行所述步骤S235,否则重复执行上一次执行的所述步骤S2332。
20.根据权利要求16所述的方法,其特征在于,所述步骤S2332中拉取的当前子装载程序用于更新所述嵌入式设备中的引导程序;
在所述S2332之后,所述方法还包括:
S2333,将所述可擦写非易失性存储器中第一地址存储的引导程序备份至所述可擦写非易失性存储器中的第二地址。
21.根据权利要求11所述的方法,其特征在于,所述嵌入式设备的固件包括引导程序以及应用程序和程序资源中的至少一个,与所述嵌入式设备对应的子装载程序列表中按顺序记录有N个子装载程序标识,其中N为正整数,N≥1,与所述子装载程序标识对应的每个子装载程序分别用于更新所述嵌入式设备中与其对应的固件;
所述S232包括:运行所述前级装载程序以从所述多个子装载程序列表中查找到与所述第一标识信息对应的子装载程序列表,所述前级装载程序用于:
根据所述子装载程序列表中记录的子装载程序标识,通过BLE从所述上位机中拉取与第1个子装载程序标识所对应的第1个子装载程序,所述第1个子装载程序为引导程序装载程序,所述引导程序装载程序用于:将所述可擦写非易失性存储器中第一地址存储的引导程序备份至所述可擦写非易失性存储器中的第二地址,并擦除所述第一地址存储的引导程序;从所述上位机中获取引导程序,将获取的引导程序写入所述可擦写非易失性存储器;
按照与所述嵌入式设备对应的子装载程序列表中记录的N个子装载程序标识的顺序,依次根据所述子装载程序列表中记录的子装载程序标识从所述上位机中拉取剩余的子装载程序,所述剩余的子装载程序为应用程序装载程序和/或程序资源应用程序,所述子装载程序用于从所述上位机中获取与该子装载程序对应的固件的升级数据,将获取的升级数据写入所述可擦写非易失性存储器。
22.根据权利要求21所述的方法,其特征在于,所述可擦写非易失性存储器的记录区域用于记录升级进度;所述引导程序装载程序在将所述可擦写非易失性存储器中第一地址存储的引导程序备份至所述可擦写非易失性存储器中的第二地址之前,还用于:
在所述记录区域无记录信息时,判断所述上位机中引导程序的头部CRC码与所述嵌入式设备的引导程序的头部CRC码是否一致;
若所述上位机中引导程序的头部CRC码与所述嵌入式设备的引导程序的头部CRC码不一致,执行将所述可擦写非易失性存储器中第一地址存储的引导程序备份至所述可擦写非易失性存储器中的第二地址的步骤。
23.根据权利要求20~22任意一项所述的方法,其特征在于,所述第二地址为所述可擦写非易失性存储器中n*m字节地址,n为整数,n≥0,m为正整数;所述方法还包括:
步骤S203,上电后读取所述可擦写非易失性存储器中j*m字节地址存储的数据,判断读取的数据是否符合所述可擦写非易失性存储器的头部结构,其中,其中j为正整数,1≤j≤n,j的初始值为1;若读取的数据符合所述可擦写非易失性存储器的头部结构,执行步骤S205,否则,执行步骤S207;
步骤S205,偏移所述可擦写非易失性存储器的头部长度读取存储于所述可擦写非易失性存储器的头部之后的引导程序,将该引导程序从所述可擦写非易失性存储器加载至所述RAM中运行;
步骤S207,对j自加1并转至步骤S203,直至j=n。
24.根据权利要求16所述的方法,其特征在于,所述上位机中包括按顺序排列的N个固件,每个固件的头部包括头部CRC码、数据CRC码、固件存储地址、固件运行地址和固件长度;
所述从所述上位机中获取与所述第i个子装载程序对应的第i个固件的升级数据从而升级所述嵌入式设备中与所述第i个子装载程序对应的固件,包括:
计算所述第i个固件的头部的偏移值,所述第i个固件的头部的偏移值等于所述上位机中该固件之前的所有固件的固件长度之和;
通过所述第i个固件的头部CRC码确定所述第i个固件的头部的完整性;
若所述第i个固件的头部完整,从上位机中的与所述第i个固件的固件存储地址对应的地址,读取长度为所述第i个固件的固件长度的数据,将其写入至所述可擦写非易失性存储器中的与所述第i个固件的固件运行地址对应的地址;
计算写入所述可擦写非易失性存储器中的与所述第i个固件的固件运行地址对应的地址的固件的CRC码,将该固件的CRC码与所述上位机中所述第i个固件的头部中的数据CRC码是否一致以校验固件读取是否正确。
25.一种嵌入式设备集群的固件升级装置,应用于上位机,其特征在于,所述装置包括:
接收模块,用于接收嵌入式设备集群中的嵌入式设备发送的蓝牙广播包,其中,所述蓝牙广播包包括第一标识信息,所述第一标识信息用于标识所述嵌入式设备的种类;
连接模块,用于若所述第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的所述嵌入式设备建立BLE连接;
发送模块,用于通过BLE将与所述第一标识信息对应的升级文件发送给所述待升级嵌入式设备,以使所述待升级嵌入式设备通过所述升级文件升级其固件。
26.一种嵌入式设备集群的固件升级装置,应用于嵌入式设备,其特征在于,所述装置包括:
发送模块,用于发送包含第一标识信息的蓝牙广播包以使所述上位机根据所述第一标识信息确定所述嵌入式设备的种类是否为待升级嵌入式设备中的一种,其中,所述第一标识信息用于标识所述嵌入式设备的种类;
连接模块,用于在所述上位机识别所述嵌入式设备为待升级嵌入式设备后,与所述上位机进行BLE连接;
处理模块,用于通过BLE从所述上位机中获取与所述第一标识信息对应的升级文件并通过所述升级文件升级所述待升级嵌入式设备中的固件。
27.一种嵌入式设备集群的固件升级系统,其特征在于,包括上位机和多个嵌入式设备;
所述嵌入式设备,用于发送包含第一标识信息的蓝牙广播包,其中,所述第一标识信息用于标识所述嵌入式设备的种类;
所述上位机,用于接收所述嵌入式设备发送的所述蓝牙广播包;
所述上位机,还用于若所述第一标识信息属于预设多种待升级嵌入式设备中其中一种设备的标识信息,与作为待升级嵌入式设备的所述嵌入式设备建立BLE连接;
所述待升级嵌入式设备,用于与所述上位机进行BLE连接;
所述上位机,还用于通过BLE将与所述第一标识信息对应的升级文件发送给所述待升级嵌入式设备;
所述待升级嵌入式设备,还用于通过BLE从所述上位机中获取与所述第一标识信息对应的升级文件并通过所述升级文件升级所述待升级嵌入式设备中的固件。
28.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器中存储有可执行指令,所述处理器能执行所述可执行指令以实现如权利要求1-7任意一项所述的嵌入式设备集群的固件升级方法的操作或者权利要求8-24任意一项所述的嵌入式设备集群的固件升级方法的操作。
29.一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,其特征在于,所述可执行指令被执行时能实现如权利要求1-7任意一项所述的嵌入式设备集群的固件升级方法的操作或者权利要求8-24任意一项所述的嵌入式设备集群的固件升级方法的操作。
30.一种芯片,适用于电子设备,其特征在于,所述芯片内存储有指令集,所述指令集被执行时,能够指示电子设备实现如权利要求1-7任意一项所述的嵌入式设备集群的固件升级方法的操作或者权利要求8-24任意一项所述的嵌入式设备集群的固件升级方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311057420.9A CN117098105A (zh) | 2023-08-21 | 2023-08-21 | 一种嵌入式设备集群的固件升级方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311057420.9A CN117098105A (zh) | 2023-08-21 | 2023-08-21 | 一种嵌入式设备集群的固件升级方法、装置和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117098105A true CN117098105A (zh) | 2023-11-21 |
Family
ID=88779954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311057420.9A Pending CN117098105A (zh) | 2023-08-21 | 2023-08-21 | 一种嵌入式设备集群的固件升级方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117098105A (zh) |
-
2023
- 2023-08-21 CN CN202311057420.9A patent/CN117098105A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101313287B (zh) | 经由嵌入式控制器初始化快闪存储设备 | |
US20050198485A1 (en) | System and method for a bootable USB memory device | |
CN115658160B (zh) | 基于多核异构soc的多操作系统升级方法、装置及系统 | |
CN110716845B (zh) | 一种Android系统的日志信息读取的方法 | |
US8549213B2 (en) | Nonvolatile storage device, access device and nonvolatile storage system | |
CN107239225B (zh) | 存储器管理方法、存储器储存装置及存储器控制电路单元 | |
CN111176665B (zh) | 大容量emmc镜像制作方法和装置 | |
WO2022227409A1 (zh) | 一种嵌入式终端远程软件更新方法 | |
CN110413331B (zh) | 基于rom的spi nor flash识别方法、装置、系统及存储介质 | |
CN113868156B (zh) | 系统升级掉电保护方法、电子设备及存储介质 | |
CN117093247A (zh) | 嵌入式设备的固件升级方法、装置、芯片和计算设备 | |
CN101667133A (zh) | 固件更新方法和使用该方法更新固件的芯片 | |
CN111078255B (zh) | 一种软件升级方法和软件升级系统 | |
CN117098105A (zh) | 一种嵌入式设备集群的固件升级方法、装置和系统 | |
KR20150072963A (ko) | 다중시스템 및 이의 부팅 방법 | |
CN111737165A (zh) | 存储器控制方法、存储器存储装置及存储器控制电路单元 | |
CN201869296U (zh) | 一种电视机 | |
CN116501357A (zh) | 一种单片机的在线升级方法 | |
CN113360161A (zh) | 资源升级方法及相关产品 | |
WO2016058188A1 (zh) | 一种应用于终端的软件升级方法、装置及终端 | |
WO2024114029A1 (zh) | 一种操作系统的升级方法及电子设备 | |
CN115562697B (zh) | 升级方法、设备及存储介质 | |
CN117742805B (zh) | 芯片初始化方法和装置 | |
KR102541439B1 (ko) | 차량 무선 업데이트의 관리 제어 방법 및 장치 | |
CN116719724B (zh) | eMMC多平台测试方法和装置、电子设备 |
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 |