CN106020875A - 嵌入式终端的固件更新管理方法和装置 - Google Patents

嵌入式终端的固件更新管理方法和装置 Download PDF

Info

Publication number
CN106020875A
CN106020875A CN201610320501.7A CN201610320501A CN106020875A CN 106020875 A CN106020875 A CN 106020875A CN 201610320501 A CN201610320501 A CN 201610320501A CN 106020875 A CN106020875 A CN 106020875A
Authority
CN
China
Prior art keywords
firmware
memorizer
memory
memorizeies
renewal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610320501.7A
Other languages
English (en)
Other versions
CN106020875B (zh
Inventor
何坚强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201610320501.7A priority Critical patent/CN106020875B/zh
Publication of CN106020875A publication Critical patent/CN106020875A/zh
Application granted granted Critical
Publication of CN106020875B publication Critical patent/CN106020875B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions

Abstract

本发明提供一种嵌入式终端的固件更新管理方法和装置,所述嵌入式终端具有多于一个的非易失性存储器,每个非易失性存储器具有独立启动系统的功能;对第一存储器进行固件更新;在第一存储器的固件更新完成后,重启系统,并在启动装载过程中检测第一存储器的固件是否更新成功;若更新成功,则继续选用第一存储器正常启动系统,并按照预设的更新逻辑对其他存储器进行固件更新;若更新失败,则重新选用其他存储器正常启动系统。上述方法和装置可提高固件更新的安全性和固件更新效率。

Description

嵌入式终端的固件更新管理方法和装置
技术领域
本发明涉及嵌入式技术领域,具体而言,本发明涉及一种嵌入式终端的固件更新管理方法和装置。
背景技术
嵌入式终端包括各种的固件,例如Camera、WiFi、蓝牙等等固件。嵌入式终端在更新时如果发生断电、更新文件损坏等情况时,会导致固件更新失败,可能导致嵌入式终端某些应用异常甚至无法正常启动系统,此时无法退回到更新前的固件和系统。无法正常启动系统则无法继续进行更新,只能送到产品维修点或厂家重新进行固件擦写,影响使用。
另外,当这些嵌入式终端需要更新更新固件时,通常需要利用U盘等外部存储器连接嵌入式终端,嵌入式终端读取外部存储器中的更新文件进行固件更新。这种固件更新方法,首先需要将更新文件放置在外部存储器,然后再将外部存储器连接嵌入式终端,嵌入式终端再读取更新文件进行更新,过程复杂,浪费时间,效率较低。
因此,传统嵌入式终端存在更新安全性差和效率差的问题。
发明内容
本发明的目的旨在至少能解决上述的技术缺陷之一,特别是安全性较差的技术缺陷。
本发明提供一种嵌入式终端的固件更新管理方法,所述嵌入式终端具有多于一个的非易失性存储器,每个非易失性存储器具有独立启动系统的功能,所述方法包括如下步骤:
对第一存储器进行固件更新;
在第一存储器的固件更新完成后,重启系统,并在启动装载过程中检测第一存储器的固件是否更新成功;
若更新成功,则继续选用第一存储器正常启动系统,并按照预设的更新逻辑对其他存储器进行固件更新;若更新失败,则重新选用其他存储器正常启动系统。
本发明中,按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器保留原始版本固件。
本发明中,按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器保留当前版本固件。
本发明中,其他存储器多于一个;按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器保留原始版本固件,在至少一个预设的存储器保留当前版本固件。
本发明中,若更新失败,则发出提示信息以供用户选择启动原始版本固件还是当前版本固件,并接收用户指令重新使用用户所选择版本对应的存储器正常启动系统。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,更新该一个存储器;
当其他存储器多于一个时,检测每个存储器的坏区数量,按照坏区数量从少到多更新该多于一个的存储器。
本发明中,不更新坏区数量超过预设阈值的存储器。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,更新该一个存储器;
当其他存储器多于一个时,检测每个存储器的系统临时文件数量,按照系统临时文件数量从少到多更新该多于一个的存储器。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,更新该一个存储器;
当其他存储器多于一个时,按照预设的顺序更新该多于一个的存储器。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,更新该一个存储器;
当其他存储器多于一个时,获取该多于一个的存储器的识别码,根据识别码的顺序来更新该多于一个的存储器。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,不更新该一个存储器,保留原始版本固件;
当其他存储器多于一个时,不更新其中一个存储器并保留原始版本固件,按照预设的顺序更新其余的存储器。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,不更新该一个存储器,保留原始版本固件;
当其他存储器多于一个时,获取该多于一个的存储器的识别码,不更新其中一个存储器并保留原始版本固件,根据识别码的顺序来更新其余的存储器。
本发明中,对第一存储器进行固件更新之前,还包括步骤:通过近距离通信方式发送当前固件信息给移动终端,并接收移动终端反馈的与当前固件信息相对应的更新包。
本发明中,通过近距离通信方式发送当前固件信息给移动终端之前,还包括步骤:接收来自移动终端的固件信息查询请求,并验证所述固件信息查询请求中的移动终端唯一标识信息。
本发明中,通过近距离通信方式发送当前固件信息给移动终端之前,还包括步骤:
监测系统时间;
当系统时间达到预设的更新时刻时,搜索预先已配对的所述移动终端并建立近距离通信连接。
本发明中,所述预设的更新时刻为预先从所述移动终端获取。
本发明中,对第一存储器进行固件更新之前,还包括步骤:使用第一存储器存储该更新包。
本发明中,按照预设的更新逻辑对其他存储器进行固件更新的步骤包括:
按照预设的更新逻辑确定当前需要更新的存储器;
提取第一存储器的该更新包,并使用当前需要更新的存储器存储该更新包;
使用当前需要更新的存储器存储的更新包对当前需要更新的存储器进行固件更新。
本发明中,对第一存储器进行固件更新之前,还包括步骤:对该更新包进行数据校验。
本发明中,所述数据校验包括CRC校验。
本发明还提供一种嵌入式终端的固件更新管理装置,所述嵌入式终端具有多于一个的非易失性存储器,每个非易失性存储器具有独立启动系统的功能,所述装置包括:更新模块、系统启动模块和检测模块;
所述更新模块用于对第一存储器进行固件更新;
在第一存储器的固件更新完成后,所述系统启动模块用于重启系统,所述检测模块用于在启动装载过程中检测第一存储器的固件是否更新成功;
若更新成功,则所述系统启动模块用于继续选用第一存储器正常启动系统,所述更新模块用于按照预设的更新逻辑对其他存储器进行固件更新;若更新失败,则所述系统启动模块用于重新选用其他存储器正常启动系统。
本发明中,所述更新模块按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器保留原始版本固件。
本发明中,所述更新模块按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器保留当前版本固件。
本发明中,其他存储器多于一个;所述更新模块按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器保留原始版本固件,在至少一个预设的存储器保留当前版本固件。
本发明中,还包括交互模块;若更新失败,则所述交互模块发出提示信息以供用户选择启动原始版本固件还是当前版本固件,并接收用户指令,所述系统启动模块根据用户指令重新使用用户所选择版本对应的存储器正常启动系统。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,更新该一个存储器;
当其他存储器多于一个时,检测每个存储器的坏区数量,按照坏区数量从少到多更新该多于一个的存储器。
本发明中,不更新坏区数量超过预设阈值的存储器。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,更新该一个存储器;
当其他存储器多于一个时,检测每个存储器的系统临时文件数量,按照系统临时文件数量从少到多更新该多于一个的存储器。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,所述更新模块更新该一个存储器;
当其他存储器多于一个时,所述更新模块按照预设的顺序更新该多于一个的存储器。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,所述更新模块更新该一个存储器;
当其他存储器多于一个时,所述更新模块获取该多于一个的存储器的识别码,根据识别码的顺序来更新该多于一个的存储器。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,所述更新模块不更新该一个存储器,保留原始版本固件;
当其他存储器多于一个时,所述更新模块不更新其中一个存储器并保留原始版本固件,按照预设的顺序更新其余的存储器。
本发明中,所述预设的更新逻辑包括:
当其他存储器只有一个时,所述更新模块不更新该一个存储器,保留原始版本固件;
当其他存储器多于一个时,所述更新模块获取该多于一个的存储器的识别码,不更新其中一个存储器并保留原始版本固件,根据识别码的顺序来更新其余的存储器。
本发明中,还包括近距离通信模块,所述更新模块对第一存储器进行固件更新之前,所述近距离通信模块通过近距离通信方式发送当前固件信息给移动终端,并接收移动终端反馈的与当前固件信息相对应的更新包。
本发明中,所述近距离通信模块通过近距离通信方式发送当前固件信息给移动终端之前,还接收来自移动终端的固件信息查询请求,并验证所述固件信息查询请求中的移动终端唯一标识信息。
本发明中,还包括监测模块,所述近距离通信模块通过近距离通信方式发送当前固件信息给移动终端之前,所述监测模块监测系统时间,当系统时间达到预设的更新时刻时,所述近距离通信模块搜索预先已配对的所述移动终端并建立近距离通信连接。
本发明中,所述预设的更新时刻为预先从所述移动终端获取。
本发明中,所述更新模块对第一存储器进行固件更新之前,还使用第一存储器存储该更新包。
本发明中,所述更新模块按照预设的更新逻辑对其他存储器进行固件更新的步骤包括:
按照预设的更新逻辑确定当前需要更新的存储器;
提取第一存储器的该更新包,并使用当前需要更新的存储器存储该更新包;
使用当前需要更新的存储器存储的更新包对当前需要更新的存储器进行固件更新。
本发明中,还包括校验模块,所述更新模块对第一存储器进行固件更新之前,所述校验模块对该更新包进行数据校验。
本发明中,所述数据校验包括CRC校验。
上述的嵌入式终端的固件更新管理方法和装置,所述嵌入式终端具有多于一个的非易失性存储器,每个非易失性存储器具有独立启动系统的功能;对第一存储器进行固件更新;在第一存储器的固件更新完成后,重启系统,并在启动装载过程中检测第一存储器的固件是否更新成功;若更新成功,则继续选用第一存储器正常启动系统,并按照预设的更新逻辑对其他存储器进行固件更新;若更新失败,则重新选用其他存储器正常启动系统。
由于嵌入式终端具有多于一个的非易失性存储器,每个非易失性存储器具有独立启动系统的功能,当第一存储器(例如主存储器)因为更新失败无法启动系统后,可以选择其他存储器启动系统,避免了固件更新失败无法正常启动系统的情况,提高了固件更新的安全性。
更新完成并重启后,在启动装载过程中就检测固件是否更新成功,并根据更新结果来决定是继续使用第一存储器启动系统还是切换到其他存储器启动系统,节约时间且自动进行,可以提高固件更新效率。
嵌入式终端可以通过近距离通信方式发送当前固件信息给移动终端,接收移动终端反馈的与当前固件信息相对应的更新包,然后嵌入式终端根据移动终端发送的更新包进行更新,无需外部存储器,只需通过近距离无线通信方式就能从移动终端获取更新包并进行更新,提高了更新效率。嵌入式终端还会对更新包进行数据校验,数据校验成功后才进行更新,提高了更新的安全性。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为一个实施例的嵌入式终端的固件更新管理方法示意图;
图2为一个实施例的移动终端从服务器获取更新包的方法示意图;
图3为一个实施例的嵌入式终端的固件更新管理装置示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(PersonalDigital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global PositioningSystem,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
本技术领域技术人员可以理解,这里所使用的远端网络设备,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云。在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。本发明的实施例中,远端网络设备、终端设备与WNS服务器之间可通过任何通信方式实现通信,包括但不限于,基于3GPP、LTE、WIMAX的移动通信、基于TCP/IP、UDP协议的计算机网络通信以及基于蓝牙、红外传输标准的近距无线传输方式。
图1为一个实施例的嵌入式终端的固件更新管理方法示意图。
本发明提供一种嵌入式终端的固件更新管理方法,该嵌入式终端具有多于一个的非易失性存储器,每个非易失性存储器具有独立启动系统的功能,例如可擦可编程只读存储器(EPROM)、电可擦除只读存储器(EEPROM)和闪存(FLASH)。该方法包括如下步骤:
步骤S100:接收来自移动终端的固件信息查询请求,并验证固件信息查询请求中的移动终端唯一标识信息。
固件(firmware)一般存储于设备中的电可擦除只读存储器EEPROM或FLASH芯片中,一般可由用户通过特定的刷新程序进行更新的程序。一般来说,担任着一个数码产品最基础、最底层工作的软件才可以称之为固件,例如Camera、WiFi、蓝牙等等模块的固件,又比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System),在以前其实更多的专业人士叫它固件。
通常这些硬件内所保存的程序是无法被用户直接读出或修改的。在以前,一般情况下是没有必要对固件进行更新操作的,即使在固件内发现了严重的Bug也必须由专业人员带着写好程序的芯片把原来机器上的更换下来。早期固件芯片一般采用了ROM设计,它的Firmware代码是在生产过程中固化的,用任何手段都无法修改。随着技术的不断发展,修改固件以适应不断更新的硬件环境成了用户们的迫切要求,所以,可重复写入的可编程可擦除只读存储器EPROM、EEPROM和flash出现了。这些芯片是可以重复刷写的,让固件得以修改和更新。
固件信息可以包括嵌入式终端型号信息、固件的版本信息、固件更新时间信息等等,通常情况下固件信息只需要包括固件的版本信息即可。
嵌入式终端通过近距离通信方式和移动终端建立连接。近距离通信方式包括蓝牙、UWB、NFC以及专用无线系统中至少一种。其中,UWB是一种无载波通信技术,利用纳秒至微微秒级的非正弦波窄脉冲传输数据。NFC是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC和智能控件工具间进行近距离无线通信技术。在本实施例中,嵌入式终端通过蓝牙通信方式发送当前固件信息给移动终端,因此固件信息基于蓝牙协议的数据形式。
以蓝牙为例,嵌入式终端已经预先和移动终端进行过蓝牙配对而形成通信接口。例如,嵌入式终端和移动终端到了用户手中用户再将其蓝牙配对。经过一次蓝牙配对的嵌入式终端和移动终端,就相当于预建立了蓝牙信任通信接口,这样嵌入式终端和移动终端在下一次进行蓝牙连接时可以直接建立信任连接,不再进行蓝牙配对。
在本实施例中,嵌入式终端的更新是被动进行更新,即需要在移动终端查询固件版本并发送更新包过来后才进行更新。当用户想为嵌入式终端进行更新更新时,可以使用移动终端的APP通过近距离通信方式向嵌入式终端发送固件信息查询请求,固件信息查询请求中包含有移动终端唯一标识信息。嵌入式终端接收来自移动终端的固件信息查询请求之后,嵌入式终端验证固件信息查询请求中的移动终端唯一标识信息(例如MAC地址、IMEI号、序列号等等)。以蓝牙为例,固件信息查询请求也是基于蓝牙协议的数据形式,当嵌入式终端接收到固件信息查询请求后,验证固件信息查询请求中的移动终端唯一标识信息,然后进行蓝牙连接。
当然,在一些实施例中,嵌入式终端的更新是主动进行更新,即距离上一次更新的时间达到了一定时间(经过一个更新查询周期)后,通过主动连接移动终端进行查询,确定需要更新后才进行更新。在这种情况下,嵌入式终端需要执行以下步骤:
监测系统时间;
当系统时间达到预设的更新时刻时,搜索预先已配对的移动终端并建立近距离通信连接。
上述的预设的更新时刻可以是嵌入式终端预先设定的,也可以为预先从移动终端获取的。
例如,嵌入式终端设定了一定的更新查询周期为三个月,则以某一次更新的时间为起点,当满三个月的时候,主动搜索预先已配对的移动终端,并在建立近距离通信连接后将当前固件信息发给移动终端以判断是否需要更新。
又例如,当移动终端的用户从服务器端获知已经发布对应所述嵌入式终端(例如型号)的更新信息,则可以主动与嵌入式终端进行连接,选择用户觉得适当的时间(更新时刻)发给嵌入式终端,以方便用户为更新预留足够的更新时间,毕竟更新过程可能较为漫长。
再回到本实施例中,嵌入式终端的更新是被动进行更新,嵌入式终端接收来自移动终端的固件信息查询请求后,执行步骤S200。
步骤S200:通过近距离通信方式发送当前固件信息给移动终端,并接收移动终端反馈的与当前固件信息相对应的更新包。在本步骤中,嵌入式终端接收到固件信息查询请求后,响应于该固件信息查询请求,将在本机存储的当前固件信息发送给移动终端。由于嵌入式终端在固件信息查询请求中可以获取移动终端唯一标识信息(例如MAC地址、IMEI号、序列号等等),因此嵌入式终端可以将在本机存储的当前固件信息发送给移动终端。例如,在近距离通信方式为蓝牙通信情况下,嵌入式终端在获取到固件信息查询请求中可以获取移动终端的蓝牙地址,然后以该蓝牙地址作为目的地址进行蓝牙数据发送。
嵌入式终端发送固件信息后,如果需要更新,移动终端将根据当前固件信息获取相应的更新包,并通过近距离通信方式反馈给嵌入式终端。
其中,更新包由移动终端经如下步骤从服务器获取,图2为一个实施例的移动终端从服务器获取更新包的方法示意图。
步骤S210:移动终端发送该固件信息给服务器。
移动终端通过远程通信方式发送该固件信息给服务器,远程通信方式可以为移动通信网络、互联网等等。
步骤S220:服务器根据该固件信息判断需更新到的固件版本。
服务器收到该固件信息后,根据固件信息中包含的固件版本信息,来判断是否需要更新。
步骤S230:服务器将对应固件版本的更新包发送给移动终端。
若不需要更新,则发送不需要更新的提示给移动终端;若需要更新,则将对应固件版本的更新包发送给移动终端。更新包为压缩包,需要解压才能得到里面的固件更新文件。
步骤S240:移动终端对该更新包进行解压和校验。
移动终端收到该更新包后,首先对该更新包进行校验,然后再解压,再对解压后得到的更新文件进行校验。校验是对文件的完整性进行校验,可以是HASH校验,例如MD5校验。
具体步骤如下:对该更新包进行HASH校验;对该更新包进行解压得到更新文件;对该更新文件进行HASH校验。其中的HASH校验为MD5校验。
校验通过后,移动终端通过近距离通信方式将更新包发送给嵌入式终端,然后嵌入式终端再执行步骤S400。
步骤S300:对第一存储器进行固件更新。
在一些实施例中,嵌入式终端根据移动终端发送的更新包进行更新之前,为了保证从移动终端收到的更新包的数据正确和完整,还可以包括步骤:对该更新包进行数据校验。例如当近距离通信方式为蓝牙通信时,对收到的蓝牙数据形式的更新包进行CRC校验。
在一些实施例中,嵌入式终端根据移动终端发送的更新包进行更新之前,还可以包括步骤:使用第一存储器存储该更新包。存储该更新包,以使得在更新失败后可以重新进行更新。嵌入式终端在上一次更新时,也会存储上一次的更新包,以在上一次更新失败时重新进行更新;因此,当嵌入式终端存储今次的更新包时,可以将上一次的更新包进行删除,以节约嵌入式终端的存储空间。
在第一存储器的固件更新完成后,执行步骤S400。
步骤S400:重启系统,并在启动装载过程(BootLoader)中检测第一存储器的固件是否更新成功。
在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
BootLoader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。
因此,可以在重启系统的过程中,通过在BootLoader中检测第一存储器的固件是否更新成功,节约时间,提高固件更新效率。
若更新成功,则执行步骤S510:继续选用第一存储器正常启动系统,并按照预设的更新逻辑对其他存储器进行固件更新。
预设好更新逻辑,可以使得其他存储器有序进行更新,而不是一窝蜂进行更新,保证了更新的安全,避免系统崩溃的情况发生。
预设的更新逻辑可以是:当其他存储器只有一个时,更新该一个存储器;当其他存储器多于一个时,检测每个存储器的坏区数量,按照坏区数量从少到多更新该多于一个的存储器。存储器可能在使用时间久后,某些地方可能出现坏区,即坏簇。簇为文件存储管理的最小单位,类似于微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位“簇”。坏区越多,表明存储器的存储安全性越低,性能也越差,更新起来也越慢。因此,在更新时可以检测存储器的坏区数量,按照坏区数量从少到多更新存储器,可以使得更新时间较慢的存储器放在更新顺序的后面,以使得存储器快速完成更新。
由于更新会使得存储空间变动,坏区越多越影响更新后固件的稳定性。因此,当检测发现某个存储器坏区数量超过预设阈值时就不进行更新,即不更新坏区数量超过预设阈值的存储器,以免在更新固件后反而使得该存储器不能启动系统。
预设的更新逻辑也可以是:当其他存储器只有一个时,更新该一个存储器;当其他存储器多于一个时,检测每个存储器的系统临时文件数量,按照系统临时文件数量从少到多更新该多于一个的存储器。存储器可能在使用时间久后,出现大量的系统临时文件,即所谓的垃圾文件。垃圾文件越多,存储器更新起来也越慢。因此,在更新时可以检测存储器的系统临时文件数量,按照系统临时文件数量从少到多更新存储器,可以使得更新时间较慢的存储器放在更新顺序的后面,以使得存储器快速完成更新。
预设的更新逻辑可以是:当其他存储器只有一个时,更新该一个存储器;当其他存储器多于一个时,按照预设的顺序更新该多于一个的存储器。预设的顺序可以是为其他存储器预先设置的顺序,例如有三个其他存储器,则分别为这些存储器预先设置更新顺序。
预设的更新逻辑还可以是:当其他存储器只有一个时,不更新该一个存储器,保留原始版本固件;当其他存储器多于一个时,不更新其中一个存储器并保留原始版本固件,按照预设的顺序更新其余的存储器。该存储器保留原始版本固件,以使得在无法正常启动系统时可以使用该存储器进行系统启动。例如有三个其他存储器,则存储器可以分为第二存储器、第三存储器和第四存储器,不更新第二存储器并保留其原始版本固件,按照预设的顺序来更新第三存储器和第四存储器。
预设的更新逻辑可以是:当其他存储器只有一个时,更新该一个存储器;当其他存储器多于一个时,获取该多于一个的存储器的识别码,根据识别码的顺序来更新该多于一个的存储器。存储器的识别码可以是用来区分存储器的标识,例如有三个其他存储器,则存储器可以分为第二存储器、第三存储器和第四存储器,分别以F2、F3、F4为其识别码,从而可以根据识别码的顺序来更新。另外,存储器的识别码可以是存储器的唯一标识码,例如可以是其硬件编码、序列号等等,能够用于区分存储器即可。
预设的更新逻辑还可以是:当其他存储器只有一个时,不更新该一个存储器,保留原始版本固件;当其他存储器多于一个时,获取该多于一个的存储器的识别码,不更新其中一个存储器并保留原始版本固件,根据识别码的顺序来更新其余的存储器。例如有三个其他存储器,则存储器可以分为第二存储器、第三存储器和第四存储器,不更新第二存储器并保留其原始版本固件,根据识别码的顺序来更新第三存储器和第四存储器。例如当标识码是其硬件编码、序列号时,可以通过标识码最后两个数字来确定更新顺序。
在一些实施例中,按照预设的更新逻辑对其他存储器进行固件更新的步骤包括:
步骤1:按照预设的更新逻辑确定当前需要更新的存储器。例如根据上述的更新逻辑可以确定需要更新的存储器为第三存储器和第四存储器(第二存储器不更新以保留原始版本固件),而根据更新逻辑确定的更新顺序,确定当前需要更新的存储器为第三存储器。
步骤2:提取第一存储器的该更新包,并使用当前需要更新的存储器存储该更新包。例如,提取上述第一存储器的该更新包,并将该更新包复制到第三存储器并存储。
步骤3:使用当前需要更新的存储器存储的更新包对当前需要更新的存储器进行固件更新。例如,使用上述第三存储器中的更新包对第三存储器进行固件更新。
本实施例中,按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器保留原始版本固件。在嵌入式系统中,存在各种固件,例如Camera、WiFi、蓝牙等等固件,原始版本固件就是这些固件的初始出厂时候的版本固件,即相当于在至少一个预设的存储器保留一个初始出厂的嵌入式系统,以使得在无法正常启动系统时可以使用该初始出厂的嵌入式系统进行系统启动。
当然在一些实施例中,按照预设的更新逻辑对其他存储器进行固件更新时,可以在至少一个预设的存储器保留当前版本固件。
因此,在一些实施例中,如果其他存储器较多,可以同时在至少其中一个存储器保留保留原始版本固件,在至少另外一个存储器保留保留原始版本固件。即如果其他存储器多于一个,在按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器(第一预设存储器)保留原始版本固件,在至少一个预设的存储器(第二预设存储器)保留当前版本固件。
上面描述为第一存储器更新成功的情形,以下描述第一存储器更新失败的情形。
若(第一存储器)更新失败,则执行步骤S520:重新选用其他存储器正常启动系统。例如,当第一存储器更新失败,则重新选用第二存储器、第三存储器或第四存储器来正常启动系统。选择的逻辑可以和上述更新逻辑一样,在此不再赘述。
在一些实施例中,如果其他存储器较多,可以同时在至少其中一个存储器保留保留原始版本固件,在至少另外一个存储器保留保留原始版本固件。若(第一存储器)更新失败,则可以发出提示信息以供用户选择启动原始版本固件还是当前版本固件,并接收用户指令重新使用用户所选择版本对应的存储器正常启动系统。
图3为一个实施例的嵌入式终端的固件更新管理装置示意图。
本发明还提供一种嵌入式终端的固件更新管理装置,该嵌入式终端具有多于一个的非易失性存储器,每个非易失性存储器具有独立启动系统的功能,例如可擦可编程只读存储器(EPROM)、电可擦除只读存储器(EEPROM)和闪存(FLASH)。该装置包括:近距离通信模块100、校验模块200、更新模块300、系统启动模块400和检测模块500。
近距离通信模块100用于接收来自移动终端的固件信息查询请求,并验证固件信息查询请求中的移动终端唯一标识信息。
固件(firmware)一般存储于设备中的电可擦除只读存储器EEPROM或FLASH芯片中,一般可由用户通过特定的刷新程序进行更新的程序。一般来说,担任着一个数码产品最基础、最底层工作的软件才可以称之为固件,例如Camera、WiFi、蓝牙等等模块的固件,又比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System),在以前其实更多的专业人士叫它固件。
通常这些硬件内所保存的程序是无法被用户直接读出或修改的。在以前,一般情况下是没有必要对固件进行更新操作的,即使在固件内发现了严重的Bug也必须由专业人员带着写好程序的芯片把原来机器上的更换下来。早期固件芯片一般采用了ROM设计,它的Firmware代码是在生产过程中固化的,用任何手段都无法修改。随着技术的不断发展,修改固件以适应不断更新的硬件环境成了用户们的迫切要求,所以,可重复写入的可编程可擦除只读存储器EPROM、EEPROM和flash出现了。这些芯片是可以重复刷写的,让固件得以修改和更新。
固件信息可以包括嵌入式终端型号信息、固件的版本信息、固件更新时间信息等等,通常情况下固件信息只需要包括固件的版本信息即可。
近距离通信模块100通过近距离通信方式和移动终端建立连接。近距离通信方式包括蓝牙、UWB、NFC以及专用无线系统中至少一种。其中,UWB是一种无载波通信技术,利用纳秒至微微秒级的非正弦波窄脉冲传输数据。NFC是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC和智能控件工具间进行近距离无线通信技术。在本实施例中,近距离通信模块100通过蓝牙通信方式发送当前固件信息给移动终端,因此固件信息基于蓝牙协议的数据形式。
以蓝牙为例,近距离通信模块100已经预先和移动终端进行过蓝牙配对而形成通信接口。例如,近距离通信模块100和移动终端到了用户手中用户再将其蓝牙配对。经过一次蓝牙配对的嵌入式终端和移动终端,就相当于预建立了蓝牙信任通信接口,这样嵌入式终端和移动终端在下一次进行蓝牙连接时可以直接建立信任连接,不再进行蓝牙配对。
在本实施例中,嵌入式终端的更新模块300是被动进行更新,即需要在移动终端查询固件版本并发送更新包过来后才进行更新。当用户想为嵌入式终端进行更新更新时,可以使用移动终端的APP通过近距离通信方式向嵌入式终端发送固件信息查询请求,固件信息查询请求中包含有移动终端唯一标识信息。嵌入式终端接收来自移动终端的固件信息查询请求之后,嵌入式终端验证固件信息查询请求中的移动终端唯一标识信息(例如MAC地址、IMEI号、序列号等等)。以蓝牙为例,固件信息查询请求也是基于蓝牙协议的数据形式,当近距离通信模块100接收到固件信息查询请求后,验证固件信息查询请求中的移动终端唯一标识信息,然后进行蓝牙连接。
当然,在一些实施例中,嵌入式终端的更新是主动进行更新,即距离上一次更新的时间达到了一定时间(经过一个更新查询周期)后,通过主动连接移动终端进行查询,确定需要更新后才进行更新。在这种情况下,嵌入式终端还可以包括监测模块600,用于监测系统时间,当系统时间达到预设的更新时刻时,近距离通信模块100搜索预先已配对的移动终端并建立近距离通信连接。
上述的预设的更新时刻可以是嵌入式终端预先设定的,也可以为预先从移动终端获取的。
例如,嵌入式终端设定了一定的更新查询周期为三个月,则以某一次更新的时间为起点,当满三个月的时候,近距离通信模块100主动搜索预先已配对的移动终端,并在建立近距离通信连接后将当前固件信息发给移动终端以判断是否需要更新。
又例如,当移动终端的用户从服务器端获知已经发布对应所述嵌入式终端(例如型号)的更新信息,则可以主动与嵌入式终端进行连接,选择用户觉得适当的时间(更新时刻)发给嵌入式终端,以方便用户为更新预留足够的更新时间,毕竟更新过程可能较为漫长。
再回到本实施例中,嵌入式终端的更新是被动进行更新,嵌入式终端接收来自移动终端的固件信息查询请求后,近距离通信模块100通过近距离通信方式发送当前固件信息给移动终端,并接收移动终端反馈的与当前固件信息相对应的更新包。
近距离通信模块100接收到固件信息查询请求后,响应于该固件信息查询请求,将在本机存储的当前固件信息发送给移动终端。由于近距离通信模块100在固件信息查询请求中可以获取移动终端唯一标识信息(例如MAC地址、IMEI号、序列号等等),因此近距离通信模块100可以将在本机存储的当前固件信息发送给移动终端。例如,在近距离通信方式为蓝牙通信情况下,近距离通信模块100在获取到固件信息查询请求中可以获取移动终端的蓝牙地址,然后以该蓝牙地址作为目的地址进行蓝牙数据发送。
近距离通信模块100发送固件信息后,如果需要更新,移动终端将根据当前固件信息获取相应的更新包,并通过近距离通信方式反馈给嵌入式终端。
其中,更新包由移动终端经如下步骤从服务器获取,图2为一个实施例的移动终端从服务器获取更新包的方法示意图。
步骤S210:移动终端发送该固件信息给服务器。
移动终端通过远程通信方式发送该固件信息给服务器,远程通信方式可以为移动通信网络、互联网等等。
步骤S220:服务器根据该固件信息判断需更新到的固件版本。
服务器收到该固件信息后,根据固件信息中包含的固件版本信息,来判断是否需要更新。
步骤S230:服务器将对应固件版本的更新包发送给移动终端。
若不需要更新,则发送不需要更新的提示给移动终端;若需要更新,则将对应固件版本的更新包发送给移动终端。更新包为压缩包,需要解压才能得到里面的固件更新文件。
步骤S240:移动终端对该更新包进行解压和校验。
移动终端收到该更新包后,首先对该更新包进行校验,然后再解压,再对解压后得到的更新文件进行校验。校验是对文件的完整性进行校验,可以是HASH校验,例如MD5校验。
具体步骤如下:对该更新包进行HASH校验;对该更新包进行解压得到更新文件;对该更新文件进行HASH校验。其中的HASH校验为MD5校验。
校验通过后,移动终端通过近距离通信方式将更新包发送给嵌入式终端,然后嵌入式终端的更新模块300再对第一存储器进行固件更新。
在一些实施例中,嵌入式终端还包括校验模块200,更新模块300根据移动终端发送的更新包进行更新之前,为了保证从移动终端收到的更新包的数据正确和完整,校验模块200还对该更新包进行数据校验。例如当近距离通信方式为蓝牙通信时,对收到的蓝牙数据形式的更新包进行CRC校验。
在一些实施例中,嵌入式终端根据移动终端发送的更新包进行更新之前,更新模块300还使用第一存储器存储该更新包。存储该更新包,以使得在更新失败后可以重新进行更新。更新模块300在上一次更新时,也会存储上一次的更新包,以在上一次更新失败时重新进行更新;因此,当嵌入式终端存储今次的更新包时,可以将上一次的更新包进行删除,以节约嵌入式终端(第一存储器)的存储空间。
在第一存储器的固件更新完成后,系统启动模块400重启系统,检测模块500在启动装载过程(BootLoader)中检测第一存储器的固件是否更新成功。
在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
BootLoader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。
因此,可以在重启系统的过程中,通过在BootLoader中检测第一存储器的固件是否更新成功,节约时间,提高固件更新效率。
若更新成功,则系统启动模块400继续选用第一存储器正常启动系统,更新模块300按照预设的更新逻辑对其他存储器进行固件更新。
预设好更新逻辑,可以使得其他存储器有序进行更新,而不是一窝蜂进行更新,保证了更新的安全,避免系统崩溃的情况发生。
预设的更新逻辑可以是:当其他存储器只有一个时,更新该一个存储器;当其他存储器多于一个时,检测每个存储器的坏区数量,按照坏区数量从少到多更新该多于一个的存储器。存储器可能在使用时间久后,某些地方可能出现坏区,即坏簇。簇为文件存储管理的最小单位,类似于微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位“簇”。坏区越多,表明存储器的存储安全性越低,性能也越差,更新起来也越慢。因此,在更新时可以检测存储器的坏区数量,按照坏区数量从少到多更新存储器,可以使得更新时间较慢的存储器放在更新顺序的后面,以使得存储器快速完成更新。
由于更新会使得存储空间变动,坏区越多越影响更新后固件的稳定性。因此,当检测发现某个存储器坏区数量超过预设阈值时就不进行更新,即不更新坏区数量超过预设阈值的存储器,以免在更新固件后反而使得该存储器不能启动系统。
预设的更新逻辑也可以是:当其他存储器只有一个时,更新该一个存储器;当其他存储器多于一个时,检测每个存储器的系统临时文件数量,按照系统临时文件数量从少到多更新该多于一个的存储器。存储器可能在使用时间久后,出现大量的系统临时文件,即所谓的垃圾文件。垃圾文件越多,存储器更新起来也越慢。因此,在更新时可以检测存储器的系统临时文件数量,按照系统临时文件数量从少到多更新存储器,可以使得更新时间较慢的存储器放在更新顺序的后面,以使得存储器快速完成更新。
预设的更新逻辑可以是:当其他存储器只有一个时,更新该一个存储器;当其他存储器多于一个时,按照预设的顺序更新该多于一个的存储器。预设的顺序可以是为其他存储器预先设置的顺序,例如有三个其他存储器,则分别为这些存储器预先设置更新顺序。
预设的更新逻辑还可以是:当其他存储器只有一个时,不更新该一个存储器,保留原始版本固件;当其他存储器多于一个时,不更新其中一个存储器并保留原始版本固件,按照预设的顺序更新其余的存储器。该存储器保留原始版本固件,以使得在无法正常启动系统时可以使用该存储器进行系统启动。例如有三个其他存储器,则存储器可以分为第二存储器、第三存储器和第四存储器,不更新第二存储器并保留其原始版本固件,按照预设的顺序来更新第三存储器和第四存储器。
预设的更新逻辑可以是:当其他存储器只有一个时,更新该一个存储器;当其他存储器多于一个时,获取该多于一个的存储器的识别码,根据识别码的顺序来更新该多于一个的存储器。存储器的识别码可以是用来区分存储器的标识,例如有三个其他存储器,则存储器可以分为第二存储器、第三存储器和第四存储器,分别以F2、F3、F4为其识别码,从而可以根据识别码的顺序来更新。另外,存储器的识别码可以是存储器的唯一标识码,例如可以是其硬件编码、序列号等等,能够用于区分存储器即可。
预设的更新逻辑还可以是:当其他存储器只有一个时,不更新该一个存储器,保留原始版本固件;当其他存储器多于一个时,获取该多于一个的存储器的识别码,不更新其中一个存储器并保留原始版本固件,根据识别码的顺序来更新其余的存储器。例如有三个其他存储器,则存储器可以分为第二存储器、第三存储器和第四存储器,不更新第二存储器并保留其原始版本固件,根据识别码的顺序来更新第三存储器和第四存储器。例如当标识码是其硬件编码、序列号时,可以通过标识码最后两个数字来确定更新顺序。
在一些实施例中,更新模块300按照预设的更新逻辑对其他存储器进行固件更新的步骤包括:
步骤1:按照预设的更新逻辑确定当前需要更新的存储器。例如根据上述的更新逻辑可以确定需要更新的存储器为第三存储器和第四存储器(第二存储器不更新以保留原始版本固件),而根据更新逻辑确定的更新顺序,确定当前需要更新的存储器为第三存储器。
步骤2:提取第一存储器的该更新包,并使用当前需要更新的存储器存储该更新包。例如,提取上述第一存储器的该更新包,并将该更新包复制到第三存储器并存储。
步骤3:使用当前需要更新的存储器存储的更新包对当前需要更新的存储器进行固件更新。例如,使用上述第三存储器中的更新包对第三存储器进行固件更新。
本实施例中,按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器保留原始版本固件。在嵌入式系统中,存在各种固件,例如Camera、WiFi、蓝牙等等固件,原始版本固件就是这些固件的初始出厂时候的版本固件,即相当于在至少一个预设的存储器保留一个初始出厂的嵌入式系统,以使得在无法正常启动系统时可以使用该初始出厂的嵌入式系统进行系统启动。
当然在一些实施例中,更新模块300按照预设的更新逻辑对其他存储器进行固件更新时,可以在至少一个预设的存储器保留当前版本固件。
因此,在一些实施例中,如果其他存储器较多,可以同时在至少其中一个存储器保留保留原始版本固件,在至少另外一个存储器保留保留原始版本固件。即如果其他存储器多于一个,在按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器(第一预设存储器)保留原始版本固件,在至少一个预设的存储器(第二预设存储器)保留当前版本固件。
上面描述为第一存储器更新成功的情形,以下描述第一存储器更新失败的情形。
若(第一存储器)更新失败,则系统启动模块400重新选用其他存储器正常启动系统。例如,当第一存储器更新失败,则重新选用第二存储器、第三存储器或第四存储器来正常启动系统。选择的逻辑可以和上述更新逻辑一样,在此不再赘述。
在一些实施例中,还包括交互模块700。如果其他存储器较多,可以同时在至少其中一个存储器保留保留原始版本固件,在至少另外一个存储器保留保留原始版本固件。若(第一存储器)更新失败,则交互模块700可以发出提示信息以供用户选择启动原始版本固件还是当前版本固件,并接收用户指令,系统启动模块400根据用户指令重新使用用户所选择版本对应的存储器正常启动系统。
上述的嵌入式终端的固件更新管理方法和装置,所述嵌入式终端具有多于一个的非易失性存储器,每个非易失性存储器具有独立启动系统的功能;对第一存储器进行固件更新;在第一存储器的固件更新完成后,重启系统,并在启动装载过程中检测第一存储器的固件是否更新成功;若更新成功,则继续选用第一存储器正常启动系统,并按照预设的更新逻辑对其他存储器进行固件更新;若更新失败,则重新选用其他存储器正常启动系统。
由于嵌入式终端具有多于一个的非易失性存储器,每个非易失性存储器具有独立启动系统的功能,当第一存储器(例如主存储器)因为更新失败无法启动系统后,可以选择其他存储器启动系统,避免了固件更新失败无法正常启动系统的情况,提高了固件更新的安全性。
更新完成并重启后,在启动装载过程中就检测固件是否更新成功,并根据更新结果来决定是继续使用第一存储器启动系统还是切换到其他存储器启动系统,节约时间且自动进行,可以提高固件更新效率。
嵌入式终端可以通过近距离通信方式发送当前固件信息给移动终端,接收移动终端反馈的与当前固件信息相对应的更新包,然后嵌入式终端根据移动终端发送的更新包进行更新,无需外部存储器,只需通过近距离无线通信方式就能从移动终端获取更新包并进行更新,提高了更新效率。嵌入式终端还会对更新包进行数据校验,数据校验成功后才进行更新,提高了更新的安全性。
应该理解的是,虽然图1、2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图1、2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种嵌入式终端的固件更新管理方法,其特征在于,所述嵌入式终端具有多于一个的非易失性存储器,每个非易失性存储器具有独立启动系统的功能,所述方法包括如下步骤:
对第一存储器进行固件更新;
在第一存储器的固件更新完成后,重启系统,并在启动装载过程中检测第一存储器的固件是否更新成功;
若更新成功,则继续选用第一存储器正常启动系统,并按照预设的更新逻辑对其他存储器进行固件更新;若更新失败,则重新选用其他存储器正常启动系统。
2.根据权利要求1所述的方法,其特征在于:
按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器保留原始版本固件。
3.根据权利要求1所述的方法,其特征在于:
按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器保留当前版本固件。
4.根据权利要求1所述的方法,其特征在于:
其他存储器多于一个;按照预设的更新逻辑对其他存储器进行固件更新时,在至少一个预设的存储器保留原始版本固件,在至少一个预设的存储器保留当前版本固件。
5.根据权利要求4所述的方法,其特征在于:
若更新失败,则发出提示信息以供用户选择启动原始版本固件还是当前版本固件,并接收用户指令重新使用用户所选择版本对应的存储器正常启动系统。
6.根据权利要求1所述的方法,其特征在于,所述预设的更新逻辑包括:
当其他存储器只有一个时,更新该一个存储器;
当其他存储器多于一个时,检测每个存储器的坏区数量,按照坏区数量从少到多更新该多于一个的存储器。
7.根据权利要求6所述的方法,其特征在于,不更新坏区数量超过预设阈值的存储器。
8.根据权利要求1所述的方法,其特征在于,所述预设的更新逻辑包括:
当其他存储器只有一个时,更新该一个存储器;
当其他存储器多于一个时,检测每个存储器的系统临时文件数量,按照系统临时文件数量从少到多更新该多于一个的存储器。
9.根据权利要求1所述的方法,其特征在于,所述预设的更新逻辑包括:
当其他存储器只有一个时,更新该一个存储器;
当其他存储器多于一个时,按照预设的顺序更新该多于一个的存储器。
10.一种嵌入式终端的固件更新管理装置,其特征在于,所述嵌入式终端具有多于一个的非易失性存储器,每个非易失性存储器具有独立启动系统的功能,所述装置包括:更新模块、系统启动模块和检测模块;
所述更新模块用于对第一存储器进行固件更新;
在第一存储器的固件更新完成后,所述系统启动模块用于重启系统,所述检测模块用于在启动装载过程中检测第一存储器的固件是否更新成功;
若更新成功,则所述系统启动模块用于继续选用第一存储器正常启动系统,所述更新模块用于按照预设的更新逻辑对其他存储器进行固件更新;若更新失败,则所述系统启动模块用于重新选用其他存储器正常启动系统。
CN201610320501.7A 2016-05-16 2016-05-16 嵌入式终端的固件更新管理方法和装置 Expired - Fee Related CN106020875B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610320501.7A CN106020875B (zh) 2016-05-16 2016-05-16 嵌入式终端的固件更新管理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610320501.7A CN106020875B (zh) 2016-05-16 2016-05-16 嵌入式终端的固件更新管理方法和装置

Publications (2)

Publication Number Publication Date
CN106020875A true CN106020875A (zh) 2016-10-12
CN106020875B CN106020875B (zh) 2020-09-04

Family

ID=57097172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610320501.7A Expired - Fee Related CN106020875B (zh) 2016-05-16 2016-05-16 嵌入式终端的固件更新管理方法和装置

Country Status (1)

Country Link
CN (1) CN106020875B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315616A (zh) * 2017-06-30 2017-11-03 郑州云海信息技术有限公司 一种固件的加载方法、装置及电子设备
CN108459879A (zh) * 2018-01-17 2018-08-28 宇龙计算机通信科技(深圳)有限公司 一种防止终端死机的方法、终端
CN108615545A (zh) * 2016-12-09 2018-10-02 北京京存技术有限公司 Emmc调试方法和emmc
CN108958765A (zh) * 2018-06-12 2018-12-07 新华三技术有限公司 升级光模块固件的方法及装置
CN110047586A (zh) * 2019-04-16 2019-07-23 北京品驰医疗设备有限公司 植入医疗控制设备及其固件界面更新方法和系统
CN111209059A (zh) * 2020-01-14 2020-05-29 中国北方车辆研究所 一种嵌入式软件多版本控制系统及方法
CN107168750B (zh) * 2017-06-08 2021-03-12 苏州浪潮智能科技有限公司 一种固件升级保护方法及系统
CN113626065A (zh) * 2021-08-12 2021-11-09 深圳市蝶通视讯有限公司 一种嵌入式固件冗余方法及装置
CN114090095A (zh) * 2022-01-19 2022-02-25 苏州浪潮智能科技有限公司 一种多路服务器中cpu的bios加载方法及相关组件

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1658701A (zh) * 2004-02-20 2005-08-24 日本电气株式会社 无线通信系统及系统中无线通信终端台的固件更新方法
CN101924607A (zh) * 2010-08-27 2010-12-22 华为终端有限公司 基于固件空中传输技术的固件处理方法、装置及系统
CN104572229A (zh) * 2015-02-12 2015-04-29 西安诺瓦电子科技有限公司 嵌入式系统的固件升级方法以及固件升级装置
CN105094927A (zh) * 2015-08-28 2015-11-25 东方网力科技股份有限公司 一种设备固件升级方法和装置
CN105204911A (zh) * 2015-10-15 2015-12-30 成都艾克尔特医疗科技有限公司 一种生命体征监护手环的固件升级方法及系统
US20160036956A1 (en) * 2014-07-30 2016-02-04 Google Technology Holdings LLC Contextually updating wireless device firmware

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1658701A (zh) * 2004-02-20 2005-08-24 日本电气株式会社 无线通信系统及系统中无线通信终端台的固件更新方法
CN101924607A (zh) * 2010-08-27 2010-12-22 华为终端有限公司 基于固件空中传输技术的固件处理方法、装置及系统
US20160036956A1 (en) * 2014-07-30 2016-02-04 Google Technology Holdings LLC Contextually updating wireless device firmware
CN104572229A (zh) * 2015-02-12 2015-04-29 西安诺瓦电子科技有限公司 嵌入式系统的固件升级方法以及固件升级装置
CN105094927A (zh) * 2015-08-28 2015-11-25 东方网力科技股份有限公司 一种设备固件升级方法和装置
CN105204911A (zh) * 2015-10-15 2015-12-30 成都艾克尔特医疗科技有限公司 一种生命体征监护手环的固件升级方法及系统

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108615545A (zh) * 2016-12-09 2018-10-02 北京京存技术有限公司 Emmc调试方法和emmc
CN107168750B (zh) * 2017-06-08 2021-03-12 苏州浪潮智能科技有限公司 一种固件升级保护方法及系统
CN107315616B (zh) * 2017-06-30 2020-08-21 苏州浪潮智能科技有限公司 一种固件的加载方法、装置及电子设备
CN107315616A (zh) * 2017-06-30 2017-11-03 郑州云海信息技术有限公司 一种固件的加载方法、装置及电子设备
CN108459879A (zh) * 2018-01-17 2018-08-28 宇龙计算机通信科技(深圳)有限公司 一种防止终端死机的方法、终端
CN108459879B (zh) * 2018-01-17 2021-08-17 宇龙计算机通信科技(深圳)有限公司 一种防止终端死机的方法、终端
CN108958765A (zh) * 2018-06-12 2018-12-07 新华三技术有限公司 升级光模块固件的方法及装置
CN110047586A (zh) * 2019-04-16 2019-07-23 北京品驰医疗设备有限公司 植入医疗控制设备及其固件界面更新方法和系统
CN111209059A (zh) * 2020-01-14 2020-05-29 中国北方车辆研究所 一种嵌入式软件多版本控制系统及方法
CN111209059B (zh) * 2020-01-14 2023-03-03 中国北方车辆研究所 一种嵌入式软件多版本控制系统及方法
CN113626065A (zh) * 2021-08-12 2021-11-09 深圳市蝶通视讯有限公司 一种嵌入式固件冗余方法及装置
CN113626065B (zh) * 2021-08-12 2024-04-19 深圳市蝶通视讯有限公司 一种嵌入式固件冗余方法及装置
CN114090095A (zh) * 2022-01-19 2022-02-25 苏州浪潮智能科技有限公司 一种多路服务器中cpu的bios加载方法及相关组件

Also Published As

Publication number Publication date
CN106020875B (zh) 2020-09-04

Similar Documents

Publication Publication Date Title
CN106020875A (zh) 嵌入式终端的固件更新管理方法和装置
CN102129375B (zh) 一种移动终端系统升级的方法和设备
CN106681766B (zh) 远程固件升级控制方法及系统
CN103942061A (zh) 电池固件更新方法、便携式电子装置及充电电池模块
US20090119659A1 (en) Method of Computer Based Data Card Software Downloading and Updating
CN110750292A (zh) 一种基于NB-IoT的终端远程自动更新系统
KR101697979B1 (ko) 네트워크로 연결 가능한 기기에서 데이터를 동기화하기 위한 장치 및 방법
US20160085538A1 (en) Over-the-air updates for ble devices
CN107608705A (zh) 一种无线wifi视频设备及其固件升级方法
CN103384369A (zh) 一种建立数据连接的方法、装置及系统
CN100465890C (zh) 用于将rom镜像下载到无线终端的系统和方法
CN109656597A (zh) 固件升级方法、装置及计算机可读存储介质
US20110176456A1 (en) Connection setting apparatus, connection setting method, and computer program product
CN102915249A (zh) 远程地实现固件升级的方法和装置
CN101834888A (zh) 一种通过无线局域网远程启动透明计算系统客户端的方法
CN104168309A (zh) 基于云服务的数据备份与操作方法
CN107454129A (zh) 固件升级方法、装置和系统
CN103810004A (zh) 嵌入式系统升级的方法、装置及设备
CN102946600A (zh) 一种移动终端参数固件升级方法及系统
CN105912419A (zh) 应用程序备份方法及装置
CN103744699A (zh) 一种智能电器设备软件升级的方法及其装置
CN110417871A (zh) 一种智能设备升级方法
CN107656751A (zh) 用户程序升级方法及装置
CN106161082A (zh) 服务器uuid的设置方法、系统及基板管理控制器
CN104980886A (zh) 一种软件升级的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200904