买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于UEFI的固件模块调试方法和系统_昆仑太科(北京)技术股份有限公司_201910267943.3 

申请/专利权人:昆仑太科(北京)技术股份有限公司

申请日:2019-04-03

公开(公告)日:2023-12-26

公开(公告)号:CN109992517B

主分类号:G06F11/36

分类号:G06F11/36

优先权:

专利状态码:有效-授权

法律状态:2023.12.26#授权;2019.08.02#实质审查的生效;2019.07.09#公开

摘要:本发明公开了一种基于UEFI的固件模块调试方法和系统,包括:在开发主机系统上进行UEFI固件的代码编码、编译和打包,生成固件卷FV1和固件卷FV2以及只包含所述固件卷FV2的固件二进制文件;将固件二进制文件存储至目标主机系统中;在目标主机系统运行固件二进制文件中包含的固件卷FV2中的驱动模块,目标主机系统接收开发主机系统信息传送请求后,发送应答消息至开发主机系统,并等待接收固件卷FV1;开发主机系统发送固件卷FV1给目标主机系统,目标主机系统接收到固件卷FV1后,加载运行固件卷FV1中的驱动模块,从而完成UEFI固件的运行。上述方法和系统的调试效率较高且成本较低。

主权项:1.一种基于UEFI的固件模块调试方法,其特征在于,包括:在开发主机系统上进行UEFI固件的代码编码、编译和打包,生成固件卷FV1、固件卷FV2和只包含所述固件卷FV2的固件二进制文件;其中,将正在调试的目标驱动以及和目标驱动有强关联的驱动单独打包成一个所述固件卷FV1,而其他和目标驱动没有强关联的驱动另外打包成一个所述固件卷FV2,所述固件卷FV2为一个或者多个;其中所述和目标驱动有强关联的驱动是当目标驱动代码发生变化重新编译时,需要重新编译的驱动为强关联驱动;将所述固件二进制文件存储至目标主机系统中;在所述目标主机系统运行所述固件二进制文件中包含的所述固件卷FV2中的驱动模块,并通过所述开发主机系统向所述目标主机系统发送信息传送请求;所述目标主机系统接收所述信息传送请求后,发送应答消息至所述开发主机系统,并等待接收所述固件卷FV1;所述开发主机系统发送固件卷FV1给所述目标主机系统;所述目标主机系统接收到所述固件卷FV1后,加载运行固件卷FV1中的驱动模块,从而完成UEFI固件的运行。

全文数据:基于UEFI的固件模块调试方法和系统技术领域本发明涉及一种计算机应用领域,特别涉及一种基于UEFI的固件模块调试方法和系统。背景技术固件是计算机系统中的重要基础软件,固化存储于硬件的芯片中。计算机的主板、显卡、网卡、硬盘中都有固件,虽然作用不同,但是本质上都是使能和驱动硬件。计算机中最重要的固件称为BIOS(BasicInputOutputSystem,基本输入输出系统),用于初始化硬件、管理硬件资源、屏蔽平台特性、引导操作系统,是连接计算机基础硬件和系统软件的桥梁。在BIOS的发展经历了两个时代,第一个时代的BIOS称之为legacyBIOS,第二个时代的BIOS称之为UEFIUnifiedExtensibleFirmwareInterface,统一的可扩展固件接口BIOS,UEFIBIOS是一种基于UEFI规范开发的固件,有时简称UEFI固件。UEFI规范是从EFI(ExtensibleFirmwareInterface,可扩展固件接口)发展而来的。EFI是Intel为计算机固件的体系结构、接口和服务提出的建议标准。UEFI是由EFI1.10为基础发展而来,它的所有者已不再是Intel,而是一个称为UnifiedUEFIForm的国际组织。在开发UEFI固件的过程中,必然要对UEFI固件进行调试。目前,UEFI固件的调试方法主要是先在开发机上进行编码、编译和打包;而后,通过烧录器将编译打包生成的固件二进制文件烧录到目标主机的非易失性存储芯片上;最后,固件在目标主机上运行时中,通过串口或80输入输出端口输出调试信息来进行固件调试。这种方法的局限性在于,修改了UEFI固件的任意源代码,就都需要在开发主机上进行重新编译和打包,而后再重新烧录到目标主机进行调试,开发效率低下。还有一种UEFI固件的调试方法是在开发主机上完成了代码编译、打包后,通过连接在开发主机和目标主机之间的专用设备和线缆将打包后的固件二进制加载到目标机中进行运行调试。这种方法的局限性在于需要昂贵的专用设备,且针对不同的CPU不具有通用性。发明内容本发明主要解决的技术问题是:提供一种调试效率较高且成本较低的基于UEFI的固件模块调试方法和系统。一种基于UEFI的固件模块调试方法,包括:在开发主机系统上进行UEFI固件的代码编码、编译和打包,生成固件卷FV1、固件卷FV2,和只包含所述固件卷FV2的固件二进制文件;将所述固件二进制文件存储至目标主机系统中;在所述目标主机系统运行所述固件二进制文件中包含的固件卷FV2中的驱动模块,并通过所述开发主机系统向所述目标主机系统发送信息传送请求;所述目标主机系统接收所述信息传送请求后,发送应答消息至所述开发主机系统,并等待接收所述固件卷FV1;所述开发主机系统发送固件卷FV1给所述目标主机系统;所述目标主机系统接收到所述固件卷FV1后,加载运行固件卷FV1中包含的驱动模块,从而完成UEFI固件的运行。在其中一个实施例中,所述开发主机系统上安装有烧录软件,所述二进制文件通过所述烧录软件烧录至所述目标主机系统中。在其中一个实施例中,所述固件二进制文件存储在所述目标主机系统的非易失性存储器中。在其中一个实施例中,所述开发主机系统上安装有串口终端软件,所述开发主机系统通过所述串口终端软件向所述目标主机系统发送信息传送请求。在其中一个实施例中,所述开发主机系统通过串口终端以串口文件传输协议的方式发送所述固件卷FV1给所述目标主机系统。一种基于UEFI的固件模块调试的系统,包括开发主机系统和目标主机系统,所述开发主机系统包括:UEFI固件编译环境,用于进行UEFI固件的代码编码、编译和打包,生成固件卷FV1,固件卷FV2,和只包含所述固件卷FV2的固件二进制文件;第一传输接口,用于与所述目标主机系统进行信息传输;所述目标主机系统,包括存储单元,用于存储从所述开发主机系统接收的所述固件二进制文件;加载运行单元,用于运行所述固件二进制文件中包含的固件卷FV2中的驱动模块,以及加载运行从所述开发主机系统接收到所述固件卷FV1中包含的驱动模块;第二传输接口,用于与所述开发主机系统进行信息传输;在其中一个实施例中,所述开发主机系统上安装有烧录软件,所述固件二进制文件通过所述烧录软件烧录至所述目标主机系统中。在其中一个实施例中,所述存储单元为非易失性存储器,所述固件二进制文件存储在所述非易失性存储器中。在其中一个实施例中,所述开发主机系统上安装有串口终端软件,所述开发主机系统通过所述串口终端软件向所述目标主机系统发送信息传送请求。在其中一个实施例中,所述开发主机系统通过串口终端以串口文件传输协议的方式发送所述固件卷FV1给所述目标主机系统。在其中一个实施例中,所述开发主机系统通过串口终端给所述目标主机系统发送所述固件卷FV1采用的串口文件传输协议为Xmodem、Ymodem和Zmodem中的一种。本发明的有益效果是:与现有技术相比,上述基于UEFI的固件模块调试方法和系统固件模块调试系统,将正在调试的UEFI驱动模块以及和其有强关联的驱动模块组成一个较小的FV1,其他的驱动模块组成一个较大的FV2,并将FV2打包成一个固件二进制文件。然后将固件二进制文件一次性烧录到目标主机系统中,而每次由于调试代码修改而重新编译生成的FV1通过串口传送给目标主机系统。这样就减少了烧录UEFI固件的次数,提高了UEFI固件的调试效率,延长了目标主机系统非易失性存储器的寿命,同时固件模块调试系统没有用到专门的调试设备而是使用了常见的串口设备,烧录器由于只需要烧录一次,从而可以让多个开发人员进行共用,这样也就减小了UEFI固件的调试成本。附图说明图1为一实施方式的基于UEFI的固件模块调试方法流程图。图2为一实施方式的基于UEFI的固件模块调试的系统架构图。具体实施方式一实施方式的基于UEFI的固件模块调试方法,包括:S110、在开发主机系统上进行UEFI固件的代码编码、编译和打包,生成固件卷FV1,固件卷FV2和只包含固件卷FV2的固件二进制文件;在上述基于UEFI的固件模块调试方法中,UEFI规范称为可扩展的固件接口规范,是因为UEFI固件的设计是模块化的,即每个驱动都可以设计成独立的代码模块,驱动之间的通信是通过UEFI规范定义的PPI和Protocol来进行通信的。每个驱动的代码模块经过编译后会生存一个对应的驱动二进制文件,而后这些组成UEFI固件的各个驱动二进制文件会以一定的方式进行打包,生成一个二进制文件,并最终烧录到目标机中的非易失性存储器中。在UEFI固件编译打包时,每个驱动的二进制文件及这个驱动运行的一些条件和数据会被打包成固件文件系统FirmwareFileSystem,简称FFS,多个FFS可以被打包成一个固件卷FirmwareVolume,简称FV。最后,多个固件卷FV组成最终的UEFI固件二进制文件,固件卷FV是组成烧录到非易失性存储器中的固件的基本组成单元。在一实施方式中,通过将正在调试的目标驱动以及和目标驱动有强关联的驱动单独打包成一个固件卷FV1,而其他和目标驱动没有强关联的驱动另外打包成一个固件卷FV2,具体地,固件卷FV2可以为一个或者多个,最后将固件卷FV2打包成固件二进制文件。此处的和目标驱动有强关联的驱动指的是当目标驱动代码发生变化重新编译时,那些也需要重新编译的驱动为强关联驱动。在S120、将固件二进制文件存储至目标主机系统中。在一实施方式中,开发主机系统上安装有烧录软件,固件二进制文件通过所述烧录软件烧录至所述目标主机系统中。固件二进制文件存储在目标主机系统的非易失性存储器中。在S130、在目标主机系统运行固件二进制文件中包含的固件卷FV2中的驱动模块,并在开发主机系统向目标主机系统发送信息传送请求;在一实施方式中,开发主机系统上安装有串口终端软件,开发主机系统通过串口终端软件向所述目标主机系统发送信息传送请求。在S140、目标主机系统接收所述信息传送请求后,发送应答消息至开发主机系统,并等待接收固件卷FV1;S150、开发主机系统发送固件卷FV1给目标主机系统;在一实施方式中,所述开发主机系统通过串口终端以串口文件传输协议的方式发送固件卷FV1给目标主机系统。在S160、目标主机系统接收到固件卷FV1后,加载运行固件卷FV1中包含的驱动模块,从而完成UEFI固件的运行。具体的,请参阅图1,在一实施例中,上述基于UEFI的固件模块调试方法,包括步骤:步骤一、在开发主机系统上安装UEFI固件编译环境。步骤二、在开发主机系统上进行UEFI固件的代码编码,编译和打包,生成固件卷FV1、固件卷FV2和只包含固件卷FV2的固件二进制文件。步骤三、在开发主机系统上安装烧录软件,串口终端软件,并配置参数。串口通信成功则转入步骤四;若串口通信不成功,则检查配置的参数是否有误。步骤四、将只包含固件卷FV2的UEFI固件二进制文件烧录到目标主机系统的非易失性存储器中。步骤五、目标主机系统上电开始运行固件二进制文件中包含的固件卷FV2中的驱动模块,同时在开发主机系统上通过串口终端软件向目标主机系统发送信息传送请求,其中该传送请求为特定的字符。步骤六、目标主机系统在运行固件卷FV2中的驱动模块的过程中收到了特定字符,就给开发主机系统发送应答消息,并等待接收固件卷FV1。步骤七、开发主机系统接收到目标主机系统的应答后,通过串口终端以串口文件传输协议的方式发送固件卷FV1。步骤八、目标主机系统接收到固件卷FV1后,加载运行固件卷FV1中的驱动模块,从而完成整个UEFI固件的运行。本发明就是在固件调试过程中,通过将正在调试的目标驱动以及和目标驱动有强关联的驱动单独打包成一个固件卷FV1,而其他和目标驱动没有强关联的驱动另外打包成一个固件卷FV2,并将FV2打包成固件二进制文件,最后将固件二进制文件直接烧录到目标主机的非易失性存储器中,而固件卷FV1通过调试串口发送给目标主机这种方式来实现一种基于UEFI的固件模块调试方法。一实施方式的UEFI的固件模块调试的系统,包括开发主机系统和目标主机系统。其中,开发主机系统包括:UEFI固件编译环境,用于进行UEFI固件的代码编码、编译和打包,生成FV1,FV2和只包含所述固件卷FV2的固件二进制文件,还包括用于与目标主机系统进行信息传输第一传输接口。其中,目标主机系统,包括用于存储从所述开发主机系统接收固件二进制文件的存储单元,用于加载运行固件二进制文件中包含的固件卷FV2中的驱动模块以及加载运行从所述开发主机系统接收到固件卷FV1的驱动模块的加载运行单元,用于与开发主机系统进行信息传输的第二传输接口。在一实施方式中,开发主机系统上安装有烧录软件,固件二进制文件通过所述烧录软件烧录至目标主机系统中。在一实施方式中,存储单元为非易失性存储器,固件二进制文件存储在所述非易失性存储器中。在一实施方式中,所述开发主机系统上安装有串口终端软件,所述开发主机系统通过所述串口终端软件向所述目标主机系统发送信息传送请求。具体地,第一传输接口和第二传输接均为串口,具体地,可以为USB转接串口。在一实施方式中,开发主机系统通过串口终端以串口文件传输协议的方式发送固件卷FV1给目标主机系统,具体地,可以为Xmodem协议、Ymodem协议及Zmodem协议中的一种。在一具体实施例中,请参阅图2,固件模块调试系统包括开发主机系统和目标主机系统。开发主机系统和目标主机系统都是带有串口或USB转接串口的系统,开发主机系统和目标主机系统通过串口相连。开发主机系统是用于UEFI固件代码编码、编译和调试的系统,它包括UEFI固件编译环境、烧录软件、串口终端等。在开发主机系统完成UEFI固件的编码、编译和打包后,生成固件卷FV1,固件卷FV2,和只包含固件卷FV2的UEFI固件二进制文件。同时,开发主机系统上安装有烧录器的烧录软件以及串口终端软件。固件二进制文件会通过烧录软件烧录到目标主机系统中的非易失性存储器中,而固件卷FV1会通过串口终端软件以串口文件传输协议的方式传送给目标主机系统。开发主机系统上的工作环境处于操作系统层。目标主机系统是UEFI固件的适配对象,它通常是一套带有非易失性存储器的主板系统。固件二进制文件最终会被烧录到目标主机系统的非易失性存储器上,然后由目标主机系统从非易失性存储器中加载并进行运行。目标主机系统中的UEFI固件在运行过程中,再通过串口接收件固件卷FV1并运行固件卷FV1里面的相关驱动模块。上述基于UEFI的固件模块调试方法和系统固件模块调试系统,将正在调试的UEFI驱动模块以及和其有强关联的驱动模块组成一个较小的FV1,其他的驱动模块组成一个较大的FV2,并将FV2打包成固件二进制文件。然后将固件二进制文件一次性烧录到目标主机系统中,而每次由于调试代码修改而重新编译生成的FV1通过串口传送给目标主机系统。这样就减少了烧录UEFI固件的次数,提高了UEFI固件的调试效率,延长了目标主机系统非易失性存储器的寿命,同时固件模块调试系统没有用到专门的调试设备而是使用了常见的串口设备,烧录器由于只需要烧录一次,从而可以让多个开发人员进行共用,这样也就减小了UEFI固件的调试成本。以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

权利要求:1.一种基于UEFI的固件模块调试方法,其特征在于,包括:在开发主机系统上进行UEFI固件的代码编码、编译和打包,生成固件卷FV1、固件卷FV2和只包含所述固件卷FV2的固件二进制文件;将所述固件二进制文件存储至目标主机系统中;在所述目标主机系统运行所述固件二进制文件中包含的所述固件卷FV2中的驱动模块,并通过所述开发主机系统向所述目标主机系统发送信息传送请求;所述目标主机系统接收所述信息传送请求后,发送应答消息至所述开发主机系统,并等待接收所述固件卷FV1;所述开发主机系统发送固件卷FV1给所述目标主机系统;所述目标主机系统接收到所述固件卷FV1后,加载运行固件卷FV1中的驱动模块,从而完成UEFI固件的运行。2.根据权利要求1所述的基于UEFI的固件模块调试方法,其特征在于,所述开发主机系统上安装有烧录软件,所述固件二进制文件通过所述烧录软件烧录至所述目标主机系统中。3.根据权利要求1所述的基于UEFI的固件模块调试方法,其特征在于,所述固件二进制文件存储在所述目标主机系统的非易失性存储器中。4.根据权利要求1所述的基于UEFI的固件模块调试方法,其特征在于,所述开发主机系统上安装有串口终端软件,所述开发主机系统通过所述串口终端软件向所述目标主机系统发送信息传送请求。5.根据权利要求1所述的基于UEFI的固件模块调试方法,其特征在于,所述开发主机系统通过串口终端以串口文件传输协议的方式发送所述固件卷FV1给所述目标主机系统。6.一种基于UEFI的固件模块调试的系统,包括开发主机系统和目标主机系统,其特征在于,所述开发主机系统包括:UEFI固件编译环境,用于进行UEFI固件的代码编码、编译和打包,生成固件卷FV1,固件卷FV2,和只包含所述固件卷FV2的固件二进制文件;第一传输接口,用于与所述目标主机系统进行信息传输;所述目标主机系统,包括存储单元,用于存储从所述开发主机系统接收的所述固件二进制文件;加载运行单元,用于运行所述固件二进制文件中包含的固件卷FV2中的驱动模块,以及加载运行从所述开发主机系统接收到所述固件卷FV1中的驱动模块;第二传输接口,用于与所述开发主机系统进行信息传输。7.根据权利要求6所述的基于UEFI的固件模块调试的系统,其特征在于,所述开发主机系统上安装有烧录软件,所述固件二进制文件通过所述烧录软件烧录至所述目标主机系统中。8.根据权利要求7所述的基于UEFI的固件模块调试的系统,其特征在于,所述存储单元为非易失性存储器,所述固件二进制文件存储在所述非易失性存储器中。9.根据权利要求6所述的基于UEFI的固件模块调试的系统,其特征在于,所述开发主机系统上安装有串口终端软件,所述开发主机系统通过所述串口终端软件向所述目标主机系统发送信息传送请求。10.根据权利要求6所述的基于UEFI的固件模块调试的系统,其特征在于,所述开发主机系统通过串口终端以串口文件传输协议的方式发送所述固件卷FV1给所述目标主机系统,或,所述开发主机系统通过串口终端给所述目标主机系统发送所述固件卷FV1采用的串口文件传输协议为Xmodem、Ymodem、Zmodem中的一种。

百度查询: 昆仑太科(北京)技术股份有限公司 基于UEFI的固件模块调试方法和系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。