一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法与流程

文档序号:12801583阅读:2000来源:国知局
一种用于防止因TopSwap问题而CPU不开机的BIOS解决方法与流程

【技术领域】

本发明涉及一种用于在计算机内部bios里解决故障的用于防止因topswap问题而cpu不开机的bios解决方法。



背景技术:

随着科技不断进步和发展,计算机已经被广泛应用于各个行业中。例如:个人电脑,工业控制电脑,服务器等。这些计算机大部分都安装着intel的cpu和pch。bios芯片是整个电脑系统中关键部分,而boot-block是bios程序中最重要的文件区域,该文件区域是bios程序中最先执行的引导部分。如果此引导部分被破坏,则cpu根本就无法执行程序。又因为所述引导部分被破坏,而容易导致bios程序的recovery部分功能无法使用。在实际使用过程中,由于高海拔地区的强宇宙射线干扰的自然环境下和应用场景比较恶劣的条件,很可能导致pch寄存器“backedupcontrolregister”的“top_swap”bit莫名其妙地被置成1的情况发生,而造成电脑无法开机。



技术实现要素:

鉴于现有技术缺陷,本发明技术目的是提供一种用于防止因topswap问题而cpu不开机的bios解决方法,该bios解决方法能够解决在强宇宙射线干扰的自然环境下和应用场景比较恶劣的条件下,因pch寄存器“backedupcontrolregister”的“top_swap”bit自动被置成1时,而导致cpu无法开机的技术问题。

为了实现上述技术目的,本发明提供一种用于防止因topswap问题而cpu不开机的bios解决方法,其操作步骤为:

第一步,生成制作补丁的原材料biosbin文件:

在biossec阶段的汇编语言源文件中,使用汇编语言在“backedupcontrolregister”寄存器的“top_swap”位写0,然后,在0xcf9端口写入0xe;编译即可得到原材料biosbin文件,由于修改的是sec阶段的汇编code,所以修改部分被编译后,对应的可执行代码位于ffff_0000h段;“backedupcontrolregister”寄存器的编号为(sb_rcba+0x3414),“top_swap”为该寄存器的bit0;后面的步骤会从原材料biosbin文件中提取补丁,该补丁会清掉pch中寄存器“backedupcontrolregister”的“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寄存器“backedupcontrolregister”的top_swap位被置起成1时,cpu开机时将首先访问地址fffe_0000h段,而top_swap位被置0时,首先访问的是ffff_0000h段;由此我们可以通过改变top_swap位,来改变开机时cpu访问的首地址。

本发明的有益技术效果:因本技术方案采用vc2008制作成补丁工具,再利用补丁工具处理原材料biosbin文件,制作生成64kb补丁数据,最后将64kb补丁数据,在编译时自动植入到待发布的bios中去,实现自动化工作,在此过程中,bios利用top-blockswap的机制,解决在强宇宙射线干扰的自然环境下和应用场景比较恶劣的条件下,因pch寄存器“backedupcontrolregister”的top_swap位自动被置成1时,而导致cpu无法开机的故障。另外,以植入小程序到.mak的方式,实现全自动化操作,所以无需做额外的人工操作,方便有效。

为对本发明的目的、构造特征及其功能有进一步的了解,兹配合附图详细说明如下:

【附图说明】

图1为本发明中bios解决方法的流程图;

图2为本发明中与bios解决方法相关的示意图。

【具体实施方式】

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

请参阅图1及图2所示,下面结合实施例来说明本发明所提供一种用于防止因topswap问题而cpu不开机的bios解决方法,其操作步骤为:

第一步,生成制作补丁的原材料biosbin文件:

在biossec阶段的汇编语言源文件中,使用汇编语言在“backedupcontrolregister”寄存器的“top_swap”位写0,然后,在0xcf9端口写入0xe;编译即可得到原材料biosbin文件,由于修改的是sec阶段的汇编code,所以修改部分被编译后,对应的可执行代码位于ffff_0000h段;“backedupcontrolregister”寄存器的编号为(sb_rcba+0x3414),“top_swap”为该寄存器的bit0;后面的步骤会从原材料biosbin文件中提取补丁,该补丁会清掉pch中寄存器“backedupcontrolregister”的“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寄存器“backedupcontrolregister”的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寄存器“backedupcontrolregister”的top_swap位莫名其妙地被置成1的情况,其结果就是cpu获取的第一条指令非法(全0xff),即使对top_swap位加了保护锁(lock-down)也无济于事。经多方检查分析后发现是高海拔地区强宇宙射线干扰所致。但是很明显,bios可利用top-blockswap的机制来解决这个问题。此方法简单,有效,不再需要每次都打开机箱去卸下cmos电池,极大地降低bios开发人员的维护成本,减少用户的困惑。当故障发生的时候,主板上的各器件已经有电,s5#信号拉高了(开机信号),但是bios一条指令都没有执行。使用分析仪可以发现,cpu执行的第一条指令竟然是全ff,显然是无效的指令,死机是必然的。发生这种故障后,板载的bios程序完全不能工作,更谈不上使用dos和uefishell下的bios刷新工具,恢复系统都成了问题。唯一的规避方法就是打开主机机箱,取下主板上的cmos电池,因为pch寄存器“backedupcontrolregister”的top_swap位可以由rtcrst#信号被拉低,而清成0;而发出rtcrst#信号就需要取下主板上的cmos电池。可以想象,这个规避方法是十分烦人的,也是客户所不能接受的。另外,对于bios工程师来说,由于bios没有运行,串口等调试方法都无法使用,几乎无法判定问题所在,资深工程师也要多方分析验证才能有所头绪。当top_swap位被意外置起时,cpu会到fffe_0000h段去获取第一条执行的指令。本发明在fffe_0000h段塞入补丁,再主动重启,使整个系统起死回生。而且是使用自编的小程序和.mak文件嵌入该程序作为外部命令,做到自动嵌入补丁到biosbin文件中,不需要人工手动合成,使用很方便,维护成本低。

综上所述,因本技术方案采用vc2008制作成补丁工具,再利用补丁工具处理原材料biosbin文件,制作生成64kb补丁数据,最后将64kb补丁数据,在编译时自动植入到待发布的bios中去,实现自动化工作,在此过程中,bios利用top-blockswap的机制,解决在强宇宙射线干扰的自然环境下和应用场景比较恶劣的条件下,因pch寄存器“backedupcontrolregister”的top_swap位自动被置成1时,而导致cpu无法开机的故障。另外,以植入小程序到.mak的方式,实现全自动化操作,所以无需做额外的人工操作,方便有效。

以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1