CN113377392A - 可后台升级固件的系统及后台升级固件方法 - Google Patents
可后台升级固件的系统及后台升级固件方法 Download PDFInfo
- Publication number
- CN113377392A CN113377392A CN202010156457.7A CN202010156457A CN113377392A CN 113377392 A CN113377392 A CN 113377392A CN 202010156457 A CN202010156457 A CN 202010156457A CN 113377392 A CN113377392 A CN 113377392A
- Authority
- CN
- China
- Prior art keywords
- firmware
- upgrade
- area
- processing unit
- upgrading
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000004044 response Effects 0.000 claims description 28
- 230000006870 function Effects 0.000 claims description 15
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000005192 partition Methods 0.000 abstract description 3
- 125000004122 cyclic group Chemical group 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- 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
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Abstract
本发明提供一种可后台升级固件的系统及后台升级固件的方法。后台升级固件的方法将电子设备的存储模块进行分区,一个用户代码区用来正常执行初始固件及升级流程,另一个用户代码区用来存放升级固件,避免在升级过程中将升级固件写入存储模块时,对初始固件造成影响。
Description
技术领域
本发明涉及一种系统及方法,特别是涉及一种可后台升级固件的系统及后台升级固件方法。
背景技术
固件(Firmware)是指设备内部保存的设备“驱动程序”,是一个系统最基础最底层工作的软件,是硬件的灵魂。固件升级除可用于解决产品设备存在的缺陷、兼容性问题,亦可用于提升产品设备的性能并增加最新功能。而为了满足使用者日益变换的需求,产品设备的固件升级必不可少。
现有固件升级的方法,当固件升级完毕时,需要对固件系统进行重置后才能继续工作,且一旦在升级过程出现异常(如断电)情况,将导致设备无法正在工作,而降低了固件升级的稳定性及可靠性。此外,在固件升级过程中,设备的功能可能无法正常使用。
因此,急需一种可以在设备正常运行过程中完成固件升级,且在固件升级期间可以提供连续的服务的固件升级系统及方法。
发明内容
本发明所要解决的技术问题在于,针对现有技术的不足提供一种用于液晶显示器或转换器设备的后台固件升级方法,可以在上述设备正常运行过程中完成固件升级,在固件升级期间可以提供连续的服务,提高了固件升级的可靠性和稳定性的同时增加了更好的用户体验。
为了解决上述的技术问题,本发明所采用的其中一技术方案是,提供一种后台固件升级方法,适用于一电子设备,该电子设备包括一处理单元及一存储模块,该后台固件升级方法包括下列步骤:配置该电子设备的该处理单元执行一开机程序,其中该存储模块包括一开机区、一第一用户代码区、一第二用户代码区及一旗标区,且该开机区储存有该开机程序,该第一用户代码区及该第二用户代码区各储存有一初始固件,该旗标区储存有多个升级辅助变量,该开机程序包括:在该开机区导入该初始固件;依据该些升级辅助变量中的一执行优先度,将该第一用户代码区及该第二用户代码区分别判断为一固件运行区及一固件备份区;以及选择以该固件运行区的该初始固件执行一固件主程序;配置连接于该电子设备的一主机执行关联于一升级固件的一升级程序,其中该固件主程序及该升级程序协同执行一升级流程,该升级流程包括:该主机从该电子设备获取该初始固件的一固件版本,并判断该固件版本是否小于该升级固件的版本;响应于该固件版本小于该升级固件的版本,该主机向该电子设备传送一后台固件升级请求;该处理单元依据该电子设备的运作状态回复一升级请求结果,其中该升级请求结果用于指示该电子设备是处在一闲置状态或一忙碌状态;响应于该升级请求结果指示该电子设备处在该闲置状态,该处理单元进一步判断该电子设备是否处在一系统闲置状态;响应于该处理单元判断该电子设备处在该系统闲置状态,该处理单元检测该执行优先度,以判断该第一用户代码区及该第二用户代码区如何分配给该固件运行区及该固件备份区,并将该固件备份区设定为一当前升级区;该主机向该电子设备传送一写入固件数据请求,以配置该处理单元对该当前升级区执行一擦除操作,并将该升级固件的数据写入该当前升级区;以及响应于该升级固件的数据写入完毕,该处理单元向该主机回复用于指示一升级操作成功的一操作结果;待该电子设备重新启动后,该处理单元执行该开机程序以判断该第一用户代码区及该第二用户代码区中的何者已经进行升级,据此修改该执行优先度;以及该处理单元经配置以依据修改后的该执行优先度,选择以该固件运行区中,已升级的该初始固件执行另一固件主程序。
为了解决上述的技术问题,本发明所采用的另外一技术方案是,提供一种可后台升级固件的系统,其包括电子设备及主机。电子设备包括处理单元及存储模块。存储模块包括开机区、第一用户代码区、第二用户代码区及旗标区。开机区储存有开机程序,第一用户代码区及第二用户代码区各储存有初始固件,旗标区储存有多个升级辅助变量。主机经配置以执行与升级固件关联的升级程序。其中,处理单元经配置以执行开机程序,其包括:在该开机区导入该初始固件;依据该些升级辅助变量中的一执行优先度,将该第一用户代码区及该第二用户代码区分别判断为一固件运行区及一固件备份区;以及选择以该固件运行区的该初始固件执行一固件主程序。其中,固件主程序及与该升级程序协同执行一升级流程,该升级流程包括:该主机从该电子设备获取该初始固件的一固件版本,并判断该固件版本是否小于该升级固件的版本;响应于该固件版本小于该升级固件的版本,该主机向该电子设备传送一后台固件升级请求;该处理单元依据该电子设备的运作状态回复一升级请求结果,其中该升级请求结果用于指示该电子设备是处在一闲置状态或一忙碌状态;响应于该升级请求结果指示该电子设备处在该闲置状态,该处理单元进一步判断该电子设备是否处在一系统闲置状态;响应于该处理单元判断该电子设备处在该系统闲置状态,该处理单元检测该执行优先度,以判断该第一用户代码区及该第二用户代码区如何分配给该固件运行区及该固件备份区,并将该固件备份区设定为一当前升级区;该主机向该电子设备传送一写入固件数据请求,以配置该处理单元对该当前升级区执行一擦除操作,并将该升级固件的数据写入该当前升级区;以及响应于该升级固件的数据写入完毕,该处理单元向该主机回复用于指示一升级操作成功的一操作结果。其中,待该电子设备重新启动后,该处理单元执行该开机程序以判断该第一用户代码区及该第二用户代码区中的何者已经进行升级,据此修改该执行优先度。其中,该处理单元经配置以依据修改后的该执行优先度,选择以该固件运行区中,已升级的该初始固件执行另一固件主程序。
本发明提供的可后台升级固件的系统及后台升级固件方法,可将电子设备的存储模块进行分区,一个用户代码区用来正常执行固件及升级流程,另一个用户代码区用来存放升级固件,避免在升级过程中写入存储模块时,对初始固件造成影响。此外,在升级过程不需要暂停电子设备的各项操作,可以在电子设备的正常运行过程中完成升级。
此外,在升级流程中,对升级固件的数据进行了可靠性检查,且在上述流程的实施过程中,只要存储模块本身不出现问题,即便是固件升级失败,也不会造成电子设备无法正常使用。
为使能更进一步了解本发明的特征及技术内容,请参考以下有关本发明的具体实施方式与附图,然而所提供的附图仅用于提供参考与说明,并非用来对本发明加以限制。
附图说明
图1为本发明实施例的可后台升级固件的系统的方块图;
图2为本发明实施例的存储模块的配置示意图;
图3为本发明实施例的开机程序的流程图;
图4为本发明实施例的固件升级流程的流程图;
图5为根据本发明实施例的固件主程序及中断程序的程序流程图;
图6为本发明实施例的升级流程的另一流程图;
图7为本发明实施例的后台固件升级方法的流程图。
具体实施方式
以下是通过特定的具体实施例来说明本发明所公开有关“可后台升级固件的系统及后台升级固件方法”的实施方式,本领域技术人员可根据本说明书所公开的内容了解本发明的优点与效果。本发明可通过其他不同的具体实施例加以施行或应用,本说明书中的各项细节也可基于不同观点与应用,在不背离本发明的构思下进行各种修改与变更。另外,事先声明本发明的附图仅为简单示意说明,并非依实际尺寸的描绘。以下的实施方式将进一步详细说明本发明的相关技术内容,但所公开的内容并非用以限制本发明的保护范围。
应当可以理解的是,虽然本文中可能会使用到“第一”、“第二”、“第三”等术语来描述各种组件或者信号,但这些组件或者信号不应受这些术语的限制。这些术语主要是用以区分一组件与另一组件,或者一信号与另一信号。另外,本文中所使用的术语“或”,应视实际情况可能包括相关联的列出项目中的任一个或者多个的组合。
请参考图1,图1为本发明实施例的可后台升级固件的系统的方块图。如图1所示,本发明实施例提供一种可后台升级固件的系统1,其包括电子设备10及主机12。
电子设备10包括处理单元100及存储模块102。存储模块102主要用于储存固件,其包括开机区Boot、第一用户代码区User1、第二用户代码区User2及旗标区Flag。在一些实施例中,电子设备10可例如为液晶显示器或转换器设备。
另一方面,主机12用以执行与升级固件122关联的升级程序120。在一些实施例中,主机12可例如为个人计算机,且可通过电子设备10的传输接口104与电子设备10电性连接并进行通讯。此外,在特定实施例中,升级固件122可储存在主机12中,且升级固件122可包括一循环冗余校验(Cyclic redundancy check,CRC)值。详细而言,不论是在主机12端或是电子设备10端,在生成新的固件档案时,可通过代码表的方式把固件档案中的最后一位(BYTE)的位置保留(例如,填入值0xFF),以用于填写整个固件档案的CRC校验值。新的固件档案生成后,可例如用生成多项式X8+X2+X+1执行CRC循环冗余校验,以产生一位的CRC校验值,并写入到固件档案的最后一位。
可进一步参考图2,其为本发明实施例的存储模块的配置示意图。如图2所示,开机区Boot储存有开机程序A,第一用户代码区User1及第二用户代码区User2各储存有初始固件B1及B2,其中之一作为固件运行区,用来存放正常运行的固件档案,另一个则作为固件备份区,用来备份以及等待固件升级。
另外,旗标区Flag用于储存有多个升级辅助变量,特定而言,旗标区Flag可进一步包括第一用户旗标区F1及第二用户旗标区F2,分别储存对应于第一用户代码区User1及第二用户代码区User2的多个升级辅助变量。例如,第一用户旗标区F1可储存对应于第一用户代码区User1的执行优先度F11、开始升级旗标F12及升级完成旗标F13,第二用户旗标区F2可储存对应于第二用户代码区User2的执行优先度F21、开始升级旗标F22及升级完成旗标F23。执行优先度F11及F21可命名为RunPriority,开始升级旗标F12及F22可命名为StartFlag,用于表示升级开始,升级完成旗标F13及F23可命名为DoneFlag,用于表示升级结束。
在一些实施例中,执行优先度F11及F21中的值可决定当前的固件运行区及固件备份区。举例而言,当第一用户代码区User1对应的执行优先度F11的值大于第二用户代码区User2对应的执行优先度F21的值时,第一用户代码区User1为当前的固件运行区,第二用户代码区User2为固件备份区。当第一用户代码区User1对应的执行优先度F11的值小于第二用户代码区User2对应的执行优先度F21的值时,第一用户代码区User1为固件备份区,第二用户代码区User2为当前的固件运行区。一般而言,第一用户代码区User1及第二用户代码区User2的储存空间相同。
请参考图3,其为本发明实施例的开机程序的流程图。如图3所示,处理单元100经配置以执行开机程序A,其包括下列步骤:
步骤S100:在开机区Boot导入初始固件B1或B2。
步骤S102:依据执行优先度F11、F21,将第一用户代码区User1及第二用户代码区User2分别判断为固件运行区及固件备份区。
步骤S103:选择以固件运行区的初始固件执行固件主程序。
请进一步参照图4,其为本发明实施例的固件升级流程的流程图。在本发明中,固件主程序须与升级程序协同执行升级流程,如图4所示,升级流程包括下列步骤:
步骤S200:主机12从电子设备10获取初始固件B1或B2的固件版本。
步骤S201:判断固件版本是否小于升级固件122的版本。响应于初始固件B1或B2的固件版本小于升级固件122的版本,则升级流程进入步骤S202,主机12向电子设备10传送后台固件升级请求。响应于初始固件B1或B2的固件版本大于或等于升级固件122的版本,则升级流程结束。
在此步骤中,主机12可通过电子设备10的传输接口104获取升级请求结果,传输接口104可例如为I2C接口,但本发明不限于此。具体而言,在此步骤中,主机12可先通过传输接口104向电子设备10传送一获取当前固件版本请求,而处理单元100回复初始固件B1或B2的固件版本,而主机12进一步判断固件版本是否小于升级固件的版本。若固件版本小于升级固件122的版本,主机12再通过传输接口104向电子设备10传送前述的后台固件升级请求。
步骤S203:处理单元100依据电子设备10的运作状态回复升级请求结果。其中,升级请求结果用于指示电子设备10是处在闲置状态或忙碌状态。
举例而言,升级请求结果可例如是一位(BYTE)的状态值。此状态值的定义有三种:0xBB、0x11及0x12。0xBB可用于表示电子设备10的系统正处于忙碌状态,不能处理任何请求,0x11可用于表示电子设备10的系统正处于闲置状态,并且操作成功,0x12可用于表示电子设备10的系统正处于闲置状态,但是操作失败。
响应于升级请求结果指示电子设备10处在忙碌状态,则升级流程重复执行此步骤,直到升级请求结果指示电子设备10处在闲置状态,进入步骤S204。举例来说,当升级程序读取到的请求状态值为0xBB,则继续读取电子设备10的状态值,直到请求结果为0x11、0x12或到达一预定响应时间。如果最后状态值为0x12或者TimeOut时间到达则表示这次请求失败,结束本次升级程序等待下次升级更新。如果状态值为0x11则这次请求成功。
在一些实施例中,可通过配置电子设备10的处理器100进一步执行一中断程序,并与固件主程序协同运作,以达成上述步骤。请参考图5,其为根据本发明实施例的固件主程序及中断程序的程序流程图。如图5所示,固件主程序基本上优先进行电子设备10的功能处理,之后才进行后台固件的升级处理,而当固件主程序正在进行电子设备10的功能处理时,若中断程序收到来自主机12的后台固件升级请求,则回复升级请求结果以指示电子设备10正处在忙碌状态。升级请求结果可以是上述用于表示请求状态值为忙碌的0xBB。
响应于升级请求结果指示电子设备处在闲置状态,则升级流程进入步骤S204,处理单元100进一步判断电子设备10是否处在系统闲置状态。
详细而言,此步骤主要为了检测当前电子设备10的系统是否处在忙碌状态。其原因在于,在固件升级过程中,会对存储模块102的区块进行抹除及写入操作,而在这些操作期间,存储模块102是无法动作的。为避免在固件升级过程中,因为存储模块102无法动作而影响电子设备10的使用功能,特设计此步骤。
如图2所示,旗标区Flag中还设定有一系统状态旗标F3,此步骤中,处理单元100可进一步检测系统状态旗标F3,以判断电子设备10是否处在系统闲置状态。如果系统状态旗标F3指示处在系统闲置状态时,才执行固件升级请求,否则将此固件升级请求设定为待处理,等待下次处理。
其中,系统状态旗标F3包括对应于多个功能指令指针(Instruction pointer,IP)的多个子状态旗标,这些功能指令指针是对应于在存储模块102的区块进行抹除时,需要初始固件B1或B2响应进行处理的功能。只有在所有的子状态旗标指示该些功能指令指针均为闲置时,系统状态旗标F3才指示电子设备10处在系统闲置状态,否则系统状态旗标F3指示电子设备10处在系统忙碌状态。
在一些实施例中,功能指令指针将子状态旗标设定为忙碌时,会同时通知需要的处理时间(此处理时间可用作限定时间),直到需要初始固件B1或B2响应进行处理的功能均执行完毕时,将该些子状态旗标均设定为闲置,或是到达限定时间子状态旗标自动设定为闲置,系统状态旗标F3才指示电子设备10处在系统闲置状态。
响应于处理单元100判断电子设备10处在系统闲置状态,则升级流程进入步骤S205:处理单元100检测执行优先度F11及F21,以判断第一用户代码区User1及第二用户代码区User2如何分配给固件运行区及固件备份区,并将固件备份区设定为当前升级区。
详细而言,当系统状态旗标F3指示电子设备10处在系统闲置状态时,如图2所示,处理单元100可通过修改一后台固件升级旗标F4的状态值,以表示开启后台固件升级功能。在固件升级过程中,如果出现断电后又重新启动的情况,而升级程序又无从得知电子设备10有重新启动,可能会继续发送其他升级请求。此时,其他升级请求会先判断这个后台固件升级旗标F4的状态值,如果后台固件升级旗标F4指示后台固件升级功能并未开启,则表示并未进行后台固件升级,而可得知此时发送的其他升级请求是错误的。在本实施例中,后台固件升级旗标F4在系统重启后会恢复为初始值,也就是未开启后台固件升级功能,由此让升级程序得以判断电子设备10是否有重新启动,然而,其他的旗标在系统重启后的值可维持不变。
在此步骤中,若当前的固件运行区为第一用户代码区User1,则将目前作为固件备份区的第二用户代码区User2设定为当前升级区,反之亦然。
此外,响应于处理单元100将固件备份区设定为当前升级区,处理单元100据此将多个升级辅助变量中对应固件备份区的用户旗标区的开始升级旗标F12或F22进行修改,以指示开始升级状态。举例而言,此时当前升级区假设为第二用户代码区User2,则将第二用户旗标区F2的开始升级旗标F22及升级完成旗标F23的状态值清空,并将开始升级旗标F22修改为指示开始升级状态(例如True),并回复操作结果给升级程序。
步骤S206:主机12向电子设备10传送写入固件数据请求,以配置处理单元对该当前升级区执行擦除操作,并将升级固件的数据写入当前升级区。
详细而言,在本步骤中,当升级程序得到电子设备10已经将开始升级旗标F22修改为指示开始升级状态的操作结果,主机10进一步将升级固件122的数据分为多笔数据,同时附带于写入固件数据请求,并多次向电子设备10传送写入固件数据请求。
类似的,前述的中断程序可协助判断此时电子设备10处在闲置状态或忙碌状态,并回复对应的电子设备10的请求状态值。若电子设备10正在忙碌状态下,则等待固件主程序进行功能处理后,再响应写入固件数据请求将升级固件122的数据写入。
响应于电子设备10接收到写入固件数据请求,且在处理单元100对当前升级区执行擦除操作前,处理单元100进一步判断当前升级区是否执行过该擦除操作。
详细而言,当前升级区可分为多个区块,且可用变量表示上一次擦除过的区块所在的Bank及Sector位置。举例而言,可用两位(BYTE)来作为变量,高BYTE为擦除过的Bank的代码,低BYTE为Sector的代码,初始值为0xFFFF。根据当前要写入数据的存储模块102的位置计算出当前写入数据所在的当前Bank和当前Sector与上一次擦除的Bank及Sector进行比较。如果当前Bank与上次擦除的Bank相同,并且当前Sector与上次擦除Sector相同,这表示该Sector已经擦除过,不需要擦除。反之则需要擦除。
若处理单元100判断当前升级区执行过擦除操作,则直接将升级固件122的数据写入当前升级区,否则依据原步骤指示将当前升级区进行擦除,接着,将升级固件122的数据写入当前升级区。如先前所述,主机12会将升级固件122的数据分为多笔数据附带于写入固件数据请求,并多次向电子设备传送写入固件数据请求。
举例而言,每个写入固件数据请求可包括32位的升级固件122的数据,而响应于每个写入固件数据请求,处理单元100将多笔数据写入当前升级区的多个储存区域,每当这些数据的其中一笔完成写入该些储存区域的其中之一时,读取写入的该笔数据,并执行一循环冗余校验(CRC)操作,以与所写入的该笔数据比较,以确认所写入的该笔数据的正确性。
详细而言,执行CRC操作也就是对本次写入到存储模块102的数据和已写入数据的CRC值(初始值为0)用生成多项式X8+X2+X+1进行循环冗余校验,以计算出一个新的CRC值。需要注意的是,当判断到所写入数据的最后一笔时,需要把最后一个BYTE记录到一个全局变量(例如可称为FileCRC)中,然后将此BYTE值替换为0xFF,以计算CRC值。如果CRC的比较不一致,则电子设备10回复给升级程序指示操作失败的一操作结果。
步骤S207:响应于升级固件122的数据写入完毕,处理单元100向主机12回复用于指示升级操作成功的操作结果。
在此步骤中,升级程序判断所收到的操作结果,响应于操作结果指示升级操作成功,主机12向电子设备10发送结束后台更新请求。
可进一步参考图6,其为本发明实施例的升级流程的另一流程图。当固件主程序收到结束后台更新请求后,电子设备10进行以下操作:
步骤S300:检查后台固件升级旗标F4是否指示开启后台固件升级功能,如果不是则返回请求失败。
步骤S301:检测电子设备10的系统是否为忙碌状态,如果为忙碌状态则等到下次循环再执行。
步骤S302:比较全局变量(FileCRC)及由所储存的所有固件数据所计算得到的CRC做比对,如果不一致则返回操作失败。
步骤S303:将升级完成旗标F13或F23修改为指示升级完成。
步骤S304:将后台固件升级旗标F4修改为关闭后台固件升级功能,以表示后台固件升级程序结束。
步骤S305:返回操作结果给升级程序。
于此,升级程序结束。
于升级程序结束后,可参照图7,其为本发明实施例的后台固件升级方法的流程图,进一步进行以下流程:
步骤S400:电子设备重新启动,处理单元执行开机程序以判断第一用户代码区及第二用户代码区中的哪一个已经进行升级,据此修改执行优先度。
步骤S401:处理单元依据修改后的执行优先度,选择以固件运行区中,已升级的初始固件执行另一固件主程序。
后台固件升级成功后,等电子设备10重新启动后,开机程序会根据开始升级旗标F12或F22,以及升级完成旗标F13或F23的状态值判断第一用户代码区User1及第二用户代码区User2中的何者已经进行升级,进而修改执行优先度F11或F21的状态值,并跳转到已更新固件的用户代码区执行固件数据,而原先的固件运行区转为固件备份区。因此,在整个固件升级过程中,电子设备10的功能都不受影响。
【实施例的有益效果】
本发明提供的可后台升级固件的系统及后台升级固件方法,可将电子设备的存储模块进行分区,一个用户代码区用来正常执行固件及升级流程,另一个用户代码区用来存放升级固件,避免在升级过程中写入存储模块时,对初始固件造成影响。此外,在升级过程不需要暂停电子设备的各项操作,可以在电子设备的正常运行过程中完成升级。
此外,在升级流程中,对升级固件的数据进行了可靠性检查,且在上述流程的实施过程中,只要存储模块本身不出现问题,即便是固件升级失败,也不会造成电子设备无法正常使用。
以上所公开的内容仅为本发明的优选可行实施例,并非因此局限本发明的申请专利范围,所以凡是运用本发明说明书及附图内容所做的同等技术变化,均包含于本发明的申请专利范围内。
【符号说明】
可后台升级固件的系统:1
电子设备:10
处理单元:100
存储模块:102
开机区:Boot
第一用户代码区:User1
第二用户代码区:User2
旗标区:Flag
开机程序:A
初始固件:B1、B2
第一用户旗标区:F1
第二用户旗标区:F2
执行优先度:F11、F21
开始升级旗标:F12、F22
升级完成旗标:F13、F23
系统状态旗标:F3
后台固件升级旗标:F4
主机:12
升级固件:122
升级程序:120
Claims (10)
1.一种后台固件升级方法,适用于一电子设备,所述电子设备包括一处理单元及一存储模块,所述后台固件升级方法包括下列步骤:
配置所述电子设备的所述处理单元执行一开机程序,其中所述存储模块包括一开机区、一第一用户代码区、一第二用户代码区及一旗标区,且所述开机区储存有所述开机程序,所述第一用户代码区及所述第二用户代码区各储存有一初始固件,所述旗标区储存有多个升级辅助变量,所述开机程序包括:
在所述开机区导入所述初始固件;
依据所述些升级辅助变量中的一执行优先度,将所述第一用户代码区及所述第二用户代码区分别判断为一固件运行区及一固件备份区;及
选择以所述固件运行区的所述初始固件执行一固件主程序;
配置连接于所述电子设备的一主机执行关联于一升级固件的一升级程序,其中所述固件主程序及所述升级程序协同执行一升级流程,所述升级流程包括:
所述主机从所述电子设备获取所述初始固件的一固件版本,并判断所述固件版本是否小于所述升级固件的版本;
响应于所述固件版本小于所述升级固件的版本,所述主机向所述电子设备传送一后台固件升级请求;
所述处理单元依据所述电子设备的运作状态回复一升级请求结果,其中所述升级请求结果用于指示所述电子设备是处在一闲置状态或一忙碌状态;
响应于所述升级请求结果指示所述电子设备处在所述闲置状态,所述处理单元进一步判断所述电子设备是否处在一系统闲置状态;
响应于所述处理单元判断所述电子设备处在所述系统闲置状态,所述处理单元检测所述执行优先度,以判断所述第一用户代码区及所述第二用户代码区如何分配给所述固件运行区及所述固件备份区,并将所述固件备份区设定为一当前升级区;
所述主机向所述电子设备传送一写入固件数据请求,以配置所述处理单元对所述当前升级区执行一擦除操作,并将所述升级固件的数据写入所述当前升级区;及
响应于所述升级固件的数据写入完毕,所述处理单元向所述主机回复用于指示一升级操作成功的一操作结果;
待所述电子设备重新启动后,所述处理单元执行所述开机程序以判断所述第一用户代码区及所述第二用户代码区中的何者已经进行升级,据此修改所述执行优先度;以及
所述处理单元经配置以依据修改后的所述执行优先度,选择以所述固件运行区中,已升级的所述初始固件执行另一固件主程序。
2.根据权利要求1所述的后台固件升级方法,其特征在于,所述主机系通过所述电子设备的一传输接口获取所述升级请求结果,且所述升级流程还包括:
所述主机通过所述传输接口向所述电子设备传送一获取当前固件版本请求;
所述处理单元回复所述初始固件的所述固件版本;
所述主机判断所述固件版本是否小于所述升级固件的版本;以及
响应于所述固件版本小于所述升级固件的版本,所述主机通过所述传输接口向所述电子设备传送所述后台固件升级请求。
3.根据权利要求1所述的后台固件升级方法,其特征在于,所述升级流程还包括:
响应于所述升级请求结果指示所述电子设备处在所述闲置状态,所述处理单元检测所述些升级辅助变量中的一系统状态旗标,以判断所述电子设备是否处在所述系统闲置状态;以及
响应于所述系统状态旗标指示所述电子设备处在所述系统闲置状态,所述处理单元开启一后台固件升级功能。
4.根据权利要求3所述的后台固件升级方法,其特征在于,所述系统状态旗标包括对应于多个功能指令指针的多个子状态旗标,且在所述些子状态旗标指示所述些功能指令指针均为闲置时,所述系统状态旗标才指示所述电子设备处在所述系统闲置状态。
5.根据权利要求1所述的后台固件升级方法,其特征在于,所述升级流程还包括:
响应于所述处理单元将所述固件备份区设定为所述当前升级区,所述处理单元据此将所述些升级辅助变量中对应所述固件备份区的一用户旗标区的一开始升级旗标修改以指示一开始升级状态。
6.根据权利要求5所述的后台固件升级方法,其特征在于,所述升级流程还包括:
响应于所述升级固件的数据写入完毕,所述主机向所述电子设备传送一结束后台升级请求;以及
响应于接收到所述结束后台升级请求,所述处理单元检测所述后台固件升级功能是否开启,若是,则所述处理单元将所述些升级辅助变量中对应所述固件备份区的所述用户旗标区的一升级完成旗标修改以指示一升级完成状态,并向所述主机回复所述操作结果。
7.根据权利要求1所述的后台固件升级方法,其特征在于,所述升级固件系储存在所述主机中,且所述升级固件包括一循环冗余校验值。
8.根据权利要求7所述的后台固件升级方法,其特征在于,所述升级流程还包括:
响应于所述电子设备接收到所述写入固件数据请求,所述处理单元对所述当前升级区执行所述擦除操作前,所述处理单元进一步判断所述当前升级区是否执行过所述擦除操作;以及
若所述处理单元判断所述当前升级区执行过所述擦除操作,则直接将所述升级固件的数据写入所述当前升级区。
9.根据权利要求7所述的后台固件升级方法,其特征在于,所述升级流程还包括:
所述主机将所述升级固件的数据分为多笔数据附带于所述写入固件数据请求,并多次向所述电子设备传送所述写入固件数据请求。
10.一种可后台升级固件的系统,其包括:
一电子设备,其包括:
一处理单元;以及
一存储模块,包括:
一开机区,储存有一开机程序;
一第一用户代码区及一第二用户代码区,各储存有一初始固件;以及
一旗标区,储存有多个升级辅助变量;以及
一主机,经配置以执行与一升级固件关联的一升级程序,
其中所述处理单元经配置以执行所述开机程序,其包括:
在所述开机区导入所述初始固件;
依据所述些升级辅助变量中的一执行优先度,将所述第一用户代码区及所述第二用户代码区分别判断为一固件运行区及一固件备份区;以及
选择以所述固件运行区的所述初始固件执行一固件主程序;
其中所述固件主程序及与所述升级程序协同执行一升级流程,所述升级流程包括:
所述主机从所述电子设备获取所述初始固件的一固件版本,并判断所述固件版本是否小于所述升级固件的版本;
响应于所述固件版本小于所述升级固件的版本,所述主机向所述电子设备传送一后台固件升级请求;
所述处理单元依据所述电子设备的运作状态回复一升级请求结果,其中所述升级请求结果用于指示所述电子设备是处在一闲置状态或一忙碌状态;
响应于所述升级请求结果指示所述电子设备处在所述闲置状态,所述处理单元进一步判断所述电子设备是否处在一系统闲置状态;
响应于所述处理单元判断所述电子设备处在所述系统闲置状态,所述处理单元检测所述执行优先度,以判断所述第一用户代码区及所述第二用户代码区如何分配给所述固件运行区及所述固件备份区,并将所述固件备份区设定为一当前升级区;
所述主机向所述电子设备传送一写入固件数据请求,以配置所述处理单元对所述当前升级区执行一擦除操作,并将所述升级固件的数据写入所述当前升级区;以及
响应于所述升级固件的数据写入完毕,所述处理单元向所述主机回复用于指示一升级操作成功的一操作结果;
其中,待所述电子设备重新启动后,所述处理单元执行所述开机程序以判断所述第一用户代码区及所述第二用户代码区中的何者已经进行升级,据此修改所述执行优先度;
其中所述处理单元经配置以依据修改后的所述执行优先度,选择以所述固件运行区中,已升级的所述初始固件执行另一固件主程序。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010156457.7A CN113377392B (zh) | 2020-03-09 | 2020-03-09 | 可后台升级固件的系统及后台升级固件方法 |
TW109108735A TWI743709B (zh) | 2020-03-09 | 2020-03-17 | 可後台升級韌體的系統及後台升級韌體方法 |
US17/109,268 US11474805B2 (en) | 2020-03-09 | 2020-12-02 | System capable of upgrading firmware in background and method for upgrading firmware in background |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010156457.7A CN113377392B (zh) | 2020-03-09 | 2020-03-09 | 可后台升级固件的系统及后台升级固件方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113377392A true CN113377392A (zh) | 2021-09-10 |
CN113377392B CN113377392B (zh) | 2024-03-29 |
Family
ID=77556719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010156457.7A Active CN113377392B (zh) | 2020-03-09 | 2020-03-09 | 可后台升级固件的系统及后台升级固件方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11474805B2 (zh) |
CN (1) | CN113377392B (zh) |
TW (1) | TWI743709B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114697214A (zh) * | 2022-03-31 | 2022-07-01 | 四川虹美智能科技有限公司 | 动态配置升级包实现智能设备指定升级的系统及方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115220758B (zh) * | 2022-06-24 | 2023-06-02 | 武汉联特科技股份有限公司 | 一种单片机固件在线升级的方法 |
CN116302011B (zh) * | 2023-05-24 | 2023-08-18 | 广东电网有限责任公司佛山供电局 | 一种电缆监测设备固件升级方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7512749B2 (en) * | 2003-06-30 | 2009-03-31 | Intel Corporation | Safe software revision for embedded systems |
CN103853565A (zh) * | 2012-11-28 | 2014-06-11 | 京信通信系统(中国)有限公司 | 基于arm的固件升级方法和装置 |
CN105988951A (zh) * | 2015-02-12 | 2016-10-05 | 瑞昱半导体股份有限公司 | 存储器控制器及相关的控制方法 |
CN106095480A (zh) * | 2016-05-31 | 2016-11-09 | 青岛海信宽带多媒体技术有限公司 | 一种光模块固件升级的方法及装置 |
CN108108174A (zh) * | 2016-11-24 | 2018-06-01 | 青岛海信宽带多媒体技术有限公司 | 光模块及其固件升级的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI259974B (en) | 2004-09-16 | 2006-08-11 | Mediatek Inc | Optical disk drive capable of updating firmware and firmware updating method thereof |
TWI363298B (en) * | 2008-02-29 | 2012-05-01 | Hon Hai Prec Ind Co Ltd | Communication device and firmware update method thereof |
TWI384367B (zh) * | 2008-12-31 | 2013-02-01 | Askey Computer Corp | 韌體更新系統及方法 |
CN102270144B (zh) * | 2010-06-04 | 2014-12-10 | 鸿富锦精密工业(深圳)有限公司 | 嵌入式网络设备及其更新固件的方法 |
TW201301133A (zh) | 2011-06-29 | 2013-01-01 | Universal Scient Ind Shanghai | 可修復韌體的用戶端設備及其韌體修復方法 |
US20190087174A1 (en) * | 2017-09-21 | 2019-03-21 | Western Digital Technologies, Inc. | Background firmware update |
-
2020
- 2020-03-09 CN CN202010156457.7A patent/CN113377392B/zh active Active
- 2020-03-17 TW TW109108735A patent/TWI743709B/zh active
- 2020-12-02 US US17/109,268 patent/US11474805B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7512749B2 (en) * | 2003-06-30 | 2009-03-31 | Intel Corporation | Safe software revision for embedded systems |
CN103853565A (zh) * | 2012-11-28 | 2014-06-11 | 京信通信系统(中国)有限公司 | 基于arm的固件升级方法和装置 |
CN105988951A (zh) * | 2015-02-12 | 2016-10-05 | 瑞昱半导体股份有限公司 | 存储器控制器及相关的控制方法 |
CN106095480A (zh) * | 2016-05-31 | 2016-11-09 | 青岛海信宽带多媒体技术有限公司 | 一种光模块固件升级的方法及装置 |
CN108108174A (zh) * | 2016-11-24 | 2018-06-01 | 青岛海信宽带多媒体技术有限公司 | 光模块及其固件升级的方法 |
Non-Patent Citations (1)
Title |
---|
刘兆庆,陈长春,彭宇: "LXI仪器固件远程升级设计与实现", 《测控技术》, vol. 31, no. 7, 29 October 2012 (2012-10-29), pages 1 - 4 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114697214A (zh) * | 2022-03-31 | 2022-07-01 | 四川虹美智能科技有限公司 | 动态配置升级包实现智能设备指定升级的系统及方法 |
CN114697214B (zh) * | 2022-03-31 | 2023-08-15 | 四川虹美智能科技有限公司 | 动态配置升级包实现智能设备指定升级的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US11474805B2 (en) | 2022-10-18 |
TW202134858A (zh) | 2021-09-16 |
CN113377392B (zh) | 2024-03-29 |
US20210279048A1 (en) | 2021-09-09 |
TWI743709B (zh) | 2021-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113377392B (zh) | 可后台升级固件的系统及后台升级固件方法 | |
US7322029B2 (en) | Method and system for recovering program code in a computer system | |
US6401198B1 (en) | Storing system-level mass storage configuration data in non-volatile memory on each mass storage device to allow for reboot/power-on reconfiguration of all installed mass storage devices to the same configuration as last use | |
US6282647B1 (en) | Method for flashing a read only memory (ROM) chip of a host adapter with updated option ROM bios code | |
US9286164B2 (en) | Electronic device to restore MBR, method thereof, and computer-readable medium | |
KR100417778B1 (ko) | 서로 다른 컴퓨터 상에서 동시에 실행되는 동일 디스크상의 다수의 운영 체제를 지원하는 방법 및 시스템 | |
KR100415371B1 (ko) | 컴퓨터 | |
EP1387284A2 (en) | Computer system with nand flash memory for booting and data storage | |
US20070094456A1 (en) | Storage system and storage control method | |
US20120185841A1 (en) | Computer system and program restoring method thereof | |
CN106445398B (zh) | 一种基于新型存储器的嵌入式文件系统及其实现方法 | |
JPH06187133A (ja) | オペレーティングシステムのロードシステム、装置接続検出システム、及びオペレーティングシステムローダ決定方法 | |
JPH1124943A (ja) | 計算機再起動方法および計算機停止方法 | |
US20080114923A1 (en) | Apparatus and method for controlling operation processing in nonvolatile memory | |
US20100169546A1 (en) | Flash memory access circuit | |
CN115113905A (zh) | 固件升级方法和固件升级装置 | |
CN110825421B (zh) | 一种固件升级方法、系统及可读存储介质 | |
CN110737455A (zh) | 固件的更新方法、装置及电子设备 | |
JP4735765B2 (ja) | Linuxプログラム起動システム | |
CN113778485A (zh) | 电子芯片的系统运行方法、装置、电子芯片和存储介质 | |
CN117687663B (zh) | 基于ota的分区动态调整方法、装置、设备及存储介质 | |
CN102023873A (zh) | 应用程序执行方法与系统、存储媒体控制器及存储装置 | |
CN112650513B (zh) | 程序升级方法、装置、计算机设备和存储介质 | |
JP5699665B2 (ja) | サーバ装置、処理実行方法およびプログラム | |
CN114281385A (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 |