CN107194242B - 固件升级方法和装置 - Google Patents

固件升级方法和装置 Download PDF

Info

Publication number
CN107194242B
CN107194242B CN201710203654.8A CN201710203654A CN107194242B CN 107194242 B CN107194242 B CN 107194242B CN 201710203654 A CN201710203654 A CN 201710203654A CN 107194242 B CN107194242 B CN 107194242B
Authority
CN
China
Prior art keywords
firmware upgrade
firmware
default
upgrade file
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710203654.8A
Other languages
English (en)
Other versions
CN107194242A (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.)
PAX Computer Technology Shenzhen Co Ltd
Original Assignee
PAX Computer Technology Shenzhen 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 PAX Computer Technology Shenzhen Co Ltd filed Critical PAX Computer Technology Shenzhen Co Ltd
Priority to CN201710203654.8A priority Critical patent/CN107194242B/zh
Priority to PCT/CN2017/099741 priority patent/WO2018176733A1/zh
Priority to US16/348,710 priority patent/US20190278583A1/en
Publication of CN107194242A publication Critical patent/CN107194242A/zh
Application granted granted Critical
Publication of CN107194242B publication Critical patent/CN107194242B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

本发明涉及一种固件升级方法和固件升级装置。所述方法包括:读取预设固件升级文件,并将所述预设固件升级文件映射至内存中;获取所述预设固件升级文件的函数入口地址;根据所述函数入口地址从所述内存中的预设固件升级文件获取固件升级数据;按照所述预设固件升级文件中的与所述固件升级数据对应的预存固件升级协议,将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中。采用该方法,可以实现固件的个性化升级,提高了固件升级的便利性。

Description

固件升级方法和装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种固件升级方法和装置。
背景技术
固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,如POS(Point Of Sale)终端的固件有WiFi模块驱动程序、磁卡感应模块驱动程序等。传统的固件升级方法是将固件升级功能集成到操作系统中,与操作系统一起完成升级。
然而,传统的这种固件升级方法使得用户无法自主选择单个固件的升级,同时频繁的升级操作系统,给用户带来不便。
发明内容
本发明实施例提供了一种固件升级方法和装置,可以实现固件的个性化升级,提高了固件升级的便利性。
一种固件升级方法,所述方法包括:
读取预设固件升级文件,并将所述预设固件升级文件映射至内存中;
获取所述预设固件升级文件的函数入口地址;
根据所述函数入口地址从所述内存中的预设固件升级文件获取固件升级数据;
按照所述预设固件升级文件中的与所述固件升级数据对应的预存固件升级协议,将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中。
在其中一个实施例中,在所述将所述预设固件升级文件映射至内存中之前,还包括:验证所述预设固件升级文件的安全性;若所述预设固件升级文件验证为安全,则进入将所述预设固件升级文件映射至内存中的步骤。
在其中一个实施例中,所述验证所述预设固件升级文件的安全性,包括:获取所述预设固件升级文件的数字签名;利用预存的秘钥算法对获取的数字签名进行解密,得到预设固件升级文件的第一消息摘要;根据消息摘要算法计算出预设固件升级文件的第二消息摘要;将所述第一消息摘要与所述第二消息摘要进行对比,若所述第一消息摘要与所述第二消息摘要对比一致,则所述预设固件升级文件验证为安全,否则,所述预设固件升级文件验证为不安全。
在其中一个实施例中,所述根据所述函数入口地址从所述内存中的预设固件升级文件获取固件升级数据,包括:获取与所述预设固件升级文件对应的固件模块的型号;根据所述函数入口地址从所述内存中的预设固件升级文件获取与所述固件模块的型号对应的固件升级数据。
在其中一个实施例中,所述按照所述预设固件升级文件中的与所述固件升级数据对应的预存固件升级协议,将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中,包括:获取固件接口函数表的起始地址和结束地址;根据所述固件接口函数表的起始地址和结束地址遍历固件接口函数表,分别获取与所述固件升级数据对应的读函数的第一存储地止和写函数的第二存储地址;按照所述预设固件升级文件中的与固件升级数据对应的预存固件升级协议的读写顺序,根据第一存储地址调用读函数,以使读函数从与所述预设固件升级文件对应的固件模块中读取所述预存固件升级协议中的读数据,根据所述第二存储地址调用写入函数,以使所述写函数将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中。
一种固件升级装置,所述装置包括:
升级文件读取模块,用于读取预设固件升级文件;
升级文件映射模块,用于将所述预设固件升级文件映射至内存中;
函数入口地址获取模块,用于获取所述预设固件升级文件的函数入口地址;
升级数据获取模块,用于根据所述函数入口地址从所述内存中的预设固件升级文件获取固件升级数据;
升级数据写入模块,用于按照所述预设固件升级文件中的与所述固件升级数据对应的预存固件升级协议,将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中。
在其中一个实施例中,所述装置还包括:安全验证模块,用于验证所述预设固件升级文件的安全性;所述升级文件映射模块用于若所述预设固件升级文件验证为安全,则进入将所述预设固件升级文件映射至内存中的步骤。
在其中一个实施例中,所述安全验证模块用于获取所述预设固件升级文件的数字签名;利用预存的秘钥算法对获取的数字签名进行解密,得到所述预设固件升级文件的第一消息摘要;根据消息摘要算法计算出所述预设固件升级文件的第二消息摘要;将所述第一消息摘要与所述第二消息摘要进行对比,若所述第一消息摘要与所述第二消息摘要对比一致,则所述预设固件升级文件验证为安全,否则,所述预设固件升级文件验证为不安全。
在其中一个实施例中,所述升级数据获取模块用于获取与所述预设固件升级文件对应的固件模块的型号;根据所述函数入口地址从所述内存中的预设固件升级文件获取与所述固件模块的型号对应的固件升级数据。
在其中一个实施例中,所述升级数据写入模块用于获取固件接口函数表的起始地址和结束地址;根据所述固件接口函数表的起始地址和结束地址遍历固件接口函数表,分别获取与所述固件升级数据对应的读函数的第一存储地止和写函数的第二存储地址;按照所述预设固件升级文件中的与所述固件升级数据对应的预存固件升级协议的读写顺序,根据第一存储地址调用读函数,以使读函数从与预设固件升级文件对应的固件模块中读取所述预存固件升级协议中的读数据,根据所述第二存储地址调用写函数,以使所述写函数将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中。
上述固件升级方法和装置,通过读取预设固件升级文件,并将预设固件升级文件映射至内存中,获取预设固件升级文件的函数入口地址,根据函数入口地址从内存中的预设固件升级文件获取固件升级数据,再按照预设固件升级文件中的与所述固件升级数据对应的预存固件升级协议,将固件升级数据写入到与预设固件升级文件对应的固件模块中。由于预设固件升级文件中存储有固件升级函数的入口地址,终端操作系统通过该入口地址调用预设固件升级文件中的固件升级函数,获取固件升级函数中的固件升级数据,再将固件升级数据写入到与预设固件升级文件对应的固件模块中,使得固件的升级不再依附于操作系统的升级,实现了固件的单独升级,同时减少了传统固件升级方法中因固件升级连带操作系统的频繁升级,提高了固件升级的便利性。
附图说明
图1为一个实施例中终端的内部结构图;
图2为一个实施例中固件升级方法的流程图;
图3为一个实施例中的预设固件升级文件的安全性验证方法的流程图;
图4为一个实施例中的图2的固件升级数据获取方法的流程图;
图5为一个实施例中的图2的固件升级数据写入方法的流程图;
图6为另一个实施例中的固件升级方法的流程图;
图7为一个实施例中的固件升级装置的结构框图;
图8为另一个实施例中的固件升级装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中终端的结构示意图。如图1所示,该终端包括通过系统总线连接的处理器、非易失性存储介质、内存储器、数据传输接口、显示屏和输入装置。其中,终端的非易失性存储介质存储有操作系统和计算机可读指令,该计算机可读指令被处理器执行以实现一种固件升级方法。该处理器用于提供计算和控制能力,支撑整个终端的运行。数据传输接口用于与其它移动存储设备进行通信。终端的显示屏可以是液晶显示屏或者电子墨水显示屏等,输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键等。在本实施例中,该终端是POS终端(POS,Point Of Sale)。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体地终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,如图2所示,提供一种固件升级方法,该方法以应用于如图1所示的终端进行举例说明,包括:
步骤202,读取预设固件升级文件,并将预设固件升级文件映射至内存中。
其中,预设固件升级文件是预先编译的具有特定类型的可执行文件。由于可执行文件通常是存储在硬盘或者Nand Flash等存储介质中,计算机是不能直接在这些存储介质中运行可执行文件,所以需要将可执行文件映射到内存中才可以运行。
具体地,读取预设固件升级文件,并将预设固件升级文件映射至内存中的过程包括:在终端操作系统中读取与预设固件升级文件的文件类型相同的文件;若读取结果不为空,则判断读取到的文件是否有效,若读取到的文件有效,则解析读取的文件的文件头得到映射地址,再根据该映射地址映射到内存中。其中,文件类型可通过文件扩展名来确定;文件的有效与否可通过对比文件头中存储的文件标识的对应值与预存文件标识有效值来确定,若文件头中的文件标识的对应值与预存文件标识有效值对比一致,则文件有效,否则文件无效;也可通过对比文件头中存储的文件名称与根据文件类型读取的文件名称来确定,若文件头中存储的文件名称与根据文件类型读取的文件名称对比一致,则文件有效,否则文件无效。
步骤204,获取预设固件升级文件的函数入口地址。
函数入口地址是函数的存储地址。本实施例中,预设固件升级文件的函数入口地址是预设固件升级文件中的固件升级函数的存储地址。预设固件升级文件的文件头中含有固件升级程序的函数入口地址,因此,解析预设固件升级文件的文件头便可获得函数入口地址。
步骤206,根据函数入口地址从内存中的预设固件升级文件获取固件升级数据。
具体地,终端操作系统首先获取与预设固件升级文件相对应的固件模块的信息,包括固件模块的型号、与固件模块的型号相对应的固件当前版本号,再根据步骤204获取到的函数入口地址调用内存中的预设固件升级文件中的预设固件升级函数,以上述固件模块信息作为函数参数传递给预设固件升级函数,以使预设固件升级函数将接收到的与固件模块的型号相对应的固件当前版本号与预存固件版本号(即预设固件升级文件的升级版本号)进行比较,若接收到的与固件模块的型号相对应的固件当前版本号大于预存固件版本号,则终端操作系统获取固件升级函数中与固件模块型号相对应的固件升级数据。
需要说明的是,本实施例中是通过比较固件的版本号来确定固件的升级与否,在其他实施例中,可以通过比较固件升级文件的生成时间来确定固件的升级与否。
步骤208,按照预设固件升级文件中的与固件升级数据对应的预存固件升级协议,将固件升级数据写入到与预设固件升级文件对应的固件模块中。
预存固件升级协议是预先存储在预设固件升级文件中的用于固件模块和终端CPU进行通信的规则和约定。预存固件升级协议包括握手协议和通信协议,握手协议用于固件模块和终端操作系统提供的CPU进行通信前的建立连接,通信协议用于固件模块和终端操作系统提供的CPU进行通信的数据交互。
具体地,在终端操作系统获取到与固件模块型号相对应的固件升级数据后,先按照握手协议建立终端操作系统提供的CPU和固件模块之间的通信连接,再按照通信协议的数据交互顺序,将该固件升级数据写入到与之对应的固件升级模块中,以完成固件的升级。
本实施例中,由于预设固件升级文件中存储有固件升级函数的入口地址,终端操作系统通过该入口地址调用预设固件升级文件中的固件升级函数,获取固件升级函数中的固件升级数据,再按照预设固件升级文件中的与固件升级数据对应的预存固件升级协议,将固件升级数据写入到与预设固件升级文件对应的固件模块中,使得固件的升级不再依附于操作系统的升级,实现了固件的单独升级,同时减少了传统固件升级方法中因固件升级连带操作系统的频繁升级,提高了固件升级的便利性。此外,通过固件升级函数的入口地址直接调用固件升级函数,避免了传统的地址映射寻址代码的运行,提高了固件升级方法的执行效率。
在一个实施例中,在将预设固件升级文件映射至内存中的步骤之前,还包括:验证预设固件升级文件的安全性;若预设固件升级文件验证为安全,则进入将预设固件升级文件映射至内存中的步骤。本实施例中,通过对预设固件升级文件增加安全性验证的步骤,保证了固件升级数据的安全性。
在一个实施例中,如图3所示,上述验证预设固件升级文件的安全性的步骤,包括:
步骤302,获取预设固件升级文件的数字签名。
数字签名是附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造。
本实施例中,预设固件升级文件的数字签名是预设固件升级文件中的最后256字节,因此,读取预设固件升级文件的最后256字节的字符串便可。
步骤304,利用预存秘钥算法对获取的数字签名进行解密,得到预设固件升级文件的第一消息摘要。
预存秘钥算法是预先存储在终端系统的用来加密或解密的算法;消息摘要(Message Digest)又称作数字摘要(Digital Digest),它是唯一对应一个消息或文本的固定长度的值。消息摘要采用单向Hash函数将需要加密的明文摘要成一串128比特的密文,这串密文也称为数字指纹(Finger Print),它有固定的长度,且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。本实施例中,在获取了预设固件升级文件的数字签名后,利用预存在当前系统中的秘钥算法(如RSA算法)解密获取到的数字签名得到第一消息摘要。
步骤306,根据消息摘要算法计算出预设固件升级文件的第二消息摘要。
消息摘要算法又称哈希算法,是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能。消息摘要算法可以是循环冗余校验算法(Cyclic Redundancy Check,CRC,包括CRC8、CRC16和CRC32)、安全哈希算法(Secure Hash Algorithm,SHA,包括SHA1、SHA256、SHA384、SHA512)或是消息摘要算法(Message Digest Algorithm,包括MD2、MD4、MD5)等。
具体地,将预设固件升级文件中的明文消息通过消息摘要算法转变成固定长度的哈希值,即为第二消息摘要。
步骤308,将第一消息摘要与第二消息摘要对比,若第一消息摘要与第二消息摘要对比一致,则预设固件升级文件验证为安全,否则,预设固件升级文件验证为不安全。
本实施例中,通过将对预设固件升级文件的数字签名使用预存秘钥算法进行解密得到的消息摘要与对预设固件升级文件中的明文信息使用消息摘要算法进行转变得到的消息摘要进行对比,从而验证预设固件升级文件的安全性。
在一个实施例中,如图4所示,上述步骤206,包括:
步骤216,获取与预设固件升级文件对应的固件模块的型号。
本实施例中,预设固件升级文件中存有多个固件模块型号的固件升级数据,如型号为8188ETV,8188EUS,8189ETV和8723BU的WiFi固件模块对应的升级数据。
步骤226,根据函数入口地址从内存中的预设固件升级文件获取与固件模块的型号对应的固件升级数据。
具体的,终端操作系统根据预设固件升级文件的函数入口地址调用内存中的预设固件升级文件中的固件升级函数,并将与预设固件升级文件对应的固件模块的型号作为函数参数传递至该固件升级函数,以使终端操作系统获取预设固件升级函数中的与固件模块型号相对应的固件升级数据。
本实施例中,终端操作系统获取预设固件升级函数中的与固件模块型号相对应的固件升级数据,使得同一个预设固件升级文件支持多型号的固件升级。
在一个实施例中,如图5所示,上述步骤208,包括:
步骤218,获取固件接口函数表的起始地址和结束地址。
固件接口函数表是存储在操作系统程序的与终端中的固件模块进行通信的接口函数以及接口函数存储地址的映射表。与。本实施例中,终端操作系统通过获取固件接口函数表存储的起始地址和结束地址确定函数表的位置。
步骤228,根据固件接口函数表的起始地址和结束地址遍历固件接口函数表,分别获取与固件升级数据对应的读函数的第一存储地址和写函数的第二存储地址。
本实施例中,读函数是从与固件升级数据对应的固件模块中读取升级所需数据,写函数是将固件升级数据写入到与之对应的固件模块中的函数。例如WiFiRead函数用于从WIFI固件中读取升级所需的数据,WiFiWrite函数用于将WIFI固件数据写入WIFI通讯模块。
由于固件接口函数表是存储在操作系统程序的与终端中的固件模块进行通信的接口函数以及接口函数存储地址的映射表,所以在确定了固件接口函数表的具体位置后,可在固件接口函数表中查找需要的函数的存储地址。
步骤238,按照预设固件升级文件中的与固件升级数据对应的预存固件升级协议的读写顺序,根据第一存储地址调用读函数,以使读函数从与预设固件升级文件对应的固件模块中读取预存固件升级协议中的读数据,根据第二存储地址调用写函数,以使写函数将固件升级数据写入到与预设固件升级文件对应的固件模块中。
具体地,解析预设固件升级文件中的与固件升级数据对应的预存固件升级协议得到握手协议和通信协议,先按照握手协议建立终端操作系统提供的CPU和固件模块进行通信的连接,再读取通信协议中的数据,若存在读操作标识,则获取与该读操作标识对应的读数据,并通过第一存储地址传递读数据给读函数,以使读函数从与预设固件升级文件对应的固件模块中读取该读数据,若从固件模块中成功读取该数据,则继续读取通信协议中的数据,若存在写操作标识,则通过第二存储地址传递固件升级数据给写函数,以使写函数将固件升级数据写入与预设固件升级文件对应的固件模块,若成功将写函数写入固件模块,则继续读取通信协议中的数据,直到通信协议中的全部数据读取完毕。在一个实施例中,如图6所示,提供了另一种固件升级方法,以应用于POS终端的WIFI固件升级方法为例进行说明,包括:
步骤602,读取预设固件升级文件。
本实施例中,预设固件升级文件是通过编译软件编译的类型为MPATCH的文件,文件名称为WIFIMpatch。
具体地,在POS终端的文件系统中遍历查找扩展名为MPATCH的文件,若查找到扩展名为MPATCH的文件,则获取该文件的文件名称并解析该文件的文件头获取元素Name的值,再将Name的值与文件名称进行对比,若对比结果一致,则查找到的文件为有效文件,即为预设固件升级文件。
步骤604,验证预设固件升级文件的安全性。
具体地,读取预设固件升级文件的最后256字节的签名信息,然后利用预先存储在POS机中的RSA公钥解密签名信息获取第一消息摘要,再利用消息摘要算法计算出查找到的MPATCH文件的第二消息摘要,最后将第一消息摘要与第二消息摘要进行对比,若对比结果一致则验证为安全,否则验证为不安全。
步骤606,若预设固件升级文件验证为安全,则将预设固件升级文件映射至内存中。
具体地,解析查找到的MPATCH文件的文件头,获取预设固件升级文件映射至内存的映射地址,再将MPATCH文件中的函数段和变量段复制到内存中的映射地址处。
步骤608,获取预设固件升级文件的函数入口地址。
本实施例中,通过解析预设固件升级文件的文件头获取固件升级函数的函数入口地址。
步骤610,根据函数入口地址从内存中的预设固件升级文件获取固件升级数据。
本实施例中,POS终端操作系统首先获取与预设升级固件升级文件相对应的固件模块的信息,包括固件模块的型号、与固件模块的型号相对应的固件当前版本号,再根据获取到的函数入口地址调用内存中的预设固件升级函数,以上述固件模块信息作为函数参数传递给预设固件升级函数,以使预设固件升级函数将接收到的与固件模块的型号相对应的固件当前版本号与预存固件版本号(即预设固件升级文件的升级版本号)进行比较,若接收到的与固件模块的型号相对应的固件当前版本号大于预存固件版本号,则终端操作系统获取固件升级函数中与固件模块型号相对应的固件升级数据。
步骤612,将固件升级数据写入到与预设固件升级文件对应的固件模块中。
具体地,POS终端操作系统先获取固件接口函数表存储的起始地址和结束地址,再根据固件接口函数表的起始地址和结束地址遍历固件接口函数表,分别获取与固件升级数据对应的读函数(WiFiRead)的第一存储地止和写函数(WiFiWrite)的第二存储地址,接着解析预设固件升级文件中的与固件升级数据对应的预存固件升级协议得到握手协议和通信协议,按照握手协议建立POS终端操作系统提供的CPU和固件模块进行通信的连接,若连接建立成功,则读取通信协议中的数据,若存在读操作标识,则获取与该读操作标识对应的读数据,并通过第一存储地址传递读数据给读函数(WiFiRead),以使读函数从与预设固件升级文件对应的固件模块中读取该读数据,若从固件模块中成功读取该数据,则继续读取通信协议中的数据,若存在写操作标识,则通过第二存储地址传递固件升级数据给写函数(WiFiWrite),以使写函数将固件升级数据写入与预设固件升级文件对应的固件模块,若成功将写函数写入固件模块,则继续读取通信协议中的数据,直到通信协议中的全部数据读取完毕。
本实施例中,通过入口地址调用预设固件升级文件中的固件升级函数,获取固件升级函数中的固件升级数据,再按照预设固件升级文件中的与固件升级数据对应的预存固件升级数据协议,将固件升级数据写入到与预设固件升级文件对应的固件模块中,使得固件的升级不再依附于操作系统的升级,实现了固件的单独升级,同时减少了传统固件升级方法中因固件升级连带操作系统的频繁升级,提高了固件升级的便利性;通过固件升级函数的入口地址直接调用固件升级函数,避免了传统的地址映射寻址代码的运行,提高了固件升级方法的执行效率;对预设固件升级文件增加安全性验证的步骤,保证了固件升级数据的安全性。
在一个实施例中,如图7所示,提供了一种固件升级装置,包括:
升级文件读取模块702,用于读取预设固件升级文件。
升级文件映射模块704,用于将预设固件升级文件映射至内存中;
函数入口地址获取模块706,用于获取预设固件升级文件的函数入口地址;
升级数据获取模块708,用于根据函数入口地址从内存中的预设固件升级文件获取固件升级数据;
升级数据写入模块710,用于按照预设固件升级文件中的与所述固件升级数据对应的预存固件升级协议,将固件升级数据写入到与预设固件升级文件对应的固件模块中。
在一个实施例中,如图8所示,上述装置还包括安全验证模块703,用于验证预设固件升级文件的安全性。升级文件映射模块704用于若预设固件升级文件验证为安全,则进入将预设固件升级文件映射至内存中的步骤。
在一个实施例中,安全验证模块703用于获取预设固件升级文件的数字签名信息;利用预存的秘钥算法对获取的数字签名进行解密,得到预设固件升级文件的第一消息摘要;根据消息摘要算法计算出预设固件升级文件的第二消息摘要;将第一消息摘要与第二消息摘要进行对比,若第一消息摘要与第二消息摘要对比一致,则预设固件升级文件验证为安全,否则,预设固件升级文件验证为不安全。
在一个实施例中,升级数据获取模块708用于获取与预设固件升级文件对应的固件模块的型号;根据函数入口地址从内存中的预设固件升级文件获取与固件模块的型号对应的固件升级数据。
在一个实施例中,升级数据写入模块710用于获取固件接口函数表的起始地址和结束地址;根据固件接口函数表的起始地址和结束地址遍历固件接口函数表,分别获取与固件升级数据对应的读函数的第一存储地止和写函数的第二存储地址;按照预设固件升级文件中的与固件升级数据对应的预存固件升级协议的读写顺序,根据第一存储地址调用读函数,以使读函数从与预设固件升级文件对应的固件模块中读取预存固件升级协议中的读数据,根据第二存储地址调用写函数,以使写函数将固件升级数据写入到与预设固件升级文件对应的固件模块中。
本发明实施例还提供了一种计算机设备。所述计算机设备包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:读取预设固件升级文件,并将所述预设固件升级文件映射至内存中;获取所述预设固件升级文件的函数入口地址;根据所述函数入口地址从所述内存中的预设固件升级文件获取固件升级数据;按照预设固件升级文件中的与所述固件升级数据对应的预存固件升级协议,将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中。
在一个实施例中,所述处理器执行所述程序时还实现以下步骤:验证所述预设固件升级文件的安全性;若所述预设固件升级文件验证为安全,则进入将所述预设固件升级文件映射至内存中的步骤。
在一个实施例中,所述处理器执行所述程序时还实现以下步骤:获取所述预设固件升级文件的数字签名;利用预存的秘钥算法对获取的数字签名进行解密,得到预设固件升级文件的第一消息摘要;根据消息摘要算法计算出预设固件升级文件的第二消息摘要;将所述第一消息摘要与所述第二消息摘要进行对比,若所述第一消息摘要与所述第二消息摘要对比一致,则所述预设固件升级文件验证为安全,否则,所述预设固件升级文件验证为不安全。
在一个实施例中,所述处理器执行所述程序时还实现以下步骤:获取与所述预设固件升级文件对应的固件模块的型号;根据所述函数入口地址从所述内存中的预设固件升级文件获取与所述固件模块的型号对应的固件升级数据。
在一个实施例中,所述处理器执行所述程序时还实现以下步骤:获取固件接口函数表的起始地址和结束地址;根据所述固件接口函数表的起始地址和结束地址遍历固件接口函数表,分别获取与所述固件升级数据对应的读函数的第一存储地址和写函数的第二存储地址;按照预设固件升级文件中的与固件升级数据对应的预存固件升级协议的读写顺序,根据第一存储地址调用读函数,以使读函数从与预设固件升级文件对应的固件模块中读取预存固件升级协议中的读数据,根据所述第二存储地址调用写函数,以使所述写函数将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中。
需要说明的是,本发明各个实施例中的“第一”、“第二”仅用作区分,并不用作对大小、从属、先后顺序等方面的限定。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (12)

1.一种固件升级方法,所述方法包括:
读取预设固件升级文件,并将所述预设固件升级文件映射至内存中,所述预设固件升级文件包括预存固件升级协议、固件升级数据和固件版本信息;
获取所述预设固件升级文件的函数入口地址;
根据所述函数入口地址从所述内存中的预设固件升级文件获取所述固件升级数据;
按照所述预设固件升级文件中的与所述固件升级数据对应的所述预存固件升级协议,将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中。
2.根据权利要求1所述的方法,其特征在于,在所述将所述预设固件升级文件映射至内存中之前,还包括:
验证所述预设固件升级文件的安全性;
若所述预设固件升级文件验证为安全,则进入将所述预设固件升级文件映射至内存中的步骤。
3.根据权利要求2所述的方法,其特征在于,所述验证所述预设固件升级文件的安全性,包括:
获取所述预设固件升级文件的数字签名;
利用预存的秘钥算法对获取的数字签名进行解密,得到所述预设固件升级文件的第一消息摘要;
根据消息摘要算法计算出所述预设固件升级文件的第二消息摘要;
将所述第一消息摘要与所述第二消息摘要进行对比,若所述第一消息摘要与所述第二消息摘要对比一致,则所述预设固件升级文件验证为安全,否则,所述预设固件升级文件验证为不安全。
4.根据权利要求1所述的方法,其特征在于,所述根据所述函数入口地址从所述内存中的预设固件升级文件获取固件升级数据,包括:
获取与所述预设固件升级文件对应的固件模块的型号;
根据所述函数入口地址从所述内存中的预设固件升级文件获取与所述固件模块的型号对应的固件升级数据。
5.根据权利要求1所述的方法,其特征在于,所述按照所述预设固件升级文件中的与所述固件升级数据对应的预存固件升级协议,将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中,包括:
获取固件接口函数表的起始地址和结束地址;
根据所述固件接口函数表的起始地址和结束地址遍历固件接口函数表,分别获取与所述固件升级数据对应的读函数的第一存储地址和写函数的第二存储地址;
按照所述预设固件升级文件中的与固件升级数据对应的预存固件升级协议的读写顺序,根据第一存储地址调用读函数,以使读函数从与所述预设固件升级文件对应的固件模块中读取所述预存固件升级协议中的读数据,根据所述第二存储地址调用写函数,以使所述写函数将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中。
6.一种固件升级装置,其特征在于,所述装置包括:
升级文件读取模块,用于读取预设固件升级文件,所述预设固件升级文件包括预存固件升级协议、固件升级数据和固件版本信息;
升级文件映射模块,用于将所述预设固件升级文件映射至内存中;
函数入口地址获取模块,用于获取所述预设固件升级文件的函数入口地址;
升级数据获取模块,用于根据所述函数入口地址从所述内存中的预设固件升级文件获取所述固件升级数据;
升级数据写入模块,用于按照所述预设固件升级文件中的与所述固件升级数据对应的所述预存固件升级协议,将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
安全验证模块,用于验证所述预设固件升级文件的安全性;
所述升级文件映射模块用于若所述预设固件升级文件验证为安全,则进入将所述预设固件升级文件映射至内存中的步骤。
8.根据权利要求7所述的装置,其特征在于,所述安全验证模块用于获取所述预设固件升级文件的数字签名;利用预存的秘钥算法对获取的数字签名进行解密,得到所述预设固件升级文件的第一消息摘要;根据消息摘要算法计算出所述预设固件升级文件的第二消息摘要;将所述第一消息摘要与所述第二消息摘要进行对比,若所述第一消息摘要与所述第二消息摘要对比一致,则所述预设固件升级文件验证为安全,否则,所述预设固件升级文件验证为不安全。
9.根据权利要求6所述的装置,其特征在于,所述升级数据获取模块用于获取与所述预设固件升级文件对应的固件模块的型号;根据所述函数入口地址从所述内存中的预设固件升级文件获取与所述固件模块的型号对应的固件升级数据。
10.根据权利要求6所述的装置,其特征在于,所述升级数据写入模块用于获取固件接口函数表的起始地址和结束地址;根据所述固件接口函数表的起始地址和结束地址遍历固件接口函数表,分别获取与所述固件升级数据对应的读函数的第一存储地止和写函数的第二存储地址;按照所述预设固件升级文件中的与固件升级数据对应的预存固件升级协议的读写顺序,根据第一存储地址调用读函数,以使读函数从与所述预设固件升级文件对应的固件模块中读取所述预存固件升级协议中的读数据,根据所述第二存储地址调用写入函数,以使所述写入函数将所述固件升级数据写入到与所述预设固件升级文件对应的固件模块中。
11.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求1至5任一所述的固件升级方法。
12.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5任一所述的固件升级方法。
CN201710203654.8A 2017-03-30 2017-03-30 固件升级方法和装置 Active CN107194242B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201710203654.8A CN107194242B (zh) 2017-03-30 2017-03-30 固件升级方法和装置
PCT/CN2017/099741 WO2018176733A1 (zh) 2017-03-30 2017-08-30 固件升级方法、终端和计算机可读非易失性存储介质
US16/348,710 US20190278583A1 (en) 2017-03-30 2017-08-30 Method for updating firmware, terminal and computer readable non-volatile storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710203654.8A CN107194242B (zh) 2017-03-30 2017-03-30 固件升级方法和装置

Publications (2)

Publication Number Publication Date
CN107194242A CN107194242A (zh) 2017-09-22
CN107194242B true CN107194242B (zh) 2019-11-08

Family

ID=59871023

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710203654.8A Active CN107194242B (zh) 2017-03-30 2017-03-30 固件升级方法和装置

Country Status (3)

Country Link
US (1) US20190278583A1 (zh)
CN (1) CN107194242B (zh)
WO (1) WO2018176733A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106899437B (zh) * 2017-02-23 2020-05-01 百富计算机技术(深圳)有限公司 一种升级pos机模块固件的方法和装置
CN107861729B (zh) * 2017-11-08 2021-08-24 中国信息安全测评中心 一种固件装载基址的定位方法、装置及电子设备
CN108881386A (zh) * 2018-05-11 2018-11-23 郑州易湃科技有限公司 通信设备的远程固件升级方法及远程固件升级装置
CN108920962B (zh) * 2018-06-26 2020-06-26 百富计算机技术(深圳)有限公司 固件下载验签方法、固件发布方法、移动终端及服务器
JP6718483B2 (ja) * 2018-06-29 2020-07-08 株式会社Subaru 車両
CN109710288B (zh) * 2018-12-13 2022-08-12 航天信息股份有限公司 升级固件的方法、装置和存储介质
CN110007941B (zh) * 2019-03-05 2022-11-08 小黄狗环保科技有限公司 一种智能垃圾分类回收系统的mcu固件及升级方法
CN110083378B (zh) * 2019-05-09 2023-08-04 中国航空工业集团公司西安航空计算技术研究所 一种基于文件系统的软件自动升级方法及装置
CN110413295B (zh) * 2019-06-26 2023-07-21 上海电器科学研究所(集团)有限公司 一种嵌入式设备远程固件更新方法
CN110780908A (zh) * 2019-09-27 2020-02-11 科华恒盛股份有限公司 屏幕显示程序升级方法、系统及终端设备
CN114424163A (zh) * 2019-11-18 2022-04-29 深圳市欢太科技有限公司 刷机方法及相关装置
CN110879717B (zh) * 2019-11-27 2023-06-27 四川虹美智能科技有限公司 Eeprom参数烧写装置及方法
CN111176702B (zh) * 2019-12-16 2023-08-08 京信网络系统股份有限公司 固件升级方法、装置、计算机设备和存储介质
CN111158717A (zh) * 2019-12-24 2020-05-15 深圳怡化电脑股份有限公司 设备的固件升级方法、设备和介质
CN111352641B (zh) * 2020-02-26 2024-02-13 深圳忆联信息系统有限公司 借助批处理的自动打包方法、装置、计算机设备及存储介质
US11269614B2 (en) * 2020-03-10 2022-03-08 Dell Products, L.P. Transfer of firmware updates using an in-band interface
CN111813428A (zh) * 2020-06-02 2020-10-23 西安闻泰电子科技有限公司 终端固件的升级方法、装置、电子设备及存储介质
CN111831315A (zh) * 2020-07-02 2020-10-27 广州市挖米科技有限责任公司 一种处理方法及系统
CN112447014B (zh) * 2020-11-25 2022-10-14 惠尔丰信息系统有限公司 一种应用于安全支付pos机的控制方法
CN114625388A (zh) * 2020-12-11 2022-06-14 深圳市乐众云科技有限公司 一种物联网mcu空中固件升级系统及方法
CN112711430B (zh) * 2020-12-29 2023-10-17 杭州当贝网络科技有限公司 基于adb的非网络设备升级方法、系统及可读存储介质
CN112860291B (zh) * 2021-02-08 2023-05-12 杭州涂鸦信息技术有限公司 固件升级方法及装置
CN112882734B (zh) * 2021-03-11 2024-04-16 北京百度网讯科技有限公司 升级方法及装置、计算机设备和介质
CN113094071B (zh) * 2021-04-25 2023-06-09 珠海市一微星科技有限公司 一种微控制单元、其控制方法及其固件升级方法
CN114296754A (zh) * 2021-11-30 2022-04-08 深圳市广和通无线股份有限公司 芯片平台升级方法及相关装置
CN116541046B (zh) * 2023-07-05 2023-12-12 广州疆海科技有限公司 储能系统升级方法、装置、计算机设备及可读存储介质
CN117112001A (zh) * 2023-10-24 2023-11-24 北京傲星科技有限公司 一种板卡中软件升级方法及装置
CN117348923A (zh) * 2023-12-05 2024-01-05 科谱半导体(天津)有限公司 组件的版本管理方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101436141A (zh) * 2008-11-21 2009-05-20 深圳创维数字技术股份有限公司 基于数字签名的固件升级、固件封装方法与装置
CN102033770A (zh) * 2010-12-17 2011-04-27 中兴通讯股份有限公司 移动终端的触摸屏固件升级方法及装置
CN104166565A (zh) * 2014-08-11 2014-11-26 成都瑞博慧窗信息技术有限公司 一种智能显示终端固件升级方法
CN104991797A (zh) * 2015-06-23 2015-10-21 上海卓易科技股份有限公司 一种移动终端的固件升级方法及移动终端

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002014871A (ja) * 2000-06-29 2002-01-18 Fujitsu Ltd コンテンツチェック方法、コンテンツ更新方法、および処理装置
JP4288893B2 (ja) * 2001-09-26 2009-07-01 ソニー株式会社 情報処理装置、プログラムロード方法、記録媒体、プログラム更新方法及び回路素子
US20030204711A1 (en) * 2002-04-29 2003-10-30 Guess Alan J. Method and system for restoring custom user configuration settings across a host application download
US7283558B2 (en) * 2002-06-04 2007-10-16 Lucent Technologies Inc. Distributed weighted fair arbitration and forwarding
US7036007B2 (en) * 2002-09-09 2006-04-25 Intel Corporation Firmware architecture supporting safe updates and multiple processor types
WO2004042538A2 (en) * 2002-11-05 2004-05-21 Bitfone Corporation Firmware update system for facilitating firmware update in mobile handset related applications
TWI220962B (en) * 2003-01-20 2004-09-11 Mediatek Inc Firmware updating method and related apparatus for checking content of replacing firmware before firmware updating
EP1639435A4 (en) * 2003-06-27 2009-12-30 Hewlett Packard Development Co SYSTEM AND METHOD FOR DOWNLOADING UPDATE PACKAGES INTO A MOBILE HAND APPARATUS IN A CARRIER NETWORK
US7861296B2 (en) * 2005-06-16 2010-12-28 Microsoft Corporation System and method for efficiently scanning a file for malware
CN100465893C (zh) * 2006-08-29 2009-03-04 华南理工大学 一种嵌入式操作系统驱动程序动态升级方法
US20080155524A1 (en) * 2006-12-26 2008-06-26 Fuja Shone Firmware Updating and Extending Method for Application Specific Integrated Circuit
KR20150100075A (ko) * 2014-02-24 2015-09-02 삼성전자주식회사 메모리 및 컨트롤러를 포함하는 메모리 장치의 펌웨어를 업데이트하는 방법
US9213881B1 (en) * 2014-06-13 2015-12-15 The Code Corporation Providing operating instructions for a barcode reader from a server
CN105930179A (zh) * 2015-12-14 2016-09-07 中国银联股份有限公司 一种交易终端升级的方法及装置
US10802998B2 (en) * 2016-03-29 2020-10-13 Intel Corporation Technologies for processor core soft-offlining
CN106940651B (zh) * 2017-03-03 2020-04-03 百富计算机技术(深圳)有限公司 Pos终端软件升级方法和装置
CN107194237B (zh) * 2017-04-05 2020-04-03 百富计算机技术(深圳)有限公司 应用程序安全认证的方法、装置、计算机设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101436141A (zh) * 2008-11-21 2009-05-20 深圳创维数字技术股份有限公司 基于数字签名的固件升级、固件封装方法与装置
CN102033770A (zh) * 2010-12-17 2011-04-27 中兴通讯股份有限公司 移动终端的触摸屏固件升级方法及装置
CN104166565A (zh) * 2014-08-11 2014-11-26 成都瑞博慧窗信息技术有限公司 一种智能显示终端固件升级方法
CN104991797A (zh) * 2015-06-23 2015-10-21 上海卓易科技股份有限公司 一种移动终端的固件升级方法及移动终端

Also Published As

Publication number Publication date
CN107194242A (zh) 2017-09-22
US20190278583A1 (en) 2019-09-12
WO2018176733A1 (zh) 2018-10-04

Similar Documents

Publication Publication Date Title
CN107194242B (zh) 固件升级方法和装置
CN102982264B (zh) 一种嵌入式设备软件保护方法
CN104462965B (zh) 应用程序完整性验证方法及网络设备
US9148415B2 (en) Method and system for accessing e-book data
CN101034991B (zh) 安全引导系统及方法、代码签名构造方法及认证方法
CN108363580A (zh) 应用程序安装方法、装置、计算机设备和存储介质
CN104951701B (zh) 一种基于usb控制器的终端设备操作系统引导的方法
CN105391717A (zh) 一种apk签名认证方法及其系统
JP2015062286A (ja) データ検証方法およびデータ検証用装置
CN114218592A (zh) 敏感数据的加解密方法、装置、计算机设备及存储介质
JP2001184186A5 (ja) 画像処理装置、画像処理方法及び記憶媒体
CN111984962A (zh) 固件安全验证方法及装置
CN106940651A (zh) Pos终端软件升级方法和装置
CN107980132A (zh) 一种apk签名认证方法及系统
US7962765B2 (en) Methods and systems for tamper resistant files
CN107148010A (zh) 多运营商实现方法、装置、存储介质和计算机设备
CN105101169A (zh) 可信执行环境处理信息的方法、装置、终端及sim卡
CN109756340B (zh) 一种数字验签方法、装置和存储介质
CN110278115A (zh) 热更新方法及装置
CN112187544A (zh) 固件升级方法、装置、计算机设备及存储介质
CN111125725A (zh) 一种镜像校验的加解密方法、设备及介质
CN106897587A (zh) 加固应用、加载加固应用的方法和装置
CN111026419A (zh) 一种单片机的应用程序升级方法、装置及系统
US20170060775A1 (en) Methods and architecture for encrypting and decrypting data
CN111177709A (zh) 一种终端可信组件的执行方法、装置及计算机设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant