CN103425549A - 嵌入式控制器的固件管理方法及系统 - Google Patents
嵌入式控制器的固件管理方法及系统 Download PDFInfo
- Publication number
- CN103425549A CN103425549A CN2012101597769A CN201210159776A CN103425549A CN 103425549 A CN103425549 A CN 103425549A CN 2012101597769 A CN2012101597769 A CN 2012101597769A CN 201210159776 A CN201210159776 A CN 201210159776A CN 103425549 A CN103425549 A CN 103425549A
- Authority
- CN
- China
- Prior art keywords
- workspace
- firmware
- embedded controller
- backup area
- code
- 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
Images
Landscapes
- Storage Device Security (AREA)
Abstract
一种嵌入式控制器的固件管理方法,所述方法包括:从FlashROM的保护区获取工作区的位置;检查工作区是否损坏,若是,则从工作区中读取并执行固件代码,若否,则从FlashROM的保护区获取备份区的位置,并从备份区将固件代码恢复至工作区。本发明还公开了一种嵌入式控制器的固件管理系统。根据本发明的技术方案,可以在对嵌入式控制器的固件刷新或升级失败后,自动恢复备份的固件,避免嵌入式控制器因使用者不当或者不慎的操作致使其固件损坏而无法正常工作。
Description
技术领域
本发明涉及固件管理领域,特别是涉及一种嵌入式控制器的固件管理方法及系统。
背景技术
笔记本电脑因其良好的携带性及移动性,越来越来普及。嵌入式控制器(Embedded Controller)在笔记本电脑中有着相当重要的作用,用于控制主要I/O(输入输出)的周边设备,例如:键盘、鼠标、触控板等,嵌入式控制器中一般内建某种型号的微处理器(如8032),可以让笔记本电脑完成各种复杂的ACPI电源管理(包括风扇控制管理)等等。嵌入式控制器除了本身硬件之外,还需要固件(Firmware,又称微代码或韧体),这个部分主要由嵌入式控制器厂商和几大BIOS生产公司(如Phonix等)配合开发完成。
笔记本电脑在设计调试阶段或者出厂后,嵌入式控制器厂商或BIOS生产公司需要通过更新嵌入式控制器的固件来修正或添加一些系统上的功能,所以会在网络上发布有关嵌入式控制器的最新版本固件,让使设计研发人员或消费使用者自行下载并更新嵌入式控制器的固件。但大部分的消费使用者都非专业人士,所以常常在自行更新嵌入式控制器的固件时因为不小心操作错误或没注意到更新的环境而导致固件被破坏,最后导致系统无法再开机。在笔记本电脑的设计调试过程中,也常常发生因为嵌入式控制器烧入过程中发生错误而导致笔记本电脑无法正常开机的状况,这时就需要额外的人力来拆除机器,并透过专门的烧入工具来重新烧入固件。
发明内容
鉴于以上内容,有必要提供一种安全可靠、简单易用的嵌入式控制器的固件管理方法及系统。
一种嵌入式控制器的固件管理方法,所述方法包括:
从Flash ROM的保护区获取工作区的位置;
检查工作区是否损坏,若是,则从工作区中读取并执行固件代码,若否,则从Flash ROM的保护区获取备份区的位置,并从备份区将固件代码恢复至工作区。
优选地,所述检查工作区是否损坏的步骤包括:检查工作区中是否包含一预定义代码,若是,则确定工作区没有损坏,若否,则确定工作区损坏。
优选地,所述方法还包括:从备份区将固件代码恢复至工作区后,在工作区里写入所述预定义代码。
优选地,所述方法还包括:启动嵌入式控制器后,将Flash ROM中的保护区和备份区设置为写保护。
优选地,所述方法在从备份区将固件代码恢复至工作区之前还包括:从备份区读取一压缩包,对该压缩包进行解压后获得固件代码。
一种嵌入式控制器的固件管理系统,所述系统包括:
工作区获取模块,用于从Flash ROM的保护区获取工作区的位置;
工作区检查模块,用于检查工作区是否损坏,
固件执行模块,用于当工作区没有损坏时,从工作区中读取并执行固件代码;
备份区获取模块,用于当工作区损坏若时,从Flash ROM的保护区获取备份区的位置;及
固件恢复模块,用于当工作区损坏时,从备份区将固件代码恢复至工作区。
优选地,所述工作区检查模块,用于检查工作区中是否包含一预定义代码,若是,则确定工作区没有损坏,若否,则确定工作区损坏。
优选地,所述系统还包括预定义代码写入模块,用于从备份区将固件代码恢复至工作区后,在工作区里写入所述预定义代码。
优选地,所述系统还包括写保护模块,用于在嵌入式控制器启动后,将Flash ROM中的保护区和备份区设置为写保护。
优选地,所述系统还包括解压缩模块,用于在从备份区将固件代码恢复至工作区之前,从备份区读取一压缩包,对该压缩包进行解压后获得固件代码。
与现有技术相比,上述固件管理方法及系统,藉由从Flash ROM的保护区获取工作区的位置,再检查工作区是否损坏,若是,则从工作区中读取并执行固件代码,若否,则从Flash ROM的保护区获取备份区的位置,并从备份区将固件代码恢复至工作区,这样,即使是使用者因操作不当使所述工作区被严重损坏,导致固件代码无法正常工作,也可以自动从备份区将固件代码恢复至工作区,使嵌入式控制器可以应对恶劣的固件刷新环境。
附图说明
图1为本发明一种实施方式中的用于笔记本电脑中的嵌入式控制器和Flash ROM。
图2为本发明一种实施方式中的用于管理嵌入式控制器的固件的方法流程图。
图3为本发明一种实施方式中的嵌入式控制器的固件管理系统的功能框图。
主要元件符号说明
嵌入式控制器 | 10 |
Flash ROM | 20 |
保护区 | 22 |
工作区 | 24 |
备份区 | 26 |
固件管理系统 | 30 |
初始化模块 | 301 |
写保护模块 | 302 |
工作区获取模块 | 303 |
工作区检查模块 | 304 |
固件执行模块 | 305 |
备份区获取模块 | 306 |
解压缩模块 | 307 |
固件恢复模块 | 308 |
预定义代码写入模块 | 309 |
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
请参阅图1,图中示意性的示出了根据本发明一种实施方式的用于笔记本电脑中的一嵌入式控制器10和一Flash ROM(闪速存储器)20,所述嵌入式控制器10用于控制笔记本电脑的主要I/O的周边设备,所述Flash ROM 20用于存储所述嵌入式控制器10的固件代码,所述固件代码用于指令所述嵌入式控制器10执行和完成多项操作。
在图1所示的Flash ROM 20中,建立了三个区块,分别为保护区22、工作区24和备份区26。
所述保护区22用于存储所述工作区24和所述备份区26的位置,这里所讲的位置是指区块的起始地址和结束地址。所述保护区22设定为严格保护的区域,所述嵌入式控制器10每次被启动后,所述保护区22都立即被锁定为写保护,这样可以避免使用者因不当的操作将所述保护区22内的数据清除,从而使得即时在非常恶劣的环境下(比如使用者刷新固件失败),也可以从所述保护区22读取到存储于该区块的完整数据。考虑到只是存储所述工作区24和所述备份区26的位置以及所述Flash ROM 20自身并不充裕的存储空间,在一实施方式中,所述保护区22的大小设定为16千字节。
所述工作区24用于存储所述嵌入式控制器10的固件代码,还可用于作为所述嵌入式控制器10运行时的存储空间。所述工作区24作为所述嵌入式控制器10的固件存放位置,因此所述工作区24是在对所述嵌入式控制器10的固件进行刷新升级时的直接操作对象,也因此是最易被损坏的区块,一旦使用者在刷新或升级固件时出现错误操作,所述工作区24内的数据就会被破坏,使得所述嵌入式控制器10无法正常工作。在一实施方式中,在所述工作区24内预设一段预定义代码,用以指示所述工作区24是否完整,如果所述工作区24内可以正确读取到所述预定义代码,则表明所述工作区24没有损坏,其中存储的固件代码也可以正常使用,如果所述工作区24内无法找到所述预定义代码,则表明所述工作区24已经因某些操作被损坏,其中存储的固件代码已经变得不可靠或者不可用。在向所述工作区24刷入固件时,一般都是从所述工作区24的起始地址开始的,所以为了更好的指示所述工作区24在刷入固件时没有出现错误,在本实施方式中,所述预定义代码存放于所述工作区24的最前面区域,也就是靠近所述工作区24起始地址的区域。这样,刷新固件的操作辅一开始,所述预定义代码就被清除掉,当刷新固件的操作完全成功之后,再向所述工作区24写入所述预定义代码,如果刷新固件的操作已经开始但没有成功完成,则所述预定义代码不会被写入到所述工作区24,进而,所述嵌入式控制器10在所述工作区24中找不到所述预定代码,就会认定所述工作区24已损坏,其中的固件代码不可靠或不可用。
所述备份区26用于存储固件代码的备份,当所述工作区24损坏无法提供正确完整的固件代码时,可以将存储于所述备份区26中的固件代码恢复至所述工作区24。为减小固件代码的备份所占空间,固件代码的备份被压缩后以压缩包的形式存储于所述备份区26,当需要从所述备份区26恢复固件代码时,先将该压缩包解压缩从中获得固件代码。当所述固件代码被成功恢复至所述工作区24后,再向所述工作区24写入所述预定义代码,指示所述工作区24已经恢复正常工作。所述备份区26设定为严格保护的区域,所述嵌入式控制器10每次被启动后,所述备份区26都立即被锁定为写保护,这样可以避免使用者因不当的操作将所述备份区26内的数据清除,从而使得即时在非常恶劣的环境下(比如使用者刷新固件失败),也可以从所述备份区26读取到存储于该区块的完整数据。
请参阅图2,图中示意性的示出了根据本发明一种实施方式的用于管理所述嵌入式控制器10的固件的方法流程图,所述方法包括以下步骤:
步骤S201,启动所述嵌入式控制器10,并初始化所述嵌入式控制器10,包括所述嵌入式控制器10的上电和自检。
步骤S202,设置所述保护区22为写保护,防止对所述保护区22进行写操作。
步骤S203,从所述保护区22获取所述工作区24和所述备份区26的位置。
步骤S204,设置所述备份区26为写保护,防止对所述备份区26进行写操作。
步骤S205,检查所述工作区24中是否包含所述预定义代码,若是,则进入步骤S206,若否,则进入不收S207。
步骤S206,从所述工作区24中读取固件代码,并执行该固件代码。
步骤S207,将所述备份区26中的压缩包解压缩,获得固件代码。
步骤S208,将从所述备份区26获得的固件代码恢复至所述工作区24。
步骤S209,向所述工作区24写入所述预定义代码,然后返回步骤S201,重新启动所述嵌入式控制器10。
本领域的普通技术人员可以理解,实现上述方法实施例中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是ROM(只读存储器)、RAM(随机访存存储器)、磁盘或光盘等。
请参阅图3,图中示意性的示出了根据本发明一种实施方式中的用于管理所述嵌入式控制器10的固件的固件管理系统30的功能框图,所述固件管理系统30包括初始化模块301、写保护模块302、工作区获取模块303、工作区检查模块304、固件执行模块305、备份区获取模块306、解压缩模块307、固件恢复模块308及预定义代码写入模块309。
所述初始化模块301,用于启动所述嵌入式控制器10,并初始化所述嵌入式控制器10,包括所述嵌入式控制器10的上电和自检。
所述写保护模块302,用于在所述嵌入式控制器10启动后,将所述保护区22和所述备份区26设置为写保护,防止对所述保护区22和所述备份区26进行写操作。
所述工作区获取模块303,用于从所述保护区22获取所述工作区24的位置。
所述工作区检查模块304,用于检查所述工作区24中是否包含所述预定义代码,若是,则所述工作区24确定为没有损坏,若否,则所述工作区24确定为损坏。
所述固件执行模块305,用于当所述工作区24没有损坏时,从所述工作区24中读取固件代码,并执行该固件代码。
所述备份区获取模块306,用于当所述工作区24损坏时,从所述保护区22获取所述备份区26的位置。
所述解压缩模块307,用于当所述工作区24损坏时,将所述备份区26中的压缩包解压缩,获得固件代码。
所述固件恢复模块308,用于当所述工作区24损坏时,将从所述备份区26获得的固件代码恢复至所述工作区24。
所述预定义代码写入模块309,用于当固件代码从所述备份区26恢复至所述工作区24后,向所述工作区24写入所述预定义代码。
以上所述固件管理系统30可以集成设置于一计算机设备或工具中,也可以设置成单独的功能实体,和所述计算机设备或工具连接以向所述计算机设备或工具提供所述固件管理系统30的功能。
值得注意的是,上述装置实施例中所包含的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可。另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
与现有技术相比,上述固件管理方法及系统,藉由从Flash ROM的保护区获取工作区的位置,再检查工作区是否损坏,若是,则从工作区中读取并执行固件代码,若否,则从Flash ROM的保护区获取备份区的位置,并从备份区将固件代码恢复至工作区,这样,即使是使用者因操作不当使所述工作区被严重损坏,导致固件代码无法正常工作,也可以自动从备份区将固件代码恢复至工作区,使嵌入式控制器可以应对恶劣的固件刷新环境。
对本领域的技术人员来说,可以根据本发明的发明方案和发明构思结合生产的实际需要做出其他相应的改变或调整,而这些改变和调整都应属于本发明权利要求的保护范围。
Claims (10)
1.一种嵌入式控制器的固件管理方法,其特征在于:所述方法包括:
从Flash ROM的保护区获取工作区的位置;
检查工作区是否损坏,若是,则从工作区中读取并执行固件代码,若否,则从Flash ROM的保护区获取备份区的位置,并从备份区将固件代码恢复至工作区。
2.如权利要求1所述的嵌入式控制器的固件管理方法,其特征在于:所述检查工作区是否损坏的步骤包括:检查工作区中是否包含一预定义代码,若是,则确定工作区没有损坏,若否,则确定工作区损坏。
3.如权利要求2所述的嵌入式控制器的固件管理方法,其特征在于:所述方法还包括:从备份区将固件代码恢复至工作区后,在工作区里写入所述预定义代码。
4.如权利要求1所述的嵌入式控制器的固件管理方法,其特征在于:所述方法还包括:启动嵌入式控制器后,将Flash ROM中的保护区和备份区设置为写保护。
5.如权利要求1所述的嵌入式控制器的固件管理方法,其特征在于:所述方法在从备份区将固件代码恢复至工作区之前还包括:从备份区读取一压缩包,对该压缩包进行解压后获得固件代码。
6.一种嵌入式控制器的固件管理系统,其特征在于:所述系统包括:
工作区获取模块,用于从Flash ROM的保护区获取工作区的位置;
工作区检查模块,用于检查工作区是否损坏,
固件执行模块,用于当工作区没有损坏时,从工作区中读取并执行固件代码;
备份区获取模块,用于当工作区损坏若时,从Flash ROM的保护区获取备份区的位置;及
固件恢复模块,用于当工作区损坏时,从备份区将固件代码恢复至工作区。
7.如权利要求6所述的嵌入式控制器的固件管理系统,其特征在于:所述工作区检查模块,用于检查工作区中是否包含一预定义代码,若是,则确定工作区没有损坏,若否,则确定工作区损坏。
8.如权利要求7所述的嵌入式控制器的固件管理系统,其特征在于:所述系统还包括预定义代码写入模块,用于从备份区将固件代码恢复至工作区后,在工作区里写入所述预定义代码。
9.如权利要求6所述的嵌入式控制器的固件管理系统,其特征在于:所述系统还包括写保护模块,用于在嵌入式控制器启动后,将Flash ROM中的保护区和备份区设置为写保护。
10.如权利要求6所述的嵌入式控制器的固件管理系统,其特征在于:所述系统还包括解压缩模块,用于在从备份区将固件代码恢复至工作区之前,从备份区读取一压缩包,对该压缩包进行解压后获得固件代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101597769A CN103425549A (zh) | 2012-05-22 | 2012-05-22 | 嵌入式控制器的固件管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101597769A CN103425549A (zh) | 2012-05-22 | 2012-05-22 | 嵌入式控制器的固件管理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103425549A true CN103425549A (zh) | 2013-12-04 |
Family
ID=49650336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012101597769A Pending CN103425549A (zh) | 2012-05-22 | 2012-05-22 | 嵌入式控制器的固件管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103425549A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991805A (zh) * | 2015-07-30 | 2015-10-21 | 北京奇虎科技有限公司 | 智能设备及其系统灾备控制方法 |
CN106648999A (zh) * | 2016-12-28 | 2017-05-10 | 四川秘无痕信息安全技术有限责任公司 | 一种日立硬盘a工作区中固件模块损坏的修复方法 |
CN106874770A (zh) * | 2017-01-19 | 2017-06-20 | 深圳怡化电脑股份有限公司 | 一种验钞机的固件引导方法和装置 |
CN107102912A (zh) * | 2016-02-19 | 2017-08-29 | 福特全球技术公司 | 用于车辆软件更新安装的方法和设备 |
WO2019148792A1 (zh) * | 2018-01-30 | 2019-08-08 | 江苏华存电子科技有限公司 | 智能型存储器装置中固件自我修复方法 |
CN111045709A (zh) * | 2019-12-26 | 2020-04-21 | 联想(北京)有限公司 | 固件升级方法和固件升级装置 |
CN111209143A (zh) * | 2020-01-02 | 2020-05-29 | 广州广哈通信股份有限公司 | 嵌入式系统的恢复方法、装置、嵌入式设备及存储介质 |
CN115113949A (zh) * | 2022-06-29 | 2022-09-27 | 苏州忆联信息系统有限公司 | 提升芯片启动可靠性的方法及其固态硬盘 |
-
2012
- 2012-05-22 CN CN2012101597769A patent/CN103425549A/zh active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991805B (zh) * | 2015-07-30 | 2019-03-05 | 北京奇虎科技有限公司 | 智能设备及其系统灾备控制方法 |
CN104991805A (zh) * | 2015-07-30 | 2015-10-21 | 北京奇虎科技有限公司 | 智能设备及其系统灾备控制方法 |
US12001825B2 (en) | 2016-02-19 | 2024-06-04 | Ford Global Technologies, Llc | Method and apparatus for vehicle software update installation |
CN107102912A (zh) * | 2016-02-19 | 2017-08-29 | 福特全球技术公司 | 用于车辆软件更新安装的方法和设备 |
CN106648999B (zh) * | 2016-12-28 | 2019-10-29 | 四川秘无痕科技有限责任公司 | 一种日立硬盘a工作区中固件模块损坏的修复方法 |
CN106648999A (zh) * | 2016-12-28 | 2017-05-10 | 四川秘无痕信息安全技术有限责任公司 | 一种日立硬盘a工作区中固件模块损坏的修复方法 |
CN106874770A (zh) * | 2017-01-19 | 2017-06-20 | 深圳怡化电脑股份有限公司 | 一种验钞机的固件引导方法和装置 |
CN106874770B (zh) * | 2017-01-19 | 2020-04-07 | 深圳怡化电脑股份有限公司 | 一种验钞机的固件引导方法和装置 |
WO2019148792A1 (zh) * | 2018-01-30 | 2019-08-08 | 江苏华存电子科技有限公司 | 智能型存储器装置中固件自我修复方法 |
CN111045709A (zh) * | 2019-12-26 | 2020-04-21 | 联想(北京)有限公司 | 固件升级方法和固件升级装置 |
CN111209143A (zh) * | 2020-01-02 | 2020-05-29 | 广州广哈通信股份有限公司 | 嵌入式系统的恢复方法、装置、嵌入式设备及存储介质 |
CN111209143B (zh) * | 2020-01-02 | 2023-12-22 | 广州广哈通信股份有限公司 | 嵌入式系统的恢复方法、装置、嵌入式设备及存储介质 |
CN115113949A (zh) * | 2022-06-29 | 2022-09-27 | 苏州忆联信息系统有限公司 | 提升芯片启动可靠性的方法及其固态硬盘 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103425549A (zh) | 嵌入式控制器的固件管理方法及系统 | |
US8341386B2 (en) | Method for updating basic input/output system and method for repairing thereof | |
TWI546818B (zh) | 一種具有綠能資料持續模式的裝置驅動器 | |
KR101912023B1 (ko) | 데이터 스토리지 디바이스/시스템에서의 저전력 상태들을 이용한 전원 장애 보호 및 복구 | |
CN101373451B (zh) | 保护双基本输出入系统程序的计算机系统及其控制方法 | |
CN103299276A (zh) | 嵌入式装置的软件更新过程 | |
US20120110378A1 (en) | Firmware recovery system and method of baseboard management controller of computing device | |
US8086841B2 (en) | BIOS switching system and a method thereof | |
TW201520895A (zh) | Bios自動恢復系統及方法 | |
CN102270144A (zh) | 嵌入式网络设备及其更新固件的方法 | |
CN101634960A (zh) | 一种修改bios参数及重新生成校验和的方法 | |
KR20160007988A (ko) | 런 타임 배드 셀을 관리하는 스토리지 시스템 | |
CN105138433A (zh) | 对嵌入式Linux操作系统中的UBIFS文件系统备份方法 | |
CN103135941A (zh) | 嵌入式存储器的管理方法、嵌入式存储器及电子设备 | |
CN102479124B (zh) | 一种测试方法 | |
CN101446927B (zh) | 闪存系统及其控制方法 | |
CN102005245B (zh) | 一种智能卡擦写保护方法 | |
CN104866397A (zh) | 计算机系统与控制方法 | |
CN103970616A (zh) | 数据恢复系统及方法 | |
CN104657232A (zh) | Bios自动恢复系统及方法 | |
TW201349114A (zh) | 嵌入式控制器的韌體管理方法及系統 | |
CN111984195A (zh) | 一种提高嵌入式Linux系统稳定性的方法及装置 | |
CN105630523A (zh) | 计算机bios资料恢复系统及方法 | |
CN102855166A (zh) | 主板测试系统及方法 | |
CN104750617A (zh) | 电子装置及其数据维护方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20131204 |