一种bios远程网络调试方法

文档序号:6402086阅读:311来源:国知局
专利名称:一种bios远程网络调试方法
技术领域
本发明涉及计算机技术领域,特别涉及对UEFI BIOS进行的远程网络调试方法。
背景技术
目前,BIOS源代码调试依赖以下几种方式实现:
1、串口调试方式;
2、USB接口调试方式;
3、JTAG接口调试方式。
其中,第一种调试方式需要主板提供串口,而目前很多主板已经取消SuperIO芯片,自然也就没有 串口 ;第二种调试方式需要所使用的USB接口必须是调试接口,有时这一点并不能够满足;第三种调试方式使用的JTAG接口需要主板重新焊接JTAG接口,不具通用性。发明内容
为解决上述问题,本发明提供了一种BIOS远程网络调试方法。
根据本发明的一个方面,提供的一种BIOS远程网络调试方法包括:
A)在被调试主机的状态报告驱动器中安装网络调试引擎;
B)网络调试引擎接收中断消息,并根据所述中断消息,中断BIOS源代码运行;
C)网络调试引擎将所述BIOS源代码和CPU所有寄存器组信息发送至远端调试主机,以便远端调试主机下发调试任务;
其中,BIOS是基本输入输出系统,CPU是中央处理器。
优选地,在所述步骤A)中,所述网络调试引擎包括应用于UEFI BIOS启动期间PEI阶段的PEI驱动器、应用于UEFI BIOS启动期间DXE阶段和BDS阶段的DXE驱动器,其中,UEFI是通用扩展固件接口,PEI是预可扩展固件接口初始化阶段,DXE是驱动执行环境阶段,BDS是启动设备选择阶段。
优选地,在所述步骤B)中,所述中断消息是BIOS源代码中的断点消息,所述断点消息通过状态报告驱动器拦截并发送至网络调试引擎。
优选地,在PEI阶段或DXE/BDS阶段,网络调试引擎的PEI驱动器或DXE驱动器接收所述断点消息,并根据所述断点消息,保存当前CPU工作环境参数信息,中断BIOS源代码运行。
优选地,所述中断消息是来自远端调试主机的用户中断指令,所述用户中断指令通过状态报告驱动器拦截并发送至网络调试引擎。
优选地,在PEI阶段或DXE/BDS阶段,网络调试引擎的PEI驱动器或DXE驱动器接收所述用户中断指令,并根据所述用户中断指令,保存当前CPU工作环境参数信息,中断BIOS源代码运行。
优选地,在所述步骤C)中,所述远程调试主机下发调试任务的步骤包括:
远端调试主机显示其收到的被调试主机的BIOS源代码和CPU所有寄存器组信息,并根据所述BIOS源代码和CPU所有寄存器组信息,将用户调试指令发送至被调试主机,以便被调试主机按照所述用户调试指令执行调试任务。
优选地,在所述步骤C)之后,还包括:
在BIOS远程网络调试完成后,按照已保存的CPU工作环境参数信息,继续运行UEFI BIOS。
优选地,还包括:
D)在PEI阶段或DXE/BDS阶段,状态报告驱动器拦截BIOS源代码中的调试消息,并将所述调试消息发送至网络调试引擎;
E)网络调试引擎的PEI驱动器或DXE驱动器根据所述调试消息,将所述调试消息对应的调试字符串发送至远端调试主机,以便远端调试主机显示所述调试字符串。
优选地,在所述步骤A)前,还包括:
在PEI阶段,安装用于驱动网卡的网卡驱动器,以便网络调试引擎对所述网卡进行相应操作。
与现有技术相比较,本发明的有益效果在于:
本发明实现了一种通用的BIOS源代码的调试方法,被调试主机只需连接网络即可实现远程调试,为用户带来便利。


图1是本发明提供的BIOS远程调试方法流程;
图2是本发明第一实施例提供的PEI阶段调试流程图3是本发明第二实施例提供的PEI阶段调试流程图4是本发明第三实施例提供的DXE阶段和BDS阶段调试流程图5是本发明第四实施例提供的DXE阶段和BDS阶段调试流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1是本发明提供的BIOS远程调试方法流程,如图1所示,步骤包括:
步骤101:在被调试主机的状态报告驱动器Status Report Driver中安装网络调试引擎,进一步说,当前的UEFI架构会提前挂好一个Status Report Driver,在该StatusReport Driver中接收所有的debug消息及断点消息,故需要安装网络调试引擎在StatusReport driver的下一层,当Status Report Driver收到Debug消息和断点消息后,即可发给网络调试引擎进行处理,即BIOS将网络调试引擎作为过滤器安装到Status ReportDriver 中。
在所述步骤101之前,还包括网卡初始化步骤,即BIOS在PEI阶段中完成网卡初始化,安装网卡驱动程序。
步骤102:网络调试引擎接收中断消息,并根据所述中断消息,中断BIOS源代码运行。具体地说,当系统 需要进行调试时,会呼叫Status Report driver,这时即可进入网络调试引擎,网络调试引擎保存当前CPU工作环境参数信息。
步骤103:网络调试引擎将所述BIOS源代码和CPU所有寄存器组信息发送至远端调试主机,然后,开始接收远端调试主机通过网络发送过来的用户调试指令,并按照所述用户调试指令,执行相应的调试任务,例如单步运行、多步运行、设定断点、重新启动等。
由上述步骤可知,被调试机器可放置于任何位置,其只需与远程调试主机连接在网络中(例如同一局域网内),即可实现BIOS源代码的远程网络调试。
本发明设计了一个网络调试引擎,并将此网络调试引擎嵌入到BIOS ROM中,当需要进行调试时,利用网络协议,即可实现网络调试。
UEFI BIOS启动分为SEC、PE1、DXE、BDS、RT五个阶段。其中,SEC阶段是机器最早的启动阶段,此段时间很短,代码大约是上千行左右;PEI阶段是UEFI BIOS运行中的第二阶段,即预可扩展固件接口初始化阶段,该阶段CPU工作在保护模式32位状态,启动并初始化内存控制器,完成一些最基本的硬件芯片初始化工作;DXE阶段是UEFI BIOS运行中的第三阶段,即驱动执行环境阶段,该阶段CPU工作模式转为64位保护模式中的长模式,BIOS装载所有的硬件芯片驱动程序,完成所有硬件的初始化动作;BDS阶段指启动设备选择阶段,当UEFI BIOS运行到此阶段时,意味着将根据BIOS预先设定好的启动顺序,开始启动操作系统。
因此,本发明所述的网络调试引擎分别根据PEI阶段和DXE阶段的特点,进行相应设计。所设计的网络调试引擎要包括两个网络调试驱动器,即在PEI阶段使用的PEI驱动器,以及在DXE阶段和BDS阶段使用的DXE驱动器。所述PEI驱动器和所述DXE驱动器可以分别理解为PEI驱动程序和DXE驱动程序。以上两个网络调试驱动器会挂在StatusReport Driver的下一层,拦下所有的断点消息和Debug消息。另外,所述两个网络调试驱动器也会不断接收远端调试主机发来的用户中断指令,随时中断BIOS 源代码运行,然后即可在远端调试主机的屏幕上显示出当前的BIOS源代码和CPU寄存器组相关信息。
图2是本发明第一实施例提供的PEI阶段调试流程图,如图2所示,步骤包括:
步骤201:在UEFI BIOS启动期间PEI阶段,安装PEI驱动器。
步骤202:PEI驱动器接收中断消息,并根据所述中断消息,中断BIOS源代码运行。
步骤203:PEI驱动器根据收到的所述中断消息,保存当前CPU工作环境参数信息,中断BIOS源代码运行,并向远端调试主机发送BIOS源代码和CPU所有寄存器组相关信息,例如EAX、EBX、ECX、EDX、EBP、ESP、CS及EIP、APIC寄存器组和MSR寄存器组相关信息。
所述中断消息可以是BIOS源代码中的断点消息,所述断点消息通过状态报告驱动器拦截并发送至PEI驱动器,PEI驱动器根据收到的所述断点消息,保存当前CPU工作环境参数信息,中断BIOS源代码运行。断点消息即是ASSERT (条件)宏,当条件为布尔值FALSE时,启动网络调试引擎,中断当前BIOS源代码运行,以便进行下一步调试。例如:PEI_ASSERT (PeiServices, EndpointIndex<=15) ;// 当 EndPointIndex>15 时,就会跳转到 PEI驱动器,保存当前CPU工作环境参数信息,中断当前主机运行,并且将当前BIOS源代码和CPU寄存器组通过局域网络传送到远程调试主机,由用户决定下一步调试工作。
所述中断消息还可以是来自远端调试主机的用户中断指令,所述用户中断指令通过状态报告驱动器拦截并发送至PEI驱动器。具体地说,远端调试主机可以通过局域网络发出用户中断指令,网络调试引擎的PEI驱动器收到所述用户终端指令后,即可保存当前CPU工作环境参数信息,中断当前BIOS源代码运行,并将当前BIOS源代码和CPU所有寄存器组信息通过网络传送给远端调试主机,以便进行下一步调试。
步骤204:远端调试主机显示其收到的被调试主机的BIOS源代码和CPU所有寄存器组信息,并根据所述BIOS源代码和CPU所有寄存器组信息,将用户调试指令发送至被调试主机。
步骤205 =PEI驱动器按照所述用户调试命令,对被调试主机进行相应的调试,例如单步运行、多步运行等等。
步骤206:调试完毕后,根据步骤203中所保存的CPU工作环境参数信息,继续运行BIOS源代码。
图3是本发明第二实施例提供的PEI阶段调试流程图,如图3所示,步骤包括:
步骤301:在PEI阶段,状态报告驱动器拦截BIOS源代码中的调试Debug消息,并将所述Debug消息发送至PEI驱动器。
步骤302:网络调试引擎的PEI驱动器根据所述Debug消息,将所述Debug消息对应的调试字符串发送至远端调试主机。
步骤303:远端调试主机显示所述调试字符串。
所述Debug消息格式为=Debug (“调试字符串”),是用来在运行BIOS时,不断通过局域网络将调试字符串输出到远端调试主机的屏幕中,被调试主机并不会被中断,而是会一直运行。
第一实施例中所述断点消息和第二实施例中所述Debug消息均来源于UEFI BIOS源代码,在BIOS源代码调试开发阶段,会在BIOS源代码中加入大量的Debug消息及断点消息,当运行到此点时,即要呼叫Status Report Driver进行处理。由于本发明在所述StatusReport Driver的下一层已经安装了网络调试引擎,当Status Report Driver收到消息后,即可发送给网络调试引擎进行处理。
图4是本发明第三实施例提供的DXE阶段和BDS阶段调试流程图,如图4所示,步骤包括:
步骤401:在UEFI BIOS启动期间DXE阶段,安装DXE驱动器。
步骤402:在DXE/BDS阶段,DXE驱动器接收中断消息,并根据所述中断消息,中断BIOS源代码运行。
步骤403:DXE驱动器根据收到的所述中断消息,保存当前CPU工作环境参数信息,中断BIOS源代码运行,并向远 端调试主机发送BIOS源代码和CPU所有寄存器组相关信息,例如EAX、EBX、ECX、EDX、EBP、ESP、CS及EIP、APIC寄存器组和MSR寄存器组相关信息。
所述中断消息可以是BIOS源代码中的断点消息,所述断点消息通过状态报告驱动器拦截并发送至DXE驱动器,DXE驱动器根据收到的所述断点消息,保存当前CPU工作环境参数信息,中断BIOS源代码运行。断点消息即是ASSERT (条件)宏,当条件为布尔值FALSE时,启动网络调试引擎,中断当前BIOS源代码运行,以便进行下一步调试。
所述中断消息还可以是来自远端调试主机的用户中断指令,所述用户中断指令通过状态报告驱动器拦截并发送至DXE驱动器。具体地说,在DXE阶段,CPU工作在64位保护横式,然后BIOS在运行硬盘驱动程序,远端调试主机可以通过网络发出用户中断指令,网络调试引擎的DXE驱动器即可保存当前CPU工作环境参数信息,中断当前BIOS源代码运行,并将当前BIOS源代码和CPU所有寄存器组信息通过网络传送给远端调试主机,以便进行下一步调试。在BDS阶段:CPU工作在64位保护横式,然后BIOS试图启动WIN0,远端调试主机可以通过网络发出用户中断指令,网络调试引擎的DXE驱动器即可保存当前CPU工作环境参数信息,中断当前BIOS源代码运行,并将当前BIOS源代码和CPU所有寄存器组通过网络传给远端调试主机,以便进行下一步调试。
步骤404:DXE驱动器接收来自远端调试主机的用户调试命令。
步骤405 =DXE驱动器按照所述用户调试命令,对被调试主机进行相应的调试,例如单步运行、多步运行等等。
步骤406:调试完毕后,根据步骤403中所保存的CPU工作环境参数信息,继续运行BIOS源代码。
图5是本发明第四实施例提供的DXE阶段和BDS阶段调试流程图,如图5所示,步骤包括:
步骤501:在DXE/BDS阶段,状态报告驱动器拦截BIOS源代码中的调试Debug消息,并将所述Debug消息发送至DXE驱动器。
步骤502:网络调试引擎的DXE驱动器根据所述Debug消息,将所述Debug消息对应的调试字符串发送至远端调试主机。
步骤503:远端调试主机显示所述调试字符串。
所述Debug消息格式为:Debug( “调试字符串”),是用来在运行BIOS时,不断通过局域网络将调试字符串输出到远端调试主机的屏幕中,被调试主机并不会被中断,而是会一直运行。例如,DXE_DEBUG(EFI_D_ERR0R, "PeiUsbSetDeviceAddress FailedXn")) ;//当UEFI BIOS运行到此行代码时,UEFI BIOS会调用网络调试引擎的DXE驱动器,将"PeiUsbSetDeviceAddress Failed"字符串通过网络发送到远端调试主机,并在所述远端调试主机的屏幕上显示,用户可以据此判定当前系统运行状况,但是UEFI BIOS在输出调试字符串后,仍会继续运行,并不会中断下来。
第三实施例中所述断点消息和第四实施例中所述Debug消息均来源于UEFI BIOS源代码,在BIOS源 代码调试开发阶段,会在BIOS源代码中加入大量的Debug消息及断点消息,当运行到此点时,即要呼叫Status Report Driver进行处理。由于本发明在所述StatusReport Driver的下一层已经安装了网络调试引擎,当Status Report Driver收到消息后,即可发送给网络调试引擎进行处理。
本发明中,由于所述网络调试引擎需要对网卡进行操作,例如,收发网络数据包、查询当前网络传输状态(如网络是否通畅)等,因此,在安装网络调试引擎前,BIOS在PEI阶段安装用于驱动网卡的网卡驱动器,以便网络调试引擎对所述网卡进行相应操作。
本发明所述的利用网络调试的技术目前并未出现,本发明相当于是增加了一种新的调试方法,并且利用所述网络调试,用户无需接近被调试主机,比其它的调试方法更方便。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
权利要求
1.一种BIOS远程网络调试方法,其特征在于,包括: A)在被调试主机的状态报告驱动器中安装网络调试引擎; B)网络调试引擎接收中断消息,并根据所述中断消息,中断BIOS源代码运行; C)网络调试引擎将所述BIOS源代码和CPU所有寄存器组信息发送至远端调试主机,以便远端调试主机下发调试任务; 其中,BIOS是基本输入输出系统,CPU是中央处理器。
2.根据权利要求1所述的方法,其特征在于,在所述步骤A)中,所述网络调试引擎包括应用于UEFI BIOS启动期间PEI阶段的PEI驱动器、应用于UEFI BIOS启动期间DXE阶段和BDS阶段的DXE驱动器,其中,UEFI是通用扩展固件接口,PEI是预可扩展固件接口初始化阶段,DXE是驱动执行环境阶段,BDS是启动设备选择阶段。
3.根据权利要求2所述的方法,其特征在于,在所述步骤B)中,所述中断消息是BIOS源代码中的断点消息,所述断点消息通过状态报告驱动器拦截并发送至网络调试引擎。
4.根据权利要求3所述的方法,其特征在于,在PEI阶段或DXE/BDS阶段,网络调试引擎的PEI驱动器或DXE驱动器接收所述断点消息,并根据所述断点消息,保存当前CPU工作环境参数信息,中断BIOS源代码运行。
5.根据权利要求2所述的方法,其特征在于,在所述步骤B)中,所述中断消息是来自远端调试主机的用户中断指令,所述用户中断指令通过状态报告驱动器拦截并发送至网络调试引擎。
6.根据权利要求5所述的方法,其特征在于,在PEI阶段或DXE/BDS阶段,网络调试引擎的PEI驱动器或 DXE驱动器接收所述用户中断指令,并根据所述用户中断指令,保存当前CPU工作环境参数信息,中断BIOS源代码运行。
7.根据权利要求4或6所述的方法,其特征在于,在所述步骤C)中,所述远端调试主机下发调试任务的步骤包括: 远端调试主机显示其收到的被调试主机的BIOS源代码和CPU所有寄存器组信息,并根据所述BIOS源代码和CPU所有寄存器组信息,将用户调试指令发送至被调试主机,以便被调试主机按照所述用户调试指令执行相应的调试任务。
8.根据权利要求7所述的方法,其特征在于,在所述步骤C)之后,还包括: 在BIOS远程网络调试完成后,按照已保存的CPU工作环境参数信息,继续运行UEFIBIOS。
9.根据权利要求1所述的方法,其特征在于,还包括: D)在PEI阶段或DXE/BDS阶段,状态报告驱动器拦截BIOS源代码中的调试消息,并将所述调试消息发送至网络调试引擎; E)网络调试引擎的PEI驱动器或DXE驱动器根据所述调试消息,将所述调试消息对应的调试字符串发送至远端调试主机,以便远端调试主机显示所述调试字符串。
10.根据权利要求1所述的方法,其特征在于,在所述步骤A)前,还包括: 在PEI阶段,安装用于驱动网卡的网卡驱动器,以便网络调试引擎对所述网卡进行相应操作。
全文摘要
本发明公开了一种BIOS远程网络调试方法,涉及计算机技术领域,所述方法包括A)在被调试主机的状态报告驱动器中安装网络调试引擎;B)网络调试引擎接收中断消息,并根据所述中断消息,中断BIOS源代码运行;C)网络调试引擎将所述BIOS源代码和CPU所有寄存器组信息发送至远端调试主机,以便远端调试主机下发调试任务;其中,所述BIOS是基本输入输出系统,所述CPU是中央处理器。本发明实现了BIOS源代码的远程网络调试,被调试主机只需连接网络即可实现远程调试,为用户带来便利。
文档编号G06F11/36GK103235755SQ20131013152
公开日2013年8月7日 申请日期2013年4月16日 优先权日2013年4月16日
发明者郑红文 申请人:合肥联宝信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1