基于cpu不可屏蔽中断系统问题诊断的调试方法

文档序号:6369641阅读:375来源:国知局
专利名称:基于cpu不可屏蔽中断系统问题诊断的调试方法
技术领域
本发明涉及一种基于CPU不可屏蔽中断系统问题诊断的调试方法,属于计算机系统故障诊断技术领域。
背景技术
目前,不可屏蔽中断NMI (Non-maskable-interrupt)是在计算机遇到严重错误时,其是由硬件电路向CPU发出的一种中断信号。与普通中断不同的是,即使CPU的状态寄存器设置为屏蔽所有软硬件中断,匪I 一旦产生,CPU将立即响应。正是由于这种特性,通常情况下匪I用于严重故障处理和故障恢复。在系统出现匪I的情况下,系统不能进行任何响应,其他常规的调试手段均不能发挥作用。在这种情况下,就会给用户的使用带来种种不 便,发生匪I时,用户无从知道计算机系统出现何种故障,为用户解决故障造成了麻烦。因此十分需要一种解决上述问题的调试方法。

发明内容
发明目的针对现有技术中存在的问题与不足,本发明提供一种通过控制CPU的匪I引脚,激活CPU,从而把故障时刻的现场信息呈现出来,便于用户找出系统故障原因的基于CPU不可屏蔽中断系统问题诊断的调试方法。技术方案一种基于CPU不可屏蔽中断系统问题诊断的调试方法,包括如下步骤步骤1,进入基本输入输出系统(BIOS);步骤2,匪I由严重硬件故障触发,通常的处理方法是重新启动硬件系统,因此匪I的入口地址和系统复位地址相同。当发生匪I时,系统将简单的重启机器。然而要利用匪I进行故障定位和调试,需要判断计算机当前状态是重启还是不可屏蔽中断;如果计算机当前状态是重启(包括冷重启和热重启),则BIOS执行启动,装载内核启动系统;如果计算机当前状态是不可屏蔽中断,则在BIOS中加入不可屏蔽中断的处理例程;步骤3,进入不可屏蔽中断的处理例程;步骤4,输出调试过程信息;步骤5,定位系统故障原因。所述不可屏蔽中断的处理例程的步骤如下步骤30,保存CPU当前的状态信息;步骤31,修改异常返回地址(EPC)寄存器,使其最低位为1,并将修改后的EPC寄存器称为强制触发的地址;匪1发生时,故障时所执行指令地址保存在EPC寄存器中。因为匪I表示了一种硬件错误,直接返回到这个地址,系统并不能正常工作。利用匪I进行Bug调试时,可以修改EPC寄存器,使其最低位为I,然后通过ERET指令跳到内核执行。由于EPC最低位为1,在返回到系统时将立即触发地址非对齐例外,进入地址例外处理。所述步骤30中,因BIOS存储在ROM中,并在ROM中执行,因此对变量不能进行修改,需通过与操作系统内核协商,开辟一个专用的内存区域进行对CPU当前状态保存。
所述CPU当前的状态信息包括CPU状态寄存器信息、Performance Counter寄存器(用来对CPU执行指令计数)信息、BadVaddr以及Cause寄存器信息。所述步骤32中,地址例外处理的具体步骤为步骤320,开启性能计数器Performance Counter,并在时钟中断处理中周期性的将性能计数器Performance Counter记录到一个变量;步骤321,判断当前例外处理是系统默认的地址例外处理还是强制触发的地址例夕卜,如果是强制触发的地址例外,则进入步骤4。步骤4中所述的状态信息包括寄存器、调用堆栈、EPC、以及步骤30中保存的BadVaddr 和 Performance Counter 信息。定位系统故障原因的方法是,通过步骤30中保存的BIOS中Performance Counter信息和内核中最后记录的Performance Counter信息判断在发生严重故障时CPU是否停止 还是陷入死循环;通过分析BIOS中记录的EPC信息找出发生严重错误所执行的指令;通过分析调用堆栈信息找出触发错误的指令序列。有益效果与现有技术相比,本发明所提供的本专利的基于CPU不可屏蔽中断系统问题诊断的调试方法,独特之处在于计算机已经发生死机,系统不能进行任何响应,其他常规的调试手段均不能发挥作用时,通过控制CPU的匪I引脚,进入BI0S,从而把故障时刻的现场信息呈现出来给用户,帮助用户找出故障原因。


图I为本发明实施例的流程图。
具体实施例方式下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。如图I所示本实施例公开的基于CPU不可屏蔽中断系统问题诊断的调试方法,包括如下步骤进入BIOS。判断计算机当前状态是重启还是不可屏蔽中断;如果计算机当前状态是重启,则BIOS执行启动,装载内核启动系统;如果计算机当前状态是不可屏蔽中断,则在BIOS中加入不可屏蔽中断的处理例程。进入不可屏蔽中断的处理例程通过与操作系统内核协商,开辟一个专用的内存区域,保存CPU当前的寄存器信息、Performance Counter寄存器信息、BadVaddr以及Cause寄存器信息;修改EPC寄存器,使其最低位为1,并将修改后的EPC寄存器称为强制触发的地址;然后通过ERET指令跳到内核执行地址例外处理。开启性能计数器Performance Counter,并在时钟中断处理中周期性的将性能计数器Performance Counter记录到一个变量。判断当前例外处理是系统默认的地址例外处理还是强制触发的地址例外,如果是强制触发的地址例外,则输出寄存器、调用堆栈、EPC、以及BIOS中保存的BadVaddr和Performance Counter信息等调试过程信息。通过保存的BIOS中Performance Counter信息和内核中最后记录的PerformanceCounter信息判断在发生严重故障时CPU是否停止还是陷入死循环;通过分析BIOS中记录的EPC信息找出发生严重错误所执行的指令;通过分析调用堆栈信息找出触发错误的指令序列。本实施例的方法在基于MIPS CPU的计算机上已经成功应用,并取得良好的效果, 对于其他CPU的调试,操作方法与本实施例相同。
权利要求
1.一种基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于,包括如下步骤 步骤I,进入基本输入输出系统; 步骤2,判断计算机当前状态是重启还是不可屏蔽中断;如果计算机当前状态是重启,则基本输入输出系统执行启动,装载内核启动系统;如果计算机当前状态是不可屏蔽中断,则在基本输入输出系统中加入不可屏蔽中断的处理例程; 步骤3,进入不可屏蔽中断的处理例程; 步骤4,输出调试过程信息; 步骤5,定位系统故障原因。
2.如权利要求I所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于步骤I中所述重启包括冷重启和热重启。
3.如权利要求I所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在干,所述不可屏蔽中断的处理例程的步骤如下 步骤30,保存CPU当前的状态信息; 步骤31,修改EPC寄存器,使其最低位为1,并将修改后的EPC寄存器称为强制触发的地址; 步骤32,跳至内核,进行地址例外处理。
4.如权利要求3所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于所述步骤30中,通过与操作系统内核协商,开辟ー个专用的内存区域进行对CPU当前状态保存。
5.如权利要求3或4所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于所述CPU当前的状态信息包括CPU状态寄存器信息、Performance Counter寄存器信息、BadVaddr以及Cause寄存器信息。
6.如权利要求3所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在干,所述步骤32中,地址例外处理的具体步骤为 步骤320,开启性能计数器Performance Counter,并在时钟中断处理中周期性的将性能计数器Performance Counter记录到一个变量; 步骤321,判断当前例外处理是系统默认的地址例外处理还是强制触发的地址例外,如果是强制触发的地址例外,则进入步骤4。
7.如权利要求I所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于步骤4中所述的状态信息包括寄存器、调用堆栈、EPC、以及步骤30中保存的BadVaddr和Performance Counter 信息。
8.如权利要求I所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于定位系统故障原因的方法是,通过步骤30中保存的基本输入输出系统中PerformanceCounter信息和内核中最后记录的Performance Counter信息判断在发生严重故障时CPU是否停止还是陷入死循环;通过分析基本输入输出系统中记录的EPC信息找出发生严重错误所执行的指令;通过分析调用堆栈信息找出触发错误的指令序列。
全文摘要
本发明公开了一种基于CPU不可屏蔽中断系统问题诊断的调试方法,是系统问题诊断的调试方法。包括步骤(1)进入基本输入输出系统;(2)判断计算机当前状态是重启还是不可屏蔽中断;如果计算机当前状态是重启,则基本输入输出系统执行启动,装载内核启动系统;如果计算机当前状态是不可屏蔽中断,则在基本输入输出系统中加入不可屏蔽中断的处理例程;(3)进入不可屏蔽中断的处理例程;(4)输出调试过程信息;(5)定位系统故障原因。通过上述方法的执行,能将系统中断过程中的故障线索展现出来,便于用户排除故障。
文档编号G06F11/00GK102708015SQ20121014910
公开日2012年10月3日 申请日期2012年5月15日 优先权日2012年5月15日
发明者吴少刚, 张斌, 张福新, 晏华 申请人:江苏中科梦兰电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1