CN107480052A - 一种定位宕机时bios代码的方法及装置 - Google Patents
一种定位宕机时bios代码的方法及装置 Download PDFInfo
- Publication number
- CN107480052A CN107480052A CN201710599325.XA CN201710599325A CN107480052A CN 107480052 A CN107480052 A CN 107480052A CN 201710599325 A CN201710599325 A CN 201710599325A CN 107480052 A CN107480052 A CN 107480052A
- Authority
- CN
- China
- Prior art keywords
- storage location
- deviation post
- bios code
- address
- machine
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3628—Software debugging of optimised code
-
- 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
Abstract
本发明涉及信息处理技术领域,公开了一种定位宕机时BIOS代码的方法及装置。该方法包括初始化非易失性存储器中预先选定的M个存储位置;M个存储位置中包括一个用于存储开机跑BIOS时输出的BIOS代码的第一存储位置;在每次开机后且在输出第一个BIOS代码前,将第一存储位置存储的数据移动至对应的偏移位置存储;偏移位置为M个存储位置中除第一位置以外的存储位置;若在输出BIOS代码的过程中发生宕机,则在下次开机后读取第一存储位置对应的偏移位置上的数据,作为宕机前输出的最后一个BIOS代码。本发明实施方式无需增添作何硬件,就可以清晰的了解到开机阶段宕机时BIOS中的代码跑到哪个位置,有利于减少成本。
Description
技术领域
本发明涉及信息处理技术领域,特别涉及一种定位宕机时BIOS代码的方法及装置。
背景技术
在笔记本电脑等终端的研发过程中,在开机跑BIOS(Basic Input OutputSystem,即基本输入输出系统)代码的过程中经常会发生宕机的问题,此时就需要去定位发生宕机时BIOS中的代码跑到了哪个位置,以便排除故障(即debug)。
现有技术一般通过插入特定的80卡去查看问题到底出在哪里,宕机时BIOS中的代码跑到了哪里。但定制特殊的80卡无疑会增加成本,而且对于概率性问题,并不是每一台电脑都可以通过插上80卡去开机来解决问题。
发明内容
本发明实施方式的目的在于提供一种定位宕机时BIOS代码的方法及装置,使得无需增添作何硬件,就可以清晰的了解到开机阶段宕机时BIOS中的代码跑到哪个位置,从而减小成本。
为解决上述技术问题,本发明的实施方式提供了一种定位宕机时BIOS代码的方法,包括:初始化非易失性存储器中预先选定的M个存储位置;其中,所述M个存储位置中包括一个第一存储位置;所述第一存储位置用于存储开机跑BIOS时输出的BIOS代码;所述M为大于或等于2的自然数;在每次开机后且在输出第一个BIOS代码前,将所述第一存储位置当前存储的数据移动至对应的偏移位置进行存储;其中,所述偏移位置为所述M个存储位置中除所述第一位置以外的存储位置;若在输出BIOS代码的过程中发生宕机,则在下次开机后读取所述第一存储位置对应的偏移位置上的数据,并将所述数据作为宕机前输出的最后一个BIOS代码。
本发明的实施方式还提供了一种定位宕机时BIOS代码的装置,包括:初始化模块、移动存储模块、读取模块;所述初始化模块用于预先初始化非易失性存储器中预先选定的M个存储位置;其中,所述M个存储位置中存在包括一个第一存储位置;所述第一存储位置用于存储开机跑BIOS时输出的BIOS代码;所述M为大于或等于2的自然数;所述移动存储模块用于在每次开机后且在输出第一个BIOS代码前,将所述第一存储位置当前存储的数据移动至对应的偏移位置进行存储;其中,所述偏移位置为所述M个存储位置中除所述第一位置以外的存储位置;所述读取模块用于在发生宕机且再次开机后读取所述第一存储位置对应的偏移位置上的数据,并将所述数据作为宕机前时输出的最后一个BIOS代码。
本发明实施方式相对于现有技术而言,用第一存储位置存储开机阶段输出的BIOS代码,这使得第一存储位置可在开机阶段输出BIOS代码的过程中,实时存储当前输出的BIOS代码。正常开机结束时,第一存储位置存储的即是输出的最后一个BIOS代码;而如果宕机,无法再继续输出新的BIOS代码,因此,第一存储位置存储的即是发生宕机前(即正常跑代码阶段)输出的最后一个BIOS代码。同时,本发明实施方式在每次开机后且输出第一个BIOS代码前会将第一存储位置上存储的数据移到其偏移位置上,因此,在下一次正常开机以后,就可从该偏移位置上找到宕机前输出的最后一个BIOS代码。根据该最后一个BIOS代码,即可清晰地了解到宕机时BIOS代码跑到哪个位置。相关人员也可以根据该最后一个BIOS代码来排除故障。
另外,所述非易失性存储器为互补金属氧化物半导体CMOS存储器。CMOS不仅可以长久地保存数据,防止信息在宕机时遗失,且其花费少,还有利于节省成本。
另外,所述第一存储位置为所述M个存储位置中最低位或最高位的存储位置。提供一种选择第一存储位置的方法。
另外,所述M个存储位置中除与所述第一存储位置的地址相差最大的存储位置以外,均存在对应的偏移位置;所述第一存储位置为所述M个存储位置中地址最低的存储位置时,所述偏移位置的地址与对应的存储位置相邻且大于所述存储位置的地址;在所述将第一存储位置当前存储的数据移动至对应的偏移位置进行存储之前,按照地址从高到低的顺序,依次将所述存储位置上的数据移动至对应的所述偏移位置进行存储;或者
所述第一存储位置为所述M个存储位置中最高位的存储位置时,所述偏移位置的地址与对应的存储位置相邻且低于所述存储位置的地址;在所述将第一存储位置当前存储的数据移动至对应的偏移位置进行存储之前,按照地址从低到高的顺序,依次将所述存储位置上的数据移动至对应的所述偏移位置进行存储。按照这一顺序搬移数据,可以避免从第一存储位置搬移到其对应的偏移位置的数据被覆盖,在下次开机后,就可从第一存储位置对应的偏移位置上找到最后输出的BIOS代码。
另外,所述M个存储位置中,相邻两个存储位置的地址之间相差N,所述N为自然数。提供一种选择该M个存储位置的方法。
附图说明
图1是根据本发明第一实施方式的定位宕机时BIOS代码的方法的流程图;
图2是本发明第三实施方式的定位宕机时BIOS代码的装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种定位宕机时BIOS代码的方法。具体流程如图1所示。
步骤101:初始化从非易失性存储器中预先选定的M个存储位置。
为了防止存储的数据在终端发生宕机时丢失,本实施方式可将开机自我检测过程(即开机跑BIOS的过程)中输出的所有Post code(即开机自我检测代码,也称为BIOS代码)全部存储到终端的非易失性存储器中。
具体地说,在将开机自我检测过程中输出的所有BIOS代码存储到非易失性存储器之前,可先从该非易失性存储器中选取M个存储位置,并从该M个存储位置中选择一个存储位置作为第一存储位置。该第一存储位置即可用于存储开机跑BIOS时输出的BIOS代码。该M可为大于或等于2的自然数。
在确定好第一存储位置之后,即可对该M个存储位置进行初始化。
步骤102:在开机后且在输出第一个BIOS代码前,将第一存储位置当前存储的数据移动至对应的偏移位置进行存储。
该偏移位置为M个存储位置中除第一存储位置以外的存储位置。例如,M为2,M个存储位置的地址分别为0x60、0x61。若第一存储位置的地址为0x60,则第一存储位置对应的偏移位置的地址即为0x61。也就是说,在每次开机输出第一个BIOS代码前,都会进行一次数据偏移,即将0x60存储的数据搬移至0x61存储。而每次开机输出第一个BIOS代码前,0x60存储的数据是上次终端开机跑BIOS的过程中输出的最后一个BIOS代码,因此经过这一数据搬移,就可从0x61看到上次终端开机跑BIOS的过程中输出的最后一个BIOS代码了。
值得一提的是,上文是以M等于2为例进行说明的,但在实际应用中,M还可以为大于2的自然数。当M大于2时,可根据实际情况为第一存储位置选择偏移位置,本实施方式对此不做限制。
步骤103:在输出BIOS代码的过程中发生宕机时,在下次开机后读取第一存储位置对应的偏移位置上的数据,并将该数据作为发生宕机前输出的最后一个BIOS代码。
值得一提的是,每输出一个BIOS代码,第一存储位置就会用该BIOS代码覆盖原先存储的BIOS代码,该原先存储的BIOS代码就是本次之前输出的BIOS代码。因此,第一存储位置始终存储着当前最新输出的BIOS代码。
由于发生宕机之后无法再继续输出BIOS代码,因此,若终端在跑BIOS的过程中发生宕机,那么第一存储位置存储的就是正常跑BIOS时输出的最后一个BIOS代码,即发生宕机前输出的最后一个BIOS代码。如上文所述,每次开机输出第一个BIOS代码前,都会执行一次数据偏移。因此,在下一次正常开机之后,终端就会将第一存储位置存储的BIOS代码搬移动对应的偏移位置存储。终端就可从该偏移位置读取发生宕机前输出的最后一个BIOS代码。相关人员就可该根据该最后一个BIOS代码,知晓发生宕机时BIOS代码跑到哪个位置,从而判断什么地方发生了问题。
具体地说,在下一次正常开机之后,可通过打开读写(RW.exe)工具(如果进入的是Windows系统)或者RU.efi工具(如果进入的是Shell)查看非易失性存储器内部存储的数据。
步骤104:根据该发生宕机前输出的最后一个BIOS代码,判断发生宕机的位置。
从第一存储位置对应的偏移位置上读取发生宕机前输出的最后一个BIOS代码后,相关人员可以根据该BIOS代码判断什么地方发生了问题。如该BIOS代码为1A,则可知在初始化USB时发生了宕机。也可将该BIOS代码反馈给相关供应商(如IBV,即英特尔代码供应商),由相关供应商帮忙查看问题所在。
本实施方式相对于现有技术而言,用第一存储位置存储开机阶段输出的BIOS代码,这使得第一存储位置可在开机阶段输出BIOS代码的过程中,实时存储当前输出的BIOS代码。正常开机结束时,第一存储位置存储的即是输出的最后一个BIOS代码;而如果宕机,由于无法再继续输出新的BIOS代码,因此,第一存储位置存储的即是发生宕机前(即正常跑代码阶段)输出的最后一个BIOS代码。同时,本发明实施方式在每次开机后且输出第一个BIOS代码前会将第一存储位置上存储的数据移到其偏移位置上,因此,在下一次正常开机以后,就可从该偏移位置上找到宕机前输出的最后一个BIOS代码。根据该最后一个BIOS代码,即可清晰地了解到宕机时BIOS代码跑到哪个位置。相关人员也可以根据该最后一个BIOS代码来排除故障。
本发明的第二实施方式涉及一种定位宕机时BIOS代码的方法。第二实施方式在第一实施方式的基础上,对选择的M的存储位置做了进一步改进。
具体地说,本实施方式优选该非易失性存储器为互补金属氧化物半导体(即Complementary Metal Oxide Semiconductor,简称为“CMOS”)存储器。因此,CMOS存储器不仅可以长久地保存数据,防止数据在宕机时遗失,且其花费少,还有利于节省成本。
本实施方式可从CMOS存储器中选择地址连续的M个存储位置,如M等于11,M个地址连续的存储位置可以是:0x60、0x61、0x62、0x63……0x69、0x6A;也可以挑选相邻两个存储位置的地址之间相差N的M个存储位置,其中N为自然数,如N=3,M=4,M个存储位置可以是:0x60、0x63、0x66、0x69;也可以随机挑选M个存储位置,对此,本实施方式不做限制。
可将该M个存储位置中地址最低或地址最高的存储位置作为第一存储位置。例如,M个存储位置为:0x60、0x61、0x62、0x63……0x69、0x6A,则可将0x60(地址最低)或0x6A(地址最高)作为第一存储位置。
确定好M个存储位置及第一存储位置之后,可对这M个存储位置进行初始化。以该M个存储位置是0x60、0x61、0x62、0x63……0x69、0x6A为例,初始化后,该M个存储位置存储的值如表一所示:
表一:初始化后所有存储位置的存储数据的初始值都变为FF
值得一提的是,当M大于2时,这M个存储位置中除与第一存储位置的地址相差最大的存储位置以外,均存在对应的偏移位置。若第一存储位置为M个存储位置中地址最低的存储位置(如表一中的0x60),则M个存储位置中地址最高的存储位置(如表一中的0x6A)没有偏移位置,其它的存储位置都有偏移位置。偏移位置的地址与对应的存储位置相邻且高于该存储位置的地址。也就是说,0x60的偏移位置是0x61,0x61的偏移位置是0x62,0x62的偏移位置是0x63……0x68的偏移位置是0x69,0x69的偏移位置是0x6A。
在将第一存储位置当前存储的数据移动至对应的偏移位置进行存储之前,要按地址从高到低的顺序,依次将其他存储位置上的数据移动至对应的偏移位置进行存储。也就是说,在每次开机后且输出第一个BIOS代码前,要依次将0x69、0x68、0x67……0x61、0x60的数据移动到对应的偏移位置进行存储。
如上文所述,每次开机输出第一个BIOS代码前,都会执行一次数据偏移。按照上述提供的偏移方式,在第一次开机后且输出第一个BIOS代码前,存储位置上对应的存储数据会发生偏移。由于还没有输出BIOS代码,各存储位置的存储值不会发生改变,所以这一次偏移后,各存储位置上的数据还是初始值FF。
第一开机结束后,该M个存储位置的存储值如表二所示。表二中第一存储位置(0x60)存储的A7是第一次开机跑BIOS过程中输出的最后一个BIOS代码。
表二(假设第一次开机跑BIOS过程中未发生宕机)
在第二次开机后且输出第一个BIOS代码之前会执行一次偏移,此时该该M个存储位置的存储值如表三所示:
表三
第二次开机结束后(假设第二次开机跑BIOS过程中也未发生宕机),该M个存储位置的存储值如表四所示:
表四
第三次开机后且输出第一个BIOS代码之前会执行一次偏移,此时该M个存储位置的存储值如表五所示:
表五
若第三次开机跑BIOS过程中发生了宕机,此时可在下一次正常开机后,检测该M个存储位置的存储值。假设第四次开机是正常开机,第四次开机结束后该M个存储位置的存储值如表六所示。由于第四次开机后且输出第一个BIOS代码前,执行过一次数据偏移,因此,第一存储位置存储的发生宕机前输出的最后一个BIOS代码被转移至其偏移位置0x61中。此时,即可从0x61读取该BIOS代码。表六中0x61中的1A即是第三次开机跑BIOS过程中发生宕机前输出的最后一个BIOS代码。
表六
值得一提的是,上述是以第四次开机是正常开机为例进行说明的,但在实际应用中,可能第四次开机与第三次开机一样也发生了宕机,此时,就需要继续开机,直到某次正常开机后,才去检测该M个存储位置的存储值。此时可从第一存储位置对应的偏移位置上读取最后一次发生宕机前输出的最后一个BIOS代码。
例如,第五次才正常开机,第五次开机结束后该M个存储位置的存储值如表七所示。其中0x61存储的BIOS代码03是第四次开机过程中发生宕机前输出的最后一个BIOS代码,0x62存储的BIOS代码1A是第三次开机过程中发生宕机前输出的最后一个BIOS代码。
表七
需要说明的是,上述是以第一存储位置是M个存储位置中地址最低的存储位置为例进行说明的,当第一存储位置为M个存储位置中地址最高的存储位置(如0x6A),则M个存储位置中地址最低的存储位置(如0x60)没有偏移位置,其它的存储位置都有偏移位置。此时,偏移位置的地址与对应的存储位置相邻且低于该存储位置的地址。也就是说,0x6A的偏移位置是0x69,0x69的偏移位置是0x68,0x68的偏移位置是0x67……0x62的偏移位置是0x61,0x61的偏移位置是0x60。
在将第一存储位置当前存储的数据移动至对应的偏移位置进行存储之前,要按地址从低到高的顺序,依次将其他存储位置上的数据移动至对应的偏移位置进行存储。也就是说,在每次开机后且输出第一个BIOS代码前,要依次将0x61、0x62、0x63……0x69、0x6A的数据移动到对应的偏移位置进行存储。
以上的偏移数据的顺序,可以避免从第一存储位置搬移到其对应的偏移位置的数据被覆盖,在下次开机后,就可从第一存储位置对应的偏移位置上找到最后输出的BIOS代码。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明的第三实施方式涉及一种定位宕机时BIOS代码的装置。如图2所示,该装置包括初始化模块21、移动存储模块22以及读取模块23。
其中,初始化模块21用于初始化从易失性存储器中预先选定的M个存储位置,M为大于或等于2的自然数。值得一提的是,该M个存储位置中包括一个第一存储位置。该第一存储位置用于存储开机跑BIOS时输出的BIOS代码。具体地说,每输出一个BIOS代码,第一存储位置就会用该BIOS代码覆盖原先存储的BIOS代码,该原先存储的BIOS代码就是本次之前输出BIOS代码。因此,第一存储位置始终存储着当前最新输出的BIOS代码。
移动存储模块22用于在每次开机后且在输出第一个BIOS代码前,将第一存储位置当前存储的数据移动至对应的偏移位置进行存储。其中,偏移位置为M个存储位置中除所述第一位置以外的存储位置。
读取模块23用于在发生宕机且再次正常开机后读取第一存储位置对应的偏移位置上的数据,并将该数据作为宕机前输出的最后一个BIOS代码。由于发生宕机之后无法再继续输出BIOS代码,因此,若终端在跑BIOS的过程中发生宕机,那么第一存储位置存储的就是正常跑BIOS时输出的最后一个BIOS代码,即发生宕机前输出的最后一个BIOS代码。而移动存储模块22在每次开机输出第一个BIOS代码前,都会执行一次数据偏移。因此,在下一次正常开机之后,移动存储模块22就会将第一存储位置存储的BIOS代码搬移动对应的偏移位置存储。读取模块23就可从该偏移位置读取发生宕机前输出的最后一个BIOS代码。相关人员就可该根据该最后一个BIOS代码,知晓发生宕机时BIOS代码跑到哪个位置,从而判断什么地方发生了问题。
不难发现,本实施方式为与第一实施方式相对应的装置实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第四实施方式涉及一种定位宕机时BIOS代码的装置。第四实施方式在第三实施方式的基础上,对选择的M的存储位置做了进一步改进。
本实施方式优选该非易失性存储器为CMOS存储器。具体地,本实施方式可预先从CMOS存储器中选择M个存储位置。该M个存储位置可是相邻两个存储位置的地址之间相差N的M个存储位置,其中N为自然数;也可以是随机挑选的M个存储位置。
可将该M个存储位置中地址最低或地址最高的存储位置作为第一存储位置。例如,M个存储位置为:0x60、0x61、0x62、0x63……0x69、0x6A,则可将0x60(地址最低)或0x6A(地址最高)作为第一存储位置。
当M大于2时,该M个存储位置中除与第一存储位置的地址相差最大的存储位置以外,均存在对应的偏移位置。
若第一存储位置为M个存储位置中地址最低的存储位置(如上例中的0x60),则M个存储位置中地址最高的存储位置(如上例中的0x6A)没有偏移位置,其它的存储位置都有偏移位置。偏移位置的地址与对应的存储位置相邻且高于该存储位置的地址。如上例,也就是说,0x60的偏移位置是0x61,0x61的偏移位置是0x62,0x62的偏移位置是0x63……0x68的偏移位置是0x69,0x69的偏移位置是0x6A。
此时,移动存储模块在将第一存储位置当前存储的数据移动至对应的偏移位置进行存储之前,还用于按地址从高到低的顺序,依次将其他存储位置上的数据移动至对应的偏移位置进行存储。也就是说,在每次开机后且输出第一个BIOS代码前,移动存储模块要依次将0x69、0x68、0x67……0x61、0x60的数据移动到对应的偏移位置进行存储。
若第一存储位置为M个存储位置中地址最高的存储位置(如上例中的0x6A),则M个存储位置中地址最低的存储位置(如上例中的0x60)没有偏移位置,其它的存储位置都有偏移位置。此时,偏移位置的地址与对应的存储位置相邻且低于该存储位置的地址。也就是说,0x6A的偏移位置是0x69,0x69的偏移位置是0x68,0x68的偏移位置是0x67……0x62的偏移位置是0x61,0x61的偏移位置是0x60。
此时,移动存储模块在将第一存储位置当前存储的数据移动至对应的偏移位置进行存储之前,还用于按地址从低到高的顺序,依次将其他存储位置上的数据移动至对应的偏移位置进行存储。也就是说,在每次开机后且输出第一个BIOS代码前,要依次将0x61、0x62、0x63……0x69、0x6A的数据移动到对应的偏移位置进行存储。
由于第二实施方式与本实施方式相互对应,因此本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,在第二实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (10)
1.一种定位宕机时BIOS代码的方法,其特征在于,包括:
初始化从非易失性存储器中预先选定的M个存储位置;其中,所述M个存储位置中包括一个第一存储位置;所述第一存储位置用于存储开机跑BIOS时输出的BIOS代码;所述M为大于或等于2的自然数;
在每次开机后且在输出第一个BIOS代码前,将所述第一存储位置当前存储的数据移动至对应的偏移位置进行存储;其中,所述偏移位置为所述M个存储位置中除所述第一存储位置以外的存储位置;
若在输出BIOS代码的过程中发生宕机,则在下次开机后读取所述第一存储位置对应的偏移位置上的数据,并将所述数据作为宕机前输出的最后一个BIOS代码。
2.根据权利要求1所述的定位宕机时BIOS代码的方法,其特征在于,所述非易失性存储器为互补金属氧化物半导体CMOS存储器。
3.根据权利要求1所述的定位宕机时BIOS代码的方法,其特征在于,所述第一存储位置为所述M个存储位置中地址最低或地址最高的存储位置。
4.根据权利要求3所述的定位宕机时BIOS代码的方法,其特征在于,所述M个存储位置中除与所述第一存储位置的地址相差最大的存储位置以外,均存在对应的偏移位置;
所述第一存储位置为所述M个存储位置中最低位的存储位置时,所述偏移位置的地址与对应的存储位置相邻且高于所述存储位置的地址;在所述将第一存储位置当前存储的数据移动至对应的偏移位置进行存储之前,按照地址从高到低的顺序,依次将所述存储位置上的数据移动至对应的所述偏移位置进行存储;或者
所述第一存储位置为所述M个存储位置中最高位的存储位置时,所述偏移位置的地址与对应的存储位置相邻且低于所述存储位置的地址;在所述将第一存储位置当前存储的数据移动至对应的偏移位置进行存储之前,按照地址从低到高的顺序,依次将所述存储位置上的数据移动至对应的所述偏移位置进行存储。
5.根据权利要求3所述的定位宕机时BIOS代码的方法,其特征在于,所述M个存储位置中,相邻两个存储位置的地址之间相差N,所述N为自然数。
6.一种定位宕机时BIOS代码的装置,其特征在于,包括:初始化模块、移动存储模块、读取模块;
所述初始化模块用于初始化从非易失性存储器中预先选定的M个存储位置;其中,所述M个存储位置中包括一个第一存储位置;所述第一存储位置用于存储开机跑BIOS时输出的BIOS代码;所述M为大于或等于2的自然数;
所述移动存储模块用于在每次开机后且在输出第一个BIOS代码前,将所述第一存储位置当前存储的数据移动至对应的偏移位置进行存储;其中,所述偏移位置为所述M个存储位置中除所述第一位置以外的存储位置;
所述读取模块用于在发生宕机且再次开机后读取所述第一存储位置对应的偏移位置上的数据,并将所述数据作为宕机前输出的最后一个BIOS代码。
7.根据权利要求6所述的定位宕机时BIOS代码的装置,其特征在于,所述非易失性存储器为互补金属氧化物半导体CMOS存储器。
8.根据权利要求6所述的定位宕机时BIOS代码的装置,其特征在于,所述第一存储位置为所述M个存储位置中最低位或最高位的存储位置。
9.根据权利要求8所述的定位宕机时BIOS代码的装置,其特征在于,所述M个存储位置中除与所述第一存储位置的地址相差最大的存储位置以外,均存在对应的偏移位置;
所述第一存储位置为所述M个存储位置中地址最低的存储位置时,所述偏移位置的地址与对应的存储位置相邻且高于所述存储位置的地址;所述移动存储模块在所述将第一存储位置当前存储的数据移动至对应的偏移位置进行存储之前,还用于按照地址从高到低的顺序,依次将所述存储位置上的数据移动至对应的所述偏移位置进行存储;或者
所述第一存储位置为所述M个存储位置中最高位的存储位置时,所述偏移位置的地址与对应的存储位置相邻且小于所述存储位置的地址;所述移动存储模块在所述将第一存储位置当前存储的数据移动至对应的偏移位置进行存储之前,还用于按照地址从低到高的顺序,依次将所述存储位置上的数据移动至对应的所述偏移位置进行存储。
10.根据权利要求8所述的定位宕机时BIOS代码的装置,其特征在于,所述M个存储位置中,相邻两个存储位置的地址之间相差N,所述N为自然数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710599325.XA CN107480052B (zh) | 2017-07-21 | 2017-07-21 | 一种定位宕机时bios代码的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710599325.XA CN107480052B (zh) | 2017-07-21 | 2017-07-21 | 一种定位宕机时bios代码的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107480052A true CN107480052A (zh) | 2017-12-15 |
CN107480052B CN107480052B (zh) | 2020-11-13 |
Family
ID=60595165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710599325.XA Active CN107480052B (zh) | 2017-07-21 | 2017-07-21 | 一种定位宕机时bios代码的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107480052B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522057A (zh) * | 2018-11-27 | 2019-03-26 | 无锡睿勤科技有限公司 | 一种设备启动方法及设备 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770106A (zh) * | 2004-11-04 | 2006-05-10 | 华为技术有限公司 | 通信设备复位信息保存方法 |
US20070174603A1 (en) * | 2006-01-20 | 2007-07-26 | Asustek Computer Inc. | Method and system for maintaining system management BIOS |
CN101526911A (zh) * | 2009-03-26 | 2009-09-09 | 成都市华为赛门铁克科技有限公司 | 一种系统崩溃时系统信息存储方法及装置 |
US20110161736A1 (en) * | 2009-12-28 | 2011-06-30 | Ryuji Orita | Debugging module to load error decoding logic from firmware and to execute logic in response to an error |
CN102385533A (zh) * | 2010-08-30 | 2012-03-21 | 鸿富锦精密工业(深圳)有限公司 | 计算机及其内存运行错误时的重启方法 |
CN102495776A (zh) * | 2011-12-02 | 2012-06-13 | 浪潮集团有限公司 | 一种应用于云存储的存储控制器的bios调试方法 |
CN103927240A (zh) * | 2014-05-06 | 2014-07-16 | 成都西加云杉科技有限公司 | 应对软件崩溃的信息转储方法和装置 |
CN104050065A (zh) * | 2014-06-13 | 2014-09-17 | 浪潮电子信息产业股份有限公司 | 一种针对服务器开关机测试中故障定位的方法 |
CN104391765A (zh) * | 2014-10-27 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种自动诊断服务器启动故障的方法 |
CN104572465A (zh) * | 2015-01-05 | 2015-04-29 | 浪潮电子信息产业股份有限公司 | 一种新型BIOS Debug的方法 |
CN105159810A (zh) * | 2015-10-16 | 2015-12-16 | 合肥联宝信息技术有限公司 | 对计算机系统的bios进行测试的方法及装置 |
CN105512008A (zh) * | 2014-09-22 | 2016-04-20 | 华为技术有限公司 | 一种获取故障信息的方法及装置 |
CN105512000A (zh) * | 2014-09-24 | 2016-04-20 | 中兴通讯股份有限公司 | 一种操作系统异常信息收集方法、装置及计算机 |
CN105786545A (zh) * | 2014-12-25 | 2016-07-20 | 研祥智能科技股份有限公司 | 基于异构混合内存的断点恢复方法和系统 |
-
2017
- 2017-07-21 CN CN201710599325.XA patent/CN107480052B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770106A (zh) * | 2004-11-04 | 2006-05-10 | 华为技术有限公司 | 通信设备复位信息保存方法 |
US20070174603A1 (en) * | 2006-01-20 | 2007-07-26 | Asustek Computer Inc. | Method and system for maintaining system management BIOS |
CN101526911A (zh) * | 2009-03-26 | 2009-09-09 | 成都市华为赛门铁克科技有限公司 | 一种系统崩溃时系统信息存储方法及装置 |
US20110161736A1 (en) * | 2009-12-28 | 2011-06-30 | Ryuji Orita | Debugging module to load error decoding logic from firmware and to execute logic in response to an error |
CN102385533A (zh) * | 2010-08-30 | 2012-03-21 | 鸿富锦精密工业(深圳)有限公司 | 计算机及其内存运行错误时的重启方法 |
CN102495776A (zh) * | 2011-12-02 | 2012-06-13 | 浪潮集团有限公司 | 一种应用于云存储的存储控制器的bios调试方法 |
CN103927240A (zh) * | 2014-05-06 | 2014-07-16 | 成都西加云杉科技有限公司 | 应对软件崩溃的信息转储方法和装置 |
CN104050065A (zh) * | 2014-06-13 | 2014-09-17 | 浪潮电子信息产业股份有限公司 | 一种针对服务器开关机测试中故障定位的方法 |
CN105512008A (zh) * | 2014-09-22 | 2016-04-20 | 华为技术有限公司 | 一种获取故障信息的方法及装置 |
CN105512000A (zh) * | 2014-09-24 | 2016-04-20 | 中兴通讯股份有限公司 | 一种操作系统异常信息收集方法、装置及计算机 |
CN104391765A (zh) * | 2014-10-27 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种自动诊断服务器启动故障的方法 |
CN105786545A (zh) * | 2014-12-25 | 2016-07-20 | 研祥智能科技股份有限公司 | 基于异构混合内存的断点恢复方法和系统 |
CN104572465A (zh) * | 2015-01-05 | 2015-04-29 | 浪潮电子信息产业股份有限公司 | 一种新型BIOS Debug的方法 |
CN105159810A (zh) * | 2015-10-16 | 2015-12-16 | 合肥联宝信息技术有限公司 | 对计算机系统的bios进行测试的方法及装置 |
Non-Patent Citations (3)
Title |
---|
KAIR_WU: "UEFI国产计算机平台BIOS研讨", 《HTTPS://BLOG.CSDN.NET/KAIR_WU/ARTICLE/DETAILS/48323805》 * |
STEFANO RIGHI: "debugging firmware based on the unified extensible firmwaare interface", 《INTEL TECHNOLOGY JOURMAL》 * |
YUYIN86: "Linux内核的Oops和Linux kernel panic报错解决思路", 《HTTPS://BLOG.CSDN.NET/YUYIN86/ARTICLE/DETAILS/13167989》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522057A (zh) * | 2018-11-27 | 2019-03-26 | 无锡睿勤科技有限公司 | 一种设备启动方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107480052B (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6906936B1 (en) | Data preclassifier method and apparatus for content addressable memory (CAM) device | |
US6353910B1 (en) | Method and apparatus for implementing error correction coding (ECC) in a dynamic random access memory utilizing vertical ECC storage | |
FR2612316A1 (fr) | Carte a circuits integres ayant une capacite de verification d'erreur interne | |
CN108694985B (zh) | 用于检测存储器故障的测试方法及测试电路 | |
JPS635839B2 (zh) | ||
US8365277B2 (en) | Signature string storage memory optimizing method, signature string pattern matching method, and signature string matching engine | |
CN112579595A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
US8923030B2 (en) | On-die programmable fuses | |
US5923612A (en) | Synchronous semiconductor memory device having macro command storage and execution method therefor | |
FR3055992A1 (fr) | Gestion d'index dans une memoire flash | |
CN108228105A (zh) | 一种ssd硬盘的数据处理方法和装置 | |
US7334170B2 (en) | Method for resolving parameters of DRAM | |
CN107480052A (zh) | 一种定位宕机时bios代码的方法及装置 | |
US7949698B2 (en) | Circuit arrangement and method for initializing a random number generator | |
US6988164B1 (en) | Compare circuit and method for content addressable memory (CAM) device | |
JP4863279B2 (ja) | メモリシステム及びメモリアクセス方法 | |
US9922720B2 (en) | Random fuse sensing | |
US5748886A (en) | Data check method for an external memory and check system for an external ROM data | |
US8214305B1 (en) | Pattern matching system and method for data streams, including deep packet inspection | |
CN110633777B (zh) | 一种物理不可复制功能标签产生方法及电路 | |
US9472302B2 (en) | Redundant fuse coding | |
US9916281B2 (en) | Processing system with a secure set of executable instructions and/or addressing scheme | |
US20190163899A1 (en) | Load time anti-propagationprotection for a machine ... | |
CN116580748B (zh) | 内存芯片测试治具的配置方法、装置、设备及存储介质 | |
CN111459741B (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 |