一种程序管理方法、系统、设备及介质转让专利

申请号 : CN202311827808.2

文献号 : CN117492877B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李凤民李超苏宁宁张晶晶

申请人 : 苏州元脑智能科技有限公司

摘要 :

本发明涉及计算机技术领域,尤其涉及一种程序管理方法、系统、设备及介质。方法包括:启动预先封装有目标打印函数的驱动调试程序,目标打印函数由打印函数和实时时间函数组合得到;响应于驱动调试程序启动后运行到预先创建的调试节点,调用目标打印函数;向目标打印函数传入用户配置的打印参数,并控制目标打印函数打印包含打印参数的参数值的目标信息;将各目标信息对应传输至监控窗口的各调试接口,以在用户界面显示驱动调试程序的运行状态与安装驱动调试程序的设备驱动的工作状态。通过本发明的方案,能够对驱动调试程序运行过程和结果进行监控,并能够在硬件设备发生异常时及时进行异常排查,保证硬件设备运行状态的稳定性。

权利要求 :

1.一种程序管理方法,其特征在于,包括:

启动预先封装有目标打印函数的驱动调试程序,所述目标打印函数由打印函数和实时时间函数组合得到;

响应于所述驱动调试程序启动后运行到预先创建的调试节点,调用所述目标打印函数;

向所述目标打印函数传入用户配置的打印参数,并控制所述目标打印函数打印包含所述打印参数的参数值的目标信息;

将各所述目标信息对应传输至监控窗口的各调试接口,以在用户界面显示所述驱动调试程序的运行状态以及连接所述驱动调试程序的硬件设备的工作状态;

其中,在用户界面显示所述驱动调试程序的运行状态以及连接所述驱动调试程序的硬件设备的工作状态,包括:在所述驱动调试程序运行过程中,对所述监控窗口的各调试接口进行轮询以监测所述硬件设备的是否处于故障状态或者所述硬件设备在规定时间内未进入可操作状态;

响应于通过监控窗口监测到所述硬件设备处于故障状态或者所述硬件设备在规定时间内未进入可操作状态,通过所述监控窗口的各调试接口获取所述硬件设备的设备故障原因并统计所述硬件设备的工作状态发生变化的时间和次数;

将所述设备故障原因和统计结果记录在详细信息文件中,输出所述详细信息文件。

2.根据权利要求1所述的程序管理方法,其特征在于,还包括:响应于通过监控窗口监测到所述硬件设备处于故障状态或者所述硬件设备在规定时间内未进入可操作状态,控制命令输入接口向驱动调试程序发送复位命令;

通过所述驱动调试程序控制所述硬件设备执行复位操作,在所述详细信息文件中记录所述复位操作的执行过程,检测所述复位操作是否执行成功;

响应于所述复位操作执行成功,确定成功排除所述硬件设备中的异常。

3.根据权利要求2所述的程序管理方法,其特征在于,还包括:响应于所述复位操作执行失败,再次控制命令输入接口向驱动调试程序发送复位命令,并返回通过所述驱动调试程序控制所述硬件设备执行复位操作的步骤。

4.根据权利要求3所述的程序管理方法,其特征在于,还包括:响应于所述复位操作执行失败次数达到预设次数,在所述用户界面显示所述硬件设备的异常且复位失败信息,并输出所述详细信息文件。

5.根据权利要求1所述的程序管理方法,其特征在于,还包括:预先在所述驱动调试程序中封装目标打印函数并创建调试节点;

响应于完成所述目标打印函数的封装和所述调试节点的创建,所述驱动调试程序基于所述调试节点在所述用户界面中设置监控窗口以向用户界面提供若干调试接口;

基于接口函数在所述用户界面设置指令输入接口;

根据所述目标打印函数、所述调试节点、所述监控窗口和所述指令输入接口编译并安装所述驱动调试程序。

6.根据权利要求1所述的程序管理方法,其特征在于,所述向所述目标打印函数传入用户配置的打印参数,并控制所述目标打印函数打印包含所述打印参数的参数值的目标信息的步骤,包括:响应于查询到所述驱动调试程序的当前打印等级为第三级且所述目标打印函数被调用,打印所述目标信息,所述目标信息包括所述驱动调试程序当前运行的驱动函数、所述驱动函数的标头、打印时间和所述驱动函数当前运行到的行数以及打印参数的参数值。

7.根据权利要求1所述的程序管理方法,其特征在于,还包括:响应于查询到所述驱动调试程序的当前打印等级为第一级,不进行打印;

响应于查询到所述驱动调试程序的当前打印等级为第二级,打印所述驱动调试程序与所述硬件设备在正常工作中的消息交互过程;

响应于查询到所述驱动调试程序的当前打印等级为第四级,打印安装了所述驱动调试程序后的所述硬件设备从启动到停机全过程的工作状态信息。

8.根据权利要求6所述的程序管理方法,其特征在于,还包括:跟踪所述目标信息中所述驱动函数的执行过程以将所述驱动函数的初始化过程的执行结果保存至结果输出文件。

9.根据权利要求7所述的程序管理方法,其特征在于,还包括:对所述监控窗口的各调试接口进行轮询以监测所述硬件设备的工作状态,并根据所述工作状态调整所述当前打印等级;

响应于所述工作状态为可执行状态,调整所述当前打印等级为第二级并根据打印内容分析所述硬件设备发送命令和响应命令的执行时间,将分析结果保存至结果输出文件。

10.根据权利要求1所述的程序管理方法,其特征在于,还包括:控制指令输入接口向所述驱动调试程序输入若干管理命令,判断各所述管理命令从输入到返回结果对应的时间是否满足命令超时时间;

响应于对应的时间满足命令超时时间,打印警告信息发送至用户界面,并将所述管理命令的返回结果保存至结果输出文件。

11.根据权利要求1所述的程序管理方法,其特征在于,所述监控窗口的各调试接口包括打印等级控制接口、设备状态接口、设备队列深度接口、命令超时时间接口、设备信息接口、系统接口寄存器物理地址接口和设备故障复位原因接口中的任意组合。

12.一种程序管理系统,其特征在于,所述的系统包括:

封装单元,用于启动预先封装有目标打印函数的驱动调试程序,所述目标打印函数由打印函数和实时时间函数组合得到;

调用单元,用于响应于所述驱动调试程序启动后运行到预先创建的调试节点,调用所述目标打印函数;

控制单元,用于向所述目标打印函数传入用户配置的打印参数,并控制所述目标打印函数打印包含所述打印参数的参数值的目标信息;

显示单元,用于将各所述目标信息对应传输至监控窗口的各调试接口,以在用户界面显示所述驱动调试程序的运行状态以及连接所述驱动调试程序的硬件设备的工作状态;

其中,在用户界面显示所述驱动调试程序的运行状态以及连接所述驱动调试程序的硬件设备的工作状态,包括:在所述驱动调试程序运行过程中,对所述监控窗口的各调试接口进行轮询以监测所述硬件设备的是否处于故障状态或者所述硬件设备在规定时间内未进入可操作状态;

响应于通过监控窗口监测到所述硬件设备处于故障状态或者所述硬件设备在规定时间内未进入可操作状态,通过所述监控窗口的各调试接口获取所述硬件设备的设备故障原因并统计所述硬件设备的工作状态发生变化的时间和次数;

将所述设备故障原因和统计结果记录在详细信息文件中,并输出所述详细信息文件,输出所述详细信息文件。

13.一种计算机设备,包括:

至少一个处理器;以及

存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求1至11任意一项所述的方法的步骤。

14.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1至11任意一项所述的方法的步骤。

说明书 :

一种程序管理方法、系统、设备及介质

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种程序管理方法、系统、设备及介质。

背景技术

[0002] 设备驱动程序是操作系统与硬件设备之间的桥梁,向操作系统提供了硬件设备的接口,这些接口隐藏了硬件设备的工作细节,使它们成为一个个独立的“黑盒”。设备驱动程序工作在系统内核空间,应用程序工作在用户空间,为了安全性两者是相互隔离的。这就导致了内核代码很难调试和跟踪,内核代码中的错误也很难被发现和定位。因此,一种灵活高效的调试方法非常重要,有利于提高开发的效率和排查内核存在的异常,同时,监控驱动程序的运行有利于掌握硬件设备运行的状态。相关技术中通过常规的监视和调试手段进行程序调试,往往方法单一且效率不高,调试方法可控性差,同时驱动程序仍然仅作为“黑盒”提供接口信息,无法对硬件设备的运行状态进行分析。
[0003] 因此,亟需提出一种程序管理方法以解决相关技术中存在的缺陷。

发明内容

[0004] 有鉴于此,本发明提出了一种程序管理方法、系统、设备及介质。
[0005] 基于上述目的,本发明实施例的一方面提供了一种程序管理方法,具体包括如下步骤:
[0006] 启动预先封装有目标打印函数的驱动调试程序,所述目标打印函数由打印函数和实时时间函数组合得到;
[0007] 响应于所述驱动调试程序启动后运行到预先创建的调试节点,调用所述目标打印函数;
[0008] 向所述目标打印函数传入用户配置的打印参数,并控制所述目标打印函数打印包含所述打印参数的参数值的目标信息;
[0009] 将各所述目标信息对应传输至监控窗口的各调试接口,以在用户界面显示所述驱动调试程序的运行状态以及连接所述驱动调试程序的硬件设备的工作状态。
[0010] 在一些实施方式中,所述的程序管理方法还包括:
[0011] 在所述驱动调试程序运行过程中,对所述监控窗口的各调试接口进行轮询以监测所述硬件设备的是否处于故障状态或者所述硬件设备在规定时间内未进入可操作状态;
[0012] 响应于通过监控窗口监测到所述硬件设备处于故障状态或者所述硬件设备在规定时间内未进入可操作状态,通过所述监控窗口的各调试接口获取所述硬件设备的设备故障原因并统计所述硬件设备的工作状态发生变化的时间和次数;
[0013] 将所述设备故障原因和统计结果记录在详细信息文件中。
[0014] 在一些实施方式中,所述的程序管理方法还包括:
[0015] 响应于通过监控窗口监测到所述硬件设备处于故障状态或者所述硬件设备在规定时间内未进入可操作状态,控制命令输入接口向驱动调试程序发送复位命令;
[0016] 通过所述驱动调试程序控制所述硬件设备执行复位操作,在所述详细信息文件中记录所述复位操作的执行过程,检测所述复位操作是否执行成功;
[0017] 响应于所述复位操作执行成功,确定成功排除所述硬件设备中的异常。
[0018] 在一些实施方式中,所述的程序管理方法还包括:
[0019] 响应于所述复位操作执行失败,再次控制命令输入接口向驱动调试程序发送复位命令,并返回通过所述驱动调试程序控制所述硬件设备执行复位操作的步骤。
[0020] 在一些实施方式中,所述的程序管理方法还包括:
[0021] 响应于所述复位操作执行失败次数达到预设次数,在所述用户界面显示所述硬件设备的异常且复位失败信息,并输出所述详细信息文件。
[0022] 在一些实施方式中,所述的程序管理方法还包括:
[0023] 预先在所述驱动调试程序中封装目标打印函数并创建调试节点;
[0024] 响应于完成所述目标打印函数的封装和所述调试节点的创建,所述驱动调试程序基于所述调试节点在所述用户界面中设置监控窗口以向用户界面提供若干调试接口;
[0025] 基于接口函数在所述用户界面设置指令输入接口;
[0026] 根据所述目标打印函数、所述调试节点、所述监控窗口和所述指令输入接口编译并安装所述驱动调试程序。
[0027] 在一些实施方式中,所述向所述目标打印函数传入用户配置的打印参数,并控制所述目标打印函数打印包含所述打印参数的参数值的目标信息的步骤,包括:
[0028] 响应于查询到所述驱动调试程序的当前打印等级为第三级且所述目标打印函数被调用,打印所述目标信息,所述目标信息包括所述驱动调试程序当前运行的驱动函数、所述驱动函数的标头、打印时间和所述驱动函数当前运行到的行数以及打印参数的参数值。
[0029] 在一些实施方式中,所述的程序管理方法还包括:
[0030] 响应于查询到所述驱动调试程序的当前打印等级为第一级,不进行打印;
[0031] 响应于查询到所述驱动调试程序的当前打印等级为第二级,打印所述驱动调试程序与所述硬件设备在正常工作中的消息交互过程;
[0032] 响应于查询到所述驱动调试程序的当前打印等级为第四级,打印安装了所述驱动调试程序后的所述硬件设备从启动到停机全过程的工作状态信息。
[0033] 在一些实施方式中,所述的程序管理方法还包括:
[0034] 跟踪所述目标信息中所述驱动函数的执行过程以将所述驱动函数的初始化过程的执行结果保存至结果输出文件。
[0035] 在一些实施方式中,所述的程序管理方法还包括:
[0036] 对所述监控窗口的各调试接口进行轮询以监测所述硬件设备的工作状态,并根据所述工作状态调整所述当前打印等级;
[0037] 响应于所述工作状态为可执行状态,调整所述当前打印等级为第二级并根据打印内容分析所述硬件设备发送命令和响应命令的执行时间,将分析结果保存至结果输出文件。
[0038] 在一些实施方式中,所述的程序管理方法还包括:
[0039] 控制指令输入接口向所述驱动调试程序输入若干管理命令,判断各所述管理命令从输入到返回结果对应的时间是否满足命令超时时间;
[0040] 响应于对应的时间满足命令超时时间,打印警告信息发送至用户界面,并将所述管理命令的返回结果保存至结果输出文件。
[0041] 在一些实施方式中,所述监控窗口的各调试接口包括打印等级控制接口、设备状态接口、设备队列深度接口、命令超时时间接口、设备信息接口、系统接口寄存器物理地址接口和设备故障复位原因接口中的任意组合。
[0042] 本发明实施例的另一方面,还提供了一种程序管理系统,所述的系统包括:
[0043] 封装单元,用于启动预先封装有目标打印函数的驱动调试程序,所述目标打印函数由打印函数和实时时间函数组合得到;
[0044] 调用单元,用于响应于所述驱动调试程序启动后运行到预先创建的调试节点,调用所述目标打印函数;
[0045] 控制单元,用于向所述目标打印函数传入用户配置的打印参数,并控制所述目标打印函数打印包含所述打印参数的参数值的目标信息;
[0046] 显示单元,用于将各所述目标信息对应传输至监控窗口的各调试接口,以在用户界面显示所述驱动调试程序的运行状态以及连接所述驱动调试程序的硬件设备的工作状态。
[0047] 本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述计算机程序由所述处理器执行时实现如上方法的步骤。
[0048] 本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
[0049] 本发明至少具有以下有益技术效果:本发明提供的程序管理方法,利用预先在驱动调试程序中添加自定义的打印函数和调试节点来实现用户侧对驱动调试程序局部可控的打印方法以自动打印目标信息,完成对驱动调试程序的运行状态自动监控,有效缩短开发和测试时间,并创建监控窗口下多个调试接口,将驱动调试程序和硬件设备的信息发布给用户,用户能够通过轮各询调试接口判断驱动调试程序的工作状态是否正常,并根据不同的工作状态控制打印等级来输出不同的驱动调试程序和设备驱动的信息,进一步的,在硬件设备发生异常时能够通过指令输入接口对设备进行复位操作,及时进行异常排查,调整硬件设备的工作状态恢复正常,防止出现停机事件,通过指令输入接口向驱动调试程序发送命令分析设备工作状态和健康状态,有效掌握了驱动调试程序和硬件设备的工作过程,了解设备工作原理,在出现相关硬件设备问题可迅速定位问题并解决问题,降低故障停机损失。
[0050] 此外,本发明还提供了一种程序管理系统、一种计算机设备和一种计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。
[0051] 本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

[0052] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
[0053] 图1为本发明提供的程序管理方法的一实施例的框图;
[0054] 图2为本发明提供的程序管理方法的一实施例的架构图;
[0055] 图3为本发明提供的用户层和内核层中各功能模块的一实施例的组成框图;
[0056] 图4为本发明提供的程序管理方法的一实施例的流程图;
[0057] 图5为本发明提供的程序管理系统的一实施例的示意图;
[0058] 图6为本发明提供的计算机设备的一实施例的结构示意图;
[0059] 图7为本发明提供的计算机可读存储介质的一实施例的结构示意图。

具体实施方式

[0060] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
[0061] 需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
[0062] 由于内核空间独立于普通的应用程序,操作系统一般都强制用户进程不能直接操作内核,导致设备驱动程序不能随时被访问和调试,只能靠间接方式对驱动程序进行调试和监控,需要频繁的修改驱动程序和编译加载等操作,这就导致调试的效率不高。相比于用户级开发可借助相关编译器进行调试,内核空间中的调试相对困难,同时内核错误往往会导致操作系统崩溃,破坏可以跟踪内核的现场。且针对于常规的打印调试仅仅是根据内核的打印级别进行全局配置,控制精细度低。虽然驱动程序作为操作系统和硬件通信的接口,但是常规方法调试输出的信息单一无法对程序运行状态和设备运行状态进一步进行分析。
[0063] 相关技术中针对驱动调试程序常用的直接和间接的调试手段有打印监视、调试器调试和proc(一个伪文件系统)文件系统监视等。其中,打印监视是通过在程序中添加打印指令跟踪或监视程序运行的状态,调试器调试是通过调试工具对程序进行交互式调试,可插入断点进行运行控制,proc文件系统监视通过向用户空间暴露一些内核信息来进行驱动信息的监视。
[0064] 本发明旨在解决linux系统下驱动程序不易调试和无法分析硬件设备的工作状态问题,提出了一种程序管理方法,通过一种可控的驱动调试程序解决难以调试和无法分析运行状态的问题。
[0065] 基于上述目的,本发明实施例的第一个方面,提出了一种程序管理方法的实施例。如图1所示,其包括如下步骤:
[0066] 步骤S100,启动预先封装有目标打印函数的驱动调试程序,目标打印函数由打印函数和实时时间函数组合得到。
[0067] 在一些实施方式中,图2为本发明提供的程序管理方法的一实施例的架构图。程序管理方法在用户层构建了监控窗口、指令输入接口、信息采集模块、运行状态分析模块和输出模块,在内核层构建了驱动调试程序。图3为本发明提供的用户层和内核层中各功能模块的一实施例的组成框图。驱动调试程序包括打印信息单元、监控窗口创建单元和指令输入创建单元。打印信息单元将打印函数printk()和实时时间函数ktime_get_real_ns()封装为自定义的目标打印函数debug_printk()。通过调用debug_printk()函数即可打印出当前的时间戳、当前所在函数名称、所在行数、标头、以及需要打印的参数信息。其中所打印的时间戳的时间精度为纳秒级,标头是为了方便筛选出自定义打印信息到输出模块。通过对打印信息等级配置参数的设置可打印出驱动调试程序在不同运行过程中的参数值。
[0068] 步骤S200,响应于驱动调试程序启动后运行到预先创建的调试节点,调用目标打印函数。
[0069] 在一些实施方式中,监控窗口创建单元用于在linux内核中实现监控窗口的创建,利用窗口创建函数debugfs_create_file()创建调试(debug)节点,用于将该调试节点对应的内核信息发布给用户空间,debug节点能够用于在驱动调试程序控制和读取驱动调试程序运行状态时使用。
[0070] 步骤S300,向目标打印函数传入用户配置的打印参数,并控制目标打印函数打印包含打印参数的参数值的目标信息。
[0071] 在一些实施方式中,在驱动调试程序中调用debug_printk()函数时通过传入打印等级和打印参数来控制打印的内容,打印的内容包括标头、时间戳、打印参数的参数值、驱动调试程序当前执行的函数、行数信息和一些说明信息。
[0072] 步骤S400,将各目标信息对应传输至监控窗口的各调试接口,以在用户界面显示驱动调试程序的运行状态以及连接驱动调试程序的硬件设备的工作状态。
[0073] 在一些实施方式中,监控窗口是用户空间和内核空间信息交互的接口,是驱动调试查询中的监控窗口创建单元发布给用户空间的。如表1所示,监控窗口向用户空间发布了打印等级控制接口、设备状态接口、设备队列深度接口、命令超时时间接口、设备信息接口、系统接口寄存器物理地址接口和设备故障复位原因接口的调试接口,这些调试接口可以将驱动调试程序和硬件设备中的信息发布给用户空间,用户空间也可以对配置好的可写的参数进行修改。监控窗口下的打印等级控制接口用于修改自定义打印等级,打印等级定义分为四个等级分别对应取值0‑3,打印等级为第一级时对应取值0,打印等级为第二级时对应取值1,打印等级为第三级时对应取值2,打印等级为第四级时对应取值3。打印等级为第四级时,打印硬件设备全生命周期的详细信息,即打印硬件设备从启动到运行到停机全过程的信息。设备驱动初始化时打印等级为第三级,打印硬件设备启动时的设备驱动初始化过程中添加的自定义目标打印函数对应的打印信息。设备驱动正常运行时打印等级为第二级,打印设备驱动正常工作中的消息交互过程。打印等级为第一级时不进行打印。其中,默认的打印等级为第三级。设备状态接口用于反馈表征硬件设备运行状态的参数,通过读取此参数可判断硬件设备处于什么状态,硬件设备的运行状态主要包括重置(reset)、就绪(ready)、可操作(operation)、故障(fault)四种状态。
[0074] 表1
[0075]
[0076] 本发明提供的程序管理方法,利用预先在驱动调试程序中添加自定义的打印函数和调试节点来实现用户侧对驱动调试程序局部可控的打印方法以自动打印目标信息,完成对驱动调试程序的运行状态自动监控,有效缩短开发和测试时间,并创建监控窗口下多个调试接口,将驱动调试程序和硬件设备的信息发布给用户,用户能够通过轮各询调试接口判断驱动调试程序的工作状态是否正常,并根据不同的工作状态控制打印等级来输出不同的驱动调试程序和硬件设备的信息,实现可控的方式对驱动调试程序进行调试和获取打印信息,能够直接将调试所需的信息封装进打印函数中,打印数据丰富,更加适用于设备驱动调试分析,使用方便且可控,有效提升了用户的使用体验。
[0077] 在一些实施方式中,本申请的程序管理方法还包括:在驱动调试程序运行过程中,对监控窗口的各调试接口进行轮询以监测硬件设备的是否处于故障状态或者硬件设备在规定时间内未进入可操作状态;响应于通过监控窗口监测到硬件设备处于故障状态或者硬件设备在规定时间内未进入可操作状态,通过监控窗口的各调试接口获取硬件设备的设备故障原因并统计硬件设备的工作状态发生变化的时间和次数;将设备故障原因和统计结果记录在详细信息文件中。
[0078] 在一些实施方式中,本申请的程序管理方法还包括:响应于通过监控窗口监测到硬件设备处于故障状态或者硬件设备在规定时间内未进入可操作状态,控制命令输入接口向驱动调试程序发送复位命令;通过驱动调试程序控制硬件设备执行复位操作,在详细信息文件中记录复位操作的执行过程,检测复位操作是否执行成功;响应于复位操作执行成功,确定成功排除硬件设备中的异常。
[0079] 在一些实施方式中,本申请的程序管理方法还包括:响应于复位操作执行失败,再次控制命令输入接口向驱动调试程序发送复位命令,并返回通过驱动调试程序控制硬件设备执行复位操作的步骤。
[0080] 在一些实施方式中,本申请的程序管理方法还包括:响应于复位操作执行失败次数达到预设次数,例如三次,在用户界面显示硬件设备的异常且复位失败信息,并输出详细信息文件。
[0081] 在一些实施方式中,用户层程序是通过指令输入接口向硬件设备发送指令来获取相应设备信息,其指令格式是按照设备协议规定写入。指令输入接口的实现包括两部分内容,一部分是内核空间创建,一部分为用户空间调用设计。指令输入创建单元是通过linux系统提供的ioctl(一种设备控制接口函数)接口来实现的,即在内核部分设置unlocked_ioctl = debug_unlocked_ioctl完成指令输入接口的创建,debug_unlocked_ioctl()函数是通过switch(判断选择)结构进行不同命令的具体实现。用户空间通过调用debug_unlocked_ioctl()函数以及参数传递的方式与内核进行数据交互,传递参数为设备文件和命令码。通过驱动调试程序的指令输入接口将用户空间的命令传入到设备驱动,设备驱动将指定的指令发送给设备进行相应的操作和响应。
[0082] 在一些实施方式中,图4为本发明提供的程序管理方法进行状态分析和复位操作的一实施例的流程图。在硬件设备发生异常时能够通过指令输入接口对设备进行若干次复位操作,及时进行异常排查,调整硬件设备的工作状态恢复正常,防止出现停机事件。利用状态运行分析模块进行分析有效掌握硬件设备工作过程,了解设备工作原理,如出现相关设备驱动问题可迅速定位问题并解决问题,降低故障停机损失。
[0083] 本发明提供的程序管理方法,采用指令输入接口对驱动调试程序进行可控的输入,进而通过获取打印信息和驱动调试程序返回的信息,分析驱动运行过程和设备运行状态,及早进行异常排查使硬件设备运行状态恢复正常,防止出现停机事件。
[0084] 在一些实施方式中,本申请的程序管理方法还包括:预先在驱动调试程序中封装目标打印函数并创建调试节点;响应于完成目标打印函数的封装和调试节点的创建,驱动调试程序基于调试节点在用户界面中设置监控窗口以向用户界面提供若干调试接口;基于接口函数在用户界面设置指令输入接口;根据目标打印函数、调试节点、监控窗口和指令输入接口编译并安装驱动调试程序。
[0085] 本发明提供的程序管理方法,通过封装好的驱动调试程序的源文件和头文件安装驱动调试程序,并在驱动调试程序的关键函数中调用自定义的目标打印函数,当驱动调试程序运行到此处会自动打印出标头、当前时间、执行的驱动函数、行数和打印参数相关的参数信息,解决了设备驱动不能随时被访问和调试导致难以对内部驱动程序调试和监控的问题,提高了设备驱动的调试效率。
[0086] 在一些实施方式中,向目标打印函数传入用户配置的打印参数,并控制目标打印函数打印包含打印参数的参数值的目标信息的步骤,包括:响应于查询到驱动调试程序的当前打印等级为第三级且目标打印函数被调用,打印目标信息,目标信息包括驱动调试程序当前运行的驱动函数、驱动函数的标头、打印时间和驱动函数当前运行到的行数以及打印参数的参数值。
[0087] 在一些实施方式中,本申请的程序管理方法还包括:响应于查询到驱动调试程序的当前打印等级为第一级,不进行打印;响应于查询到驱动调试程序的当前打印等级为第二级,打印驱动调试程序与硬件设备在正常工作中的消息交互过程;响应于查询到驱动调试程序的当前打印等级为第四级,打印安装了驱动调试程序后的硬件设备从启动到停机全过程的工作状态信息。
[0088] 在一些实施方式中,本申请的程序管理方法还包括:跟踪目标信息中驱动函数的执行过程以将驱动函数的初始化过程的执行结果保存至结果输出文件。
[0089] 在一些实施方式中,本申请的程序管理方法还包括:对监控窗口的各调试接口进行轮询以监测硬件设备的工作状态,并根据工作状态调整当前打印等级;响应于工作状态为可执行状态,调整当前打印等级为第二级并根据打印内容分析硬件设备发送命令和响应命令的执行时间,将分析结果保存至结果输出文件。
[0090] 在一些实施方式中,本申请的程序管理方法还包括:控制指令输入接口向驱动调试程序输入若干管理命令,判断各管理命令从输入到返回结果对应的时间是否满足命令超时时间;响应于对应的时间满足命令超时时间,打印警告信息发送至用户界面,并将管理命令的返回结果保存至结果输出文件。
[0091] 在一些实施方式中,通过信息采集模块搜集与特定的标头匹配的所有打印信息,并输出到详细信息文件中,以便于后续运行状态分析模块的分析。运行状态分析模块对信息采集模块搜集到的打印信息进行分析,主要分为三个阶段。第一个阶段是分析硬件设备启动过程中即硬件设备初始化状态执行过程是否正确,如果存在错误输出错误的执行函数和所在行数位置。第二个阶段是分析硬件设备运行过程即驱动调试程序执行命令和响应命令过程是否正确,通过分析详细信息文件中的打印信息监控命令执行和命令响应过程是否正确,时间间隔如果大于某一阈值(即超时时间)表示响应异常。第三个阶段为分析输入命令至驱动调试程序后硬件设备执行过程是否正确,利用指令输入接口输入重置命令、GPIO控制命令或设备信息查询命令后,通过运行状态分析模块校验检查驱动调试程序返回的数据是否正确,并根据响应命令所花费时间判断硬件设备的运行状态是否健康,如果响应命令所花费时间超过阈值则打印告警信息,并将详细信息文件发送至输出模块中。在整个驱动运行中,运行状态分析模块不断轮询监控窗口中的各调试接口,当通过调试接口监控到硬件设备处于故障或者在规定时间内未转变可操作状态,控制驱动调试程序向指令输入接口下发复位指令。运行状态分析模块会不断访问监控窗口内的调试接口的信息,并将硬件设备的工作状态、设备队列深度和故障原因等信息生成硬件设备运行信息,根据详细信息文件与硬件设备运行信息综合判断设备运行状态。输出模块能够输出详细的运行时的打印信息以及运行状态分析模块最终的分析结果。
[0092] 本发明提供的程序管理方法,通过轮询监控窗口的方式可定期分析设备工作状态,及早进行异常排查,预防停机事件,并利用指令输入接口向驱动调试程序发送命令分析设备工作状态和健康状态,有效掌握了驱动调试程序和硬件设备的工作过程,了解设备工作原理,在出现相关硬件设备问题可迅速定位问题并解决问题,降低故障停机损失。
[0093] 在一些实施方式中,监控窗口的各调试接口包括打印等级控制接口、设备状态接口、设备队列深度接口、命令超时时间接口、设备信息接口、系统接口寄存器物理地址接口和设备故障复位原因接口中的任意组合。
[0094] 在一些实施方式中,对程序管理方法的处理流程举例说明:
[0095] 步骤1:封装打印debug_printk()函数,包括对标头、printk()函数、实时时间函数ktime_get_real_ns()和设备驱动域的打印等级进行封装。当在驱动调试程序中调用debug_printk()函数时,通过传入打印等级和打印参数来控制打印内容,打印的内容包括标准的标头、时间戳、具打印参数对应的参数值、执行函数、行数信息和一些说明信息。
[0096] 步骤2:设置监控窗口。利用linux系统提供的debug文件系统接口来进行数据交互,驱动调试程序面向用户空间创建debug节点,并在cd /sys/kernel/debug/路径下创建debug接口,debug接口包括用于控制打印等级的debug_log_level接口,表示设备状态的fw_state接口等,如表1所示。
[0097] 步骤3:设置命令输入接口。向驱动调试程序添加ioctl接口函数debug_unlocked_ioctl(),用户空间通过调用ioctl()函数和设备文件将命令下发给设备驱动,设备驱动根据命令执行响应操作。
[0098] 步骤4:在设备驱动中添加封装好的驱动调试程序源文件和头文件,并在设备驱动的关键函数中调用自定义的打印函数,当设备驱动运行到此处会打印出标头、当前时间、执行的驱动函数、行数以及需要打印的参数相关参数信息。
[0099] 步骤5:在设备驱动编译并安装运行驱动调试程序,使用监控窗口的接口监控设备驱动程序运行状态,使用监控窗口配置的打印等级参数控制驱动调试程序的打印等级。
[0100] 步骤6:编译用户空间应用层的调试分析程序,生成可执行文件。
[0101] 步骤7:运行应用层通过运行状态分析模块自动搜集日志信息,将含有设定的标头的信息筛选出来(包括驱动本身的打印信息和自定义的打印信息)输出到指定的详细信息文件中,将分析后的结果打印到结果输出文件中。其中,调试分析过程分为三个阶段,第一阶段,应用层调试分析程序通过跟踪打印的执行函数的执行过程分析其初始化过程的正确性,输出初始化过程执行结果到结果输出文件中,第二阶段,读取监控窗口下设备驱动状态参数,如果检测到设备驱动的工作状态为可执行状态(operation),自动调整打印等级设置为1,运行状态分析模块分析设备驱动执行的命令和命令响应的过程和执行时间,输出执行过程结果的正确性和驱动设备的运行状态到结果输出文件中,第三阶段,通过命令输入接口输入重置命令、GPIO控制命令和设备信息查询命令,校验检查返回的命令是否正确,并根据该过程的花费时间判断设备驱动运行健康状态,如果时间达到超时时间则打印告警信息,并将结果打印到结果输出文件中。
[0102] 步骤8:如遇到设备驱动可复现的故障时,重复执行步骤1‑7,根据故障情况选择性的打印信息并分析执行函数调用过程和花费时间,以判断故障位置,同时也可快速排除驱动调试程序和硬件设备的故障可能,缩小故障定位位置,针对驱动调试程序和硬件设备交互的问题可通过读取监控窗口中系统接口寄存器接口来了解设备详细信息,进一步明确问题原因。
[0103] 步骤9:在 驱动调试程序运行的全过程中,运行状态分析模块对监控窗口内的debug接口进行轮询,实时检测驱动和设备运行状态,并对于硬件设备故障原因和设备状态变化时间和次数进行统计,记录在结果输出文件中,以便于后续设备状态的分析。
[0104] 步骤10:当运行状态分析模块检测到设备状态接口处于故障状态或者设备在规定时间内未进入可操作状态,控制命令输入接口向驱动调试程序下发复位命令,检测硬件设备执行复位操作的过程是否正确,并记录驱动调试程序执行过程,如果执行三次复位操作失败,则在输出模块中输出设备异常并复位失败信息。
[0105] 需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0106] 应该理解的是,上述虽然是按照某一顺序描述的,但是这些步骤并不是必然按照上述顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,本实施例的一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0107] 在一些实施例中,请参照图5所示,本发明还提供了一种程序管理系统,本申请的程序管理系统包括:
[0108] 封装单元110,用于启动预先封装有目标打印函数的驱动调试程序,目标打印函数由打印函数和实时时间函数组合得到;
[0109] 调用单元120,用于响应于驱动调试程序启动后运行到预先创建的调试节点,调用目标打印函数;
[0110] 控制单元130,用于向目标打印函数传入用户配置的打印参数,并控制目标打印函数打印包含打印参数的参数值的目标信息;
[0111] 显示单元140,用于将各目标信息对应传输至监控窗口的各调试接口,以在用户界面显示驱动调试程序的运行状态以及连接驱动调试程序的硬件设备的工作状态。
[0112] 本发明提供的程序管理系统,利用预先在驱动调试程序中添加自定义的打印函数和调试节点来实现用户侧对驱动调试程序局部可控的打印方法以自动打印目标信息,完成对驱动调试程序的运行状态自动监控,有效缩短开发和测试时间,并创建监控窗口下多个调试接口,将驱动调试程序和硬件设备的信息发布给用户,用户能够通过轮各询调试接口判断驱动调试程序的工作状态是否正常,并根据不同的工作状态控制打印等级来输出不同的驱动调试程序和设备驱动的信息,进一步的,在硬件设备发生异常时能够通过指令输入接口对设备进行复位操作,及时进行异常排查,调整硬件设备的工作状态恢复正常,防止出现停机事件,通过指令输入接口向驱动调试程序发送命令分析设备工作状态和健康状态,有效掌握了驱动调试程序和硬件设备的工作过程,了解设备工作原理,在出现相关硬件设备问题可迅速定位问题并解决问题,降低故障停机损失。
[0113] 基于同一发明构思,根据本发明的另一个方面,如图6所示,本发明的实施例还提供了一种计算机设备30,在该计算机设备30中包括处理器310以及存储器320,存储器320存储有可在处理器上运行的计算机程序321,处理器310执行程序时执行如上的方法的步骤。
[0114] 基于同一发明构思,根据本发明的另一个方面,如图7所示,本发明的实施例还提供了一种计算机可读存储介质40,计算机可读存储介质40存储有被处理器执行时执行如上方法的计算机程序410。
[0115] 最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
[0116] 本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
[0117] 以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
[0118] 应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
[0119] 所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。