CN106919396A - 一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法 - Google Patents
一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法 Download PDFInfo
- Publication number
- CN106919396A CN106919396A CN201710121976.8A CN201710121976A CN106919396A CN 106919396 A CN106919396 A CN 106919396A CN 201710121976 A CN201710121976 A CN 201710121976A CN 106919396 A CN106919396 A CN 106919396A
- Authority
- CN
- China
- Prior art keywords
- bios
- patch
- swap
- cpu
- register
- 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
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法,其工艺流程为:先利用事先编好的第一小程序从原材料BIOS bin文件中提取出64KB的补丁程序文件,再将事先编好的第二小程序以64KB的补丁做为入参,植入到BIOS的.MAK文件中去,在编译时把补丁插入待发布的BIOS,实现自动化工作。在此过程中,BIOS利用top‑block swap的机制,解决在强宇宙射线干扰的自然环境下和应用场景比较恶劣的条件下,因PCH寄存器“Backed Up Control Register”的“TOP_SWAP”位自动被置成1时,而导致CPU无法开机的故障。另外,以植入小程序到.MAK的方式,实现全自动化操作,所以无需做额外的人工操作,方便有效。
Description
【技术领域】
本发明涉及一种用于在计算机内部BIOS里解决故障的用于防止因TopSwap问题而CPU不开机的BIOS解决方法。
【背景技术】
随着科技不断进步和发展,计算机已经被广泛应用于各个行业中。例如:个人电脑,工业控制电脑,服务器等。这些计算机大部分都安装着Intel的CPU和PCH。BIOS芯片是整个电脑系统中关键部分,而Boot-Block是BIOS程序中最重要的文件区域,该文件区域是BIOS程序中最先执行的引导部分。如果此引导部分被破坏,则CPU根本就无法执行程序。又因为所述引导部分被破坏,而容易导致BIOS程序的recovery部分功能无法使用。在实际使用过程中,由于高海拔地区的强宇宙射线干扰的自然环境下和应用场景比较恶劣的条件,很可能导致PCH寄存器“Backed Up Control Register”的“TOP_SWAP”bit莫名其妙地被置成1的情况发生,而造成电脑无法开机。
【发明内容】
鉴于现有技术缺陷,本发明技术目的是提供一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法,该BIOS解决方法能够解决在强宇宙射线干扰的自然环境下和应用场景比较恶劣的条件下,因PCH寄存器“Backed Up Control Register”的“TOP_SWAP”bit自动被置成1时,而导致CPU无法开机的技术问题。
为了实现上述技术目的,本发明提供一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法,其操作步骤为:
第一步,生成制作补丁的原材料BIOS bin文件:
在BIOS SEC阶段的汇编语言源文件中,使用汇编语言在“Backed Up ControlRegister”寄存器的“TOP_SWAP”位写0,然后,在0xcf9端口写入0xE;编译即可得到原材料BIOS bin文件,由于修改的是SEC阶段的汇编code,所以修改部分被编译后,对应的可执行代码位于FFFF_0000h段;“Backed Up Control Register”寄存器的编号为(SB_RCBA+0x3414),“TOP_SWAP”为该寄存器的bit0;后面的步骤会从原材料BIOS bin文件中提取补丁,该补丁会清掉PCH中寄存器“Backed Up Control Register”的“TOP_SWAP”位,再重启电脑;
第二步,制作生成补丁的工具:
用VC6.0,VC2005或者VC2008编写一个程序,该程序读取第一步准备好的BIOS之最高端64KB数据,即FFFF_0000h段,生成一个64KB补丁数据;
第三步,制作把补丁数据插入BIOS的工具:
用VC6.0,VC2005或者VC2008编写一个程序,该程序可以把上面第二步得到的64KB补丁数据插入到待发布BIOS的FFFE_0000h段;
第四步,将第三步得到的插入补丁之工具以64KB补丁做为入参,植入到BIOS的.MAK文件中,实现自动化运作,无需人工做额外的操作。
依据上述主要技术特征所述,在整个方案中,使用了两个自制的.exe工具,其中一个.exe工具用于生成第一补丁数据,另一个.exe工具把第一补丁数据插入BIOS的FFFE_0000h;待以上的第一补丁数据和.exe工具准备好了后,可以将插入补丁的.exe小程序以这个64KB补丁数据作为入参,植入到BIOS的.MAK文件,把补丁数据插入到FFFE_0000h,以便覆盖原来的全0xFF;当PCH寄存器“Backed Up Control Register”的TOP_SWAP位被置起成1时,CPU开机时将首先访问地址FFFE_0000h段,而TOP_SWAP位被置0时,首先访问的是FFFF_0000h段;由此我们可以通过改变TOP_SWAP位,来改变开机时CPU访问的首地址。
本发明的有益技术效果:因本技术方案采用VC2008制作成补丁工具,再利用补丁工具处理原材料BIOS bin文件,制作生成64KB补丁数据,最后将64KB补丁数据,在编译时自动植入到待发布的BIOS中去,实现自动化工作,在此过程中,BIOS利用top-block swap的机制,解决在强宇宙射线干扰的自然环境下和应用场景比较恶劣的条件下,因PCH寄存器“Backed Up Control Register”的TOP_SWAP位自动被置成1时,而导致CPU无法开机的故障。另外,以植入小程序到.MAK的方式,实现全自动化操作,所以无需做额外的人工操作,方便有效。
为对本发明的目的、构造特征及其功能有进一步的了解,兹配合附图详细说明如下:
【附图说明】
图1为本发明中BIOS解决方法的流程图;
图2为本发明中与BIOS解决方法相关的示意图。
【具体实施方式】
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
请参阅图1及图2所示,下面结合实施例来说明本发明所提供一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法,其操作步骤为:
第一步,生成制作补丁的原材料BIOS bin文件:
在BIOS SEC阶段的汇编语言源文件中,使用汇编语言在“Backed Up ControlRegister”寄存器的“TOP_SWAP”位写0,然后,在0xcf9端口写入0xE;编译即可得到原材料BIOS bin文件,由于修改的是SEC阶段的汇编code,所以修改部分被编译后,对应的可执行代码位于FFFF_0000h段;“Backed Up Control Register”寄存器的编号为(SB_RCBA+0x3414),“TOP_SWAP”为该寄存器的bit0;后面的步骤会从原材料BIOS bin文件中提取补丁,该补丁会清掉PCH中寄存器“Backed Up Control Register”的“TOP_SWAP”位,再重启电脑。
第二步,制作生成补丁的工具:
用VC6.0,VC2005或者VC2008编写一个程序,该程序读取第一步准备好的BIOS之最高端64KB数据,即FFFF_0000h段,生成一个64KB补丁数据。
第三步,制作把补丁数据插入BIOS的工具:
用VC6.0,VC2005或者VC2008编写一个程序,该程序可以把上面第二步得到的64KB补丁数据插入到待发布BIOS的FFFE_0000h段。
第四步,将第三步得到的插入补丁之工具以64KB补丁做为入参,植入到BIOS的.MAK文件中,实现自动化运作,无需人工做额外的操作。
在上述整个方案中,使用了两个自制的.exe工具,其中一个.exe工具用于生成第一补丁数据,另一个.exe工具把第一补丁数据插入BIOS的FFFE_0000h;待以上的第一补丁数据和.exe工具准备好了后,可以将插入补丁的.exe小程序以这个64KB补丁数据作为入参,植入到BIOS的.MAK文件,把补丁数据插入到FFFE_0000h,以便覆盖原来的全0xFF;当PCH寄存器“Backed Up Control Register”的TOP_SWAP位被置起成1时,CPU开机时将首先访问地址FFFE_0000h段,而TOP_SWAP位被置0时,首先访问的是FFFF_0000h段;由此我们可以通过改变TOP_SWAP位,来改变开机时CPU访问的首地址。
CRB公板BIOS的FFFE_0000h段的数据都为0xFF,即视为无效数据,FFFF_0000h段是有效的可执行代码。当TOP_SWAP位被意外置起时,CPU会到FFFE_0000h段去获取第一条执行的指令,由于是全0xFF,无法执行而hang住。在开发维护BIOS的过程中,曾经遇到过PCH寄存器“Backed Up Control Register”的TOP_SWAP位莫名其妙地被置成1的情况,其结果就是CPU获取的第一条指令非法(全0xFF),即使对TOP_SWAP位加了保护锁(Lock-Down)也无济于事。经多方检查分析后发现是高海拔地区强宇宙射线干扰所致。但是很明显,BIOS可利用top-block swap的机制来解决这个问题。此方法简单,有效,不再需要每次都打开机箱去卸下CMOS电池,极大地降低BIOS开发人员的维护成本,减少用户的困惑。当故障发生的时候,主板上的各器件已经有电,S5#信号拉高了(开机信号),但是BIOS一条指令都没有执行。使用分析仪可以发现,CPU执行的第一条指令竟然是全FF,显然是无效的指令,死机是必然的。发生这种故障后,板载的BIOS程序完全不能工作,更谈不上使用DOS和UEFI shell下的BIOS刷新工具,恢复系统都成了问题。唯一的规避方法就是打开主机机箱,取下主板上的CMOS电池,因为PCH寄存器“Backed Up Control Register”的TOP_SWAP位可以由RTCRST#信号被拉低,而清成0;而发出RTCRST#信号就需要取下主板上的CMOS电池。可以想象,这个规避方法是十分烦人的,也是客户所不能接受的。另外,对于BIOS工程师来说,由于BIOS没有运行,串口等调试方法都无法使用,几乎无法判定问题所在,资深工程师也要多方分析验证才能有所头绪。当TOP_SWAP位被意外置起时,CPU会到FFFE_0000h段去获取第一条执行的指令。本发明在FFFE_0000h段塞入补丁,再主动重启,使整个系统起死回生。而且是使用自编的小程序和.MAK文件嵌入该程序作为外部命令,做到自动嵌入补丁到BIOS bin文件中,不需要人工手动合成,使用很方便,维护成本低。
综上所述,因本技术方案采用VC2008制作成补丁工具,再利用补丁工具处理原材料BIOS bin文件,制作生成64KB补丁数据,最后将64KB补丁数据,在编译时自动植入到待发布的BIOS中去,实现自动化工作,在此过程中,BIOS利用top-block swap的机制,解决在强宇宙射线干扰的自然环境下和应用场景比较恶劣的条件下,因PCH寄存器“Backed UpControl Register”的TOP_SWAP位自动被置成1时,而导致CPU无法开机的故障。另外,以植入小程序到.MAK的方式,实现全自动化操作,所以无需做额外的人工操作,方便有效。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
Claims (2)
1.一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法,其操作步骤为:
第一步,生成制作补丁的原材料BIOS bin文件:
在BIOS SEC阶段的汇编语言源文件中,使用汇编语言在“Backed Up ControlRegister”寄存器的“TOP_SWAP”位写0,然后,在0xcf9端口写入0xE;编译即可得到原材料BIOS bin文件,由于修改的是SEC阶段的汇编code,所以修改部分被编译后,对应的可执行代码位于FFFF_0000h段;“Backed Up Control Register”寄存器的编号为(SB_RCBA+0x3414),“TOP_SWAP”为该寄存器的bit0;后面的步骤会从原材料BIOS bin文件中提取补丁,该补丁会清掉PCH中寄存器“Backed Up Control Register”的“TOP_SWAP”位,再重启电脑;
第二步,制作生成补丁的工具:
用VC6.0,VC2005或者VC2008编写一个程序,该程序读取第一步准备好的BIOS之最高端64KB数据,即FFFF_0000h段,生成一个64KB补丁数据;
第三步,制作把补丁数据插入BIOS的工具:
用VC6.0,VC2005或者VC2008编写一个程序,该程序可以把上面第二步得到的64KB补丁数据插入到待发布BIOS的FFFE_0000h段;
第四步,将第三步得到的插入补丁之工具以64KB补丁做为入参,植入到BIOS的.MAK文件中,实现自动化运作,无需人工做额外的操作。
2.根据权利要求1所述的用于防止因TopSwap问题而CPU不开机的BIOS解决方法,其特征在于:在整个方案中,使用了两个自制的.exe工具,其中一个.exe工具用于生成第一补丁数据,另一个.exe工具把第一补丁数据插入BIOS的FFFE_0000h;待以上的第一补丁数据和.exe工具准备好了后,可以将插入补丁的.exe小程序以这个64KB补丁数据作为入参,植入到BIOS的.MAK文件,把补丁数据插入到FFFE_0000h,以便覆盖原来的全0xFF;当PCH寄存器“Backed Up Control Register”的TOP_SWAP位被置起成1时,CPU开机时将首先访问地址FFFE_0000h段,而TOP_SWAP位被置0时,首先访问的是FFFF_0000h段;由此我们可以通过改变TOP_SWAP位,来改变开机时CPU访问的首地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710121976.8A CN106919396A (zh) | 2017-03-01 | 2017-03-01 | 一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710121976.8A CN106919396A (zh) | 2017-03-01 | 2017-03-01 | 一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106919396A true CN106919396A (zh) | 2017-07-04 |
Family
ID=59461109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710121976.8A Pending CN106919396A (zh) | 2017-03-01 | 2017-03-01 | 一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106919396A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109344005A (zh) * | 2018-09-20 | 2019-02-15 | 浪潮电子信息产业股份有限公司 | 一种基本输入输出系统bios冗余备份方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100268926A1 (en) * | 2009-04-17 | 2010-10-21 | Micro-Star Int'l Co., Ltd. | Method and Apparatus for Preventing BIOS from Failing to Enter Boot Program |
CN102567251A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | Bios的控制方法和装置 |
CN103218262A (zh) * | 2010-02-11 | 2013-07-24 | 华为技术有限公司 | 在线补丁的激活方法、装置及系统 |
-
2017
- 2017-03-01 CN CN201710121976.8A patent/CN106919396A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100268926A1 (en) * | 2009-04-17 | 2010-10-21 | Micro-Star Int'l Co., Ltd. | Method and Apparatus for Preventing BIOS from Failing to Enter Boot Program |
CN103218262A (zh) * | 2010-02-11 | 2013-07-24 | 华为技术有限公司 | 在线补丁的激活方法、装置及系统 |
CN102567251A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | Bios的控制方法和装置 |
Non-Patent Citations (1)
Title |
---|
英特尔公司: ""英特尔® I/O 控制器集线器 7(ICH7)家族数据表"", 《HTTPS://WWW.INTEL.CN/CONTENT/WWW/CN/ZH/IO/I-O-CONTROLLER-HUB-7-DATASHEET.HTML?WAPKW=》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109344005A (zh) * | 2018-09-20 | 2019-02-15 | 浪潮电子信息产业股份有限公司 | 一种基本输入输出系统bios冗余备份方法和装置 |
CN109344005B (zh) * | 2018-09-20 | 2022-03-22 | 浪潮电子信息产业股份有限公司 | 一种基本输入输出系统bios冗余备份方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112004001605B4 (de) | Computersystem, in welchem eine abgesicherte Ausführungsumgebung angewendet wird und in dem eine Speichersteuerung enthalten ist, die zum Löschen des Speichers ausgebildet ist | |
McKeen et al. | Intel® software guard extensions (intel® sgx) support for dynamic memory management inside an enclave | |
Devietti et al. | Hardbound: Architectural support for spatial safety of the C programming language | |
CN101167060B (zh) | 用以提供安全开机架构的系统与方法 | |
Neamtiu et al. | Safe and timely updates to multi-threaded programs | |
Ben-David et al. | Delay-free concurrency on faulty persistent memory | |
CN104111848B (zh) | 一种基于异步检查点的多线程软件动态升级方法 | |
US20070300238A1 (en) | Adapting software programs to operate in software transactional memory environments | |
DE112009005006T5 (de) | Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM) | |
DE112007001321T5 (de) | Ausführung eines Sichere-Umgebungs-Initialisierungsbefehls in einem Punkt-zu-Punkt-Verbindungssystem | |
DE102014003540A1 (de) | Erzeugen einer isolierten ausführungsumgebung in einem co-designten prozessor | |
Guerraoui et al. | Robust contention management in software transactional memory | |
Huang et al. | Orthrus: Efficient software integrity protection on multi-cores | |
Das et al. | SHAKTI-MS: a RISC-V processor for memory safety in C | |
US20050138347A1 (en) | Update in-use flash memory without external interfaces | |
CN106919396A (zh) | 一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法 | |
Cabral et al. | Rail: code instrumentation for. net | |
Hillebrand | Address spaces and virtual memory: specification, implementation, and correctness | |
CN106371895A (zh) | 一种升级kvm虚拟机去虚拟化的方法 | |
DE102021114574A1 (de) | Computer programm trust assurance für internet der dinge (iot) devices | |
Wernli et al. | Using first-class contexts to realize dynamic software updates | |
Porter et al. | Transactional system calls on Linux | |
Cartaxo et al. | Improving performance and maintainability of object cloning with lazy clones: An empirical evaluation | |
Anikeev et al. | Preventing malicious data harvesting from deallocated memory areas | |
Aksun | Software Support for Non-Volatile Memory (NVM) Programming |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170704 |