发明内容
为此,需要提供一种eMMC的固件升级的方案,解决现有eMMC需要固件升级的问题。
为实现上述目的,发明人提供了一种eMMC的固件升级方法,运行于电子设备上,包括如下步骤:
获取eMMC的固件信息;
从服务器获取待升级固件信息;
比较待升级固件信息和eMMC的固件信息;
如果待升级固件信息与eMMC的固件信息不一致,则从服务器下载待升级固件,并存储待升级固件到eMMC的固件存储区中。
进一步地,所述的方法在操作系统的OTA升级过程中执行。
进一步地,还包括如下步骤:
在存储待升级固件到eMMC的固件存储区后执行重启操作。
进一步地,在重启后还包括如下步骤:
发送电子设备ID和当前eMMC的固件信息到固件监控服务器。
进一步地,在“待升级固件信息与固件信息不一致时,则从服务器下载待升级固件”的步骤具体还包括如下步骤:
待升级固件信息与固件信息不一致时;
发出是否升级的询问信息;
判断是否接收到确认升级信息;
在接收到确认升级的信息后才进行从服务器下载待升级固件的步骤;
在没接收到确认升级的信息不进行从服务器下载待升级固件的步骤。
进一步地,所述固件信息为固件版本信息。
以及发明人还提供一种eMMC的固件升级设备,包括eMMC,包括如下模块:
eMMC信息获取模块:用于获取eMMC的固件信息;
服务器信息获取模块:用于从服务器获取待升级固件信息;
信息比较模块:用于比较待升级固件信息和eMMC的固件信息;
信息处理模块:用于如果待升级固件信息与eMMC的固件信息不一致,则从服务器下载待升级固件,并存储到eMMC的固件存储区中。
进一步地,还包括OTA升级模块,所述OTA升级模块用于操作系统OTA升级,所述OTA升级模块使能后eMMC信息获取模块使能。
进一步地,还包括重启模块;所述重启模块用于在信息处理模块使能后执行重启操作。
进一步地,还包括信息发送模块,所述信息发送模块用于发送设备ID和当前eMMC的固件信息到固件监控服务器。
进一步地,所述信息处理模块还包含询问信息子模块、固件下载子模块;
所述询问信息子模块用于在待升级固件信息与固件信息不一致时,发出是否升级的询问信息;
所述固件下载子模块用于判断是否接收到确认升级信息以及用于在接收到确认升级的信息后才从服务器下载待升级固件,在没接收到确认升级的信息不从服务器下载待升级固件。
进一步地,所述固件信息为固件版本信息。
区别于现有技术,上述技术方案可以实现对eMMC的固件的升级,在服务器是网络服务器时,则方便厂家和客户对产品的eMMC的固件进行远程升级,同时本技术方案也可以完成升级后信息的上载,方便厂家的跟踪,可以给用户提供更好的固件服务。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1,本实施例提供了一种eMMC的固件升级方法,本方法可以运行于具有eMMC的电子设备中,电子设备还应包含有可以计算和处理的处理模块,如CPU等,以及包含有给这些模块、eMMC等供电的供电模块。用户可以使用电子设备对eMMC的固件进行升级。升级时具体包括如下步骤:首先进入步骤S101获取eMMC的固件信息。此固件信息可以是固件的部分代码的信息、文件信息(如MD5特征信息、创建时间、修改时间、大小等信息)、版本信息等,这些信息都可以对不同的固件信息进行区分。获取完成后可以将eMMC的固件信息先保存在内存或者存储单元上,以便于后续操作。
而后进入步骤S102从服务器获取待升级固件信息。服务器可以是一台上位机,如电脑。服务器与运行本方法的电子设备的连接可以是有线连接,如USB连接,或是无线连接,如无线网络连接、移动通信连接等。在某些实施例中,服务器设置在互联网中可以被电子设备通过互联网进行连接,这样只要电子设备可以连接互联网即可以对eMMC固件进行升级,同时厂家可以随时在服务器上更新eMMC固件,而后用户即可进行相应的升级。具体的实施方式可以是电子设备上存储有服务器的域名,而后电子设备通过域名解析后连接到服务器,这样服务器IP地址变化后电子设备还是可以通过域名连接到服务器。在某些实施例中,某些eMMC固件版本无法一次性从低版本升级到最新版本,即需要中间版本的升级,此时服务器上可能存有多个eMMC固件版本,为了避免更新出错,则服务器上待升级的eMMC固件版本可以带有下一次的升级版本信息,电子设备通过读取下一次的升级版本信息与服务器的待升级eMMC版本信息进行比较,如果一致则进行下载并存储的升级步骤,否则不进行下载和存储的升级步骤。
eMMC和服务器的固件信息都读取后,则进入步骤S103比较待升级固件信息和eMMC的固件信息,即在步骤S103比较两个固件信息是否一致。一般地说来,服务器上放置的待升级的固件即是新的或者更正后的固件,而电子设备中eMMC的固件是较旧或者是未更正的固件,固件的升级过程即是使用电子设备的用户相与服务器固件同步的过程,所以只需比较是否一致即可,不一致则需要进入升级步骤:步骤S104从服务器下载待升级固件,一致的话就不需要进入升级步骤,则本实施例中进入步骤S105不进行任何操作。步骤S104执行完成后,则待升级的固件(即新固件)已经存储在电子设备的内存、eMMC或者其他存储模块中,则进入升级步骤中的步骤S106存储待升级固件到eMMC的固件存储区中。以上即完成了服务器固件升级到电子设备eMMC上的过程,实现了eMMC固件的升级过程。
如上所述,固件信息可以是固件的部分代码的信息、文件信息、版本信息等,当固件信息是固件版本信息时,相对于现有的eMMC协议,电子设备的处理模块可以发送CMD8命令到eMMC,eMMC接收到CMD8命令后会将eMMC当前所使用的固件(此时固件已经在eMMC的RAM中运行)中的固件版本信息,即extended CSD寄存器信息发送给电子设备的处理模块。处理模块从eMMC获得的extened CSD寄存器信息,截取254比特到261比特的位置的信息,这8个比特信息标识了当前所使用的eMMC的固件版本信息,以上电子设备即可完成对eMMC固件版本信息的读取。而后从服务器读取待升级固件信息也需要读取待升级固件的版本信息,则在步骤S103可以比较固件版本信息是否一致,在某些实施例中,固件版本信息一般是旧的固件版本信息相对新的固件版本低,则固件信息不一致为待升级固件版本信息比eMMC的固件版本信息高。电子设备判断得到不一致的结果后,计入升级步骤S104和S106,如果一致则进入步骤S105不进行任何操作。
上述实施例并不限定电子设备所运行的系统的类型,在某些实施例中,电子设备运行有操作系统,如安卓(Android)或苹果系统(ios)等。操作系统也具有固件,为操作系统固件,与eMMC固件不同,操作系统固件也可以存在eMMC中。操作系统具有用于升级操作系统固件的OTA(Over-the-AirTechnology,即空中下载技术)升级,则本方案的方法可以在操作系统的OTA升级过程中执行。即在操作系统OTA升级的过程中完成eMMC固件的升级,用户只需启动一次即可完成两者的升级,减少了升级的步骤,方便了用户的升级操作。具体的实现时,可以操作系统OTA升级的进程中添加一个独立线程,这个独立线程可以运行本方案的方法步骤,完成eMMC的固件升级。
步骤S106完成后,待升级的固件已经存储在eMMC的固件存储区,但是由于当前eMMC固件(即旧的固件)已经运行在它的RAM中,所以待升级的固件并未生效。要使得待升级的固件生效,则电子设备在步骤S106完成待升级固件存储到固件存储区之后,向操作系统发送重启指令,即完成步骤S107执行重启操作。操作系统接收到重启指令后完成重启,在操作系统重启的时候,电子设备的eMMC重新上电,eMMC中的固件存储区中的待升级固件(即新固件)会被重新加载到eMMC的RAM中运行,则待升级的固件生效并发挥其应有的作用。
待升级固件运行后,在某些实施例中,还包括步骤S108发送电子设备ID和当前eMMC的固件(即运行的待升级的固件)信息到固件监控服务器。电子设备ID即电子设备序列号,用于识别电子设备,可以是有一串字符组成。固件监控服务器与电子设备的连接可以是有线或无线的连接,固件监控服务器如上述存放待升级固件的服务器一样,可以是在互联网上,当然也可以与存放待升级固件的服务器是同一个机器。固件监控服务器接收到电子设备ID和固件信息后会存储起来,eMMC维护人员(如eMMC厂家)可以根据这些信息对eMMC进行跟踪,可以确认已升级和未升级的电子设备的数量情况,可以知道固件升级的需求,从而可以对固件升级需求做出评估。另外,步骤S108电子设备也可以发送升级结果信息到固件监控服务器,则在电子设备重启后,如果电子设备在使用升级后的固件过程中出错,那么电子设备会将电子设备ID连同出错的信息(即升级结果信息)发送到固件监控服务器,如果升级成功,电子设备也会将升级成功的结果信息发送到固件监控服务器。固件监控服务器会将此记录到固件监控服务器中相应的条目内,提供给eMMC维护术人员对新的固件的稳定性进行跟踪,随时了解待升级的固件是否文档安全,是否可以完成其应有的作用,为决定是否还需要进一步的修正固件提供了重要的参考信息。
为了使用电子设备的用户对eMMC固件升级具有选择的权利,提高用户的体验,在某些实施例中,在“待升级固件信息与固件信息不一致时,则从服务器下载待升级固件”的步骤具体还包括如下步骤:在步骤S103判断得到待升级固件信息与固件信息不一致时;进入步骤S113发出是否升级的询问信息;而后进入步骤S123判断是否接收到确认升级信息,在接收到确认升级的信息后才进行步骤S104从服务器下载待升级固件的步骤;否则在没接收到确认升级的信息不进行从服务器下载待升级固件的步骤,即进入步骤S105不进行操作。其中,是否升级询问信息可以是在显示屏上显示是否升级询问信息或是从声音输出模块发出时候升级的询问信息,用户输入确认升级信息可以是通过点击触摸屏输入或者按下某个按键输入,当电子设备接收到确认升级信息后,则表明了用户需要对eMMC固件进行升级,没接收到确认升级信息,则用户不想对eMMC固件进行升级,则不进行操作。这里没接收到确认升级信息可以是用户没有输入任何信息或者是用户输入了确认不升级的信息,都表明了用户没有升级eMMC固件的意愿,则不进行eMMC固件升级,使得用户对eMMC固件升级具有决策权,提高了用户的体验。
以及发明人还提供一种eMMC的固件升级设备1,如图2所示,以下结合图2对设备1进行详细说明,设备1包括eMMC10,eMMC10具有用于控制eMMC的eMMC控制器和用于存储数据的存储模块(如图2中的Nand-flash),存储模块可以存储有操作系统固件,存储模块具有用于存储eMMC固件的固件存储区。设备1外部具有存储有待升级固件的服务器2,服务器2与设备1的通信方式可以是有线或者无线的通信方式。具体地,设备1包括如下模块:eMMC信息获取模块11、服务器信息获取模块12、信息比较模块13和信息处理模块14。
其中,eMMC信息获取模块11用于获取eMMC10的固件信息,此固件信息可以是eMMC固件的文件信息、部分代码信息、版本信息等。在某些实施例中,固件信息优选为版本信息,如1.0,2.0等由数字和符号组成的版本号。根据版本号可以知道eMMC固件的新旧程度。一般说来,待升级固件版本(新版本)信息比eMMC的固件版本信息高,如2.0版本比1.0版本要新。服务器信息获取模块12用于从服务器2获取待升级固件信息,信息获取模块12可以发送一个获取的信息给服务器2,服务器2收到后回复服务器2上待升级固件信息,待升级固件信息与eMMC的固件信息应该为同一种类型的信息,如都为版本信息或者部分代码信息,这样后面的模块才能对此进行比较。信息比较模块13用于比较待升级固件信息和eMMC的固件信息,即信息比较模块13用于比较两个信息是否存在差异,并将这个结果发送给信息处理模块14。信息处理模块14如果得到待升级固件信息与eMMC的固件信息不一致的结果时,则从服务器2下载待升级固件,并存储到eMMC10的固件存储区中。信息处理模块14下载时,可以采用发送一个下载指令给服务器2,服务器2接收到发送待升级固件给信息处理模块14,信息处理模块14接收到后将待升级固件存储到内存或者其他存储模块中,然后再将下载的待升级固件覆盖固件存储区中原先的固件,使得固件存储区的固件为服务器上的待升级固件,即新固件,完成了eMMC固件升级的操作。然后在下次设备1启动时,eMMC10会重新上电,则会加载下载后的固件。
设备1上可以运行有操作系统,则设备1还可以包括OTA升级模块15,所述OTA升级模块15用于操作系统OTA升级,OTA升级可以更新操作系统固件。OTA升级模块15使能后eMMC信息获取模块11使能。即在设备1在进行OTA升级的时候,同时进行eMMC的固件升级。减少了两个固件同时需要升级的步骤,大大方便了用户的升级操作。
固件存储区存储有下载后的固件时,此时固件并未生效,eMMC运行的还是原先的固件,为了使得固件生效,装置1还包括有重启模块16,重启模块16用于在信息处理模块15使能后执行重启操作。重启后,eMMC10会被重新上电,上电时会从固件存储区上加载下载后的固件(即服务器上的待升级固件)到eMMC的RAM中,而后eMMC会执行RAM中的固件并使得下载后的固件生效,发挥其应有的作用。当然,在没有从服务器2下载固件的情况下,即固件没有升级,则不需要使能重启模块16。
为了让固件提供厂商可以对升级了固件的设备进行统计和分析,在某些实施例中,在重启模块16使能后还包括使能信息发送模块17,信息发送模块17用于发送设备ID和当前eMMC的固件信息(即下载后的固件信息)到固件监控服务器3。固件监控服务器3可以与服务器2为一台机器。固件监控服务器3接收到设备ID(如图2中的设备ID下方的A)和固件信息(如图2的固件版本1.0),会将这些信息存储起来,以便于厂家的分析。在某些实施例中,信息发送模块17还可以发送升级结果信息,升级结果信息表明升级结果是否正常以及在异常时的可以提供给厂家分析原因的信息,这个可以记录成一个文件A,则厂家读取文件A即可知道设备ID为A的设备的升级情况。
为了使得用户在升级时对是否升级可以有选择的余地,在某些实施例中,信息处理模块14还包含询问信息子模块140和固件下载子模块141。询问信息子模块140用于在待升级固件信息与固件信息不一致时,发出是否升级的询问信息。用户通过这个升级的询问信息可以知道当前具有可以升级的eMMC固件,用户可以根据自己的需求进行选择是要升级还是不要升级,需要升级则可以输入确认升级信息,不升级可以输入确认不升级信息。固件下载子模块141用于在接收到确认升级的信息后才从服务器下载待升级固件,在没接收到确认升级的信息不从服务器下载待升级固件。即只有在用户确认要升级时,固件下载子模块141才会下载待升级固件,信息处理模块14才会将下载的待升级固件存储到固件存储区,完成固件升级操作。在用户不想升级时,则固件下载子模块141不会接收到确认升级的信息,则不会下载待升级固件,信息处理模块14也无法完成存储待升级固件到固件存储区的操作,既不会进行固件升级操作。通过询问信息子模块140和固件下载子模块141,用户可以控制固件的升级,提高了用户的体验。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。
本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限于:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。
上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机设备上,使得在计算机设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。