首页> 中国专利> 多核处理器中基于VCPU的调试方法和装置

多核处理器中基于VCPU的调试方法和装置

摘要

本发明实施例公开了一种多核处理器中基于VCPU的调试方法和装置。每个VCPU按照设定周期执行以下步骤:获取第一变量,该第一变量为多核处理器中所有VCPU共享的全局变量,其值为需要进行调试的第一目标VCPU的标识;将获取到的第一变量的值与本VCPU的标识进行比较,若相同,则获取本VCPU对应的串行接口上输入的命令并执行该命令,所述命令可包括调试命令和/或串口切换命令,所述串口切换命令用于将所述第一变量的值设置为需要进行调试的第二目标VCPU的标识,所述调试命令用于对VCPU上的应用进行调试。采用本发明可提高多核处理器环境下基于VCPU进行应用程序调试时的可靠性和准确性。

著录项

  • 公开/公告号CN103544105A

    专利类型发明专利

  • 公开/公告日2014-01-29

    原文格式PDF

  • 申请/专利权人 大唐移动通信设备有限公司;

    申请/专利号CN201310508682.2

  • 发明设计人 蔡蕾;王丽娜;

    申请日2013-10-24

  • 分类号G06F11/36;

  • 代理机构北京同达信恒知识产权代理有限公司;

  • 代理人刘松

  • 地址 100083 北京市海淀区学院路29号

  • 入库时间 2024-02-19 21:57:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-24

    授权

    授权

  • 2014-03-12

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20131024

    实质审查的生效

  • 2014-01-29

    公开

    公开

说明书

技术领域

本发明涉及通信领域,尤其涉及一种多核处理器中基于VCPU的调试方法 和装置。

背景技术

多核处理器是指在一个处理器中集成两个或多个完整的计算引擎(内核)。 多核处理器是单枚芯片,能够直接插入单一的处理器插槽中,但操作系统会利 用所有相关的资源,将每个执行内核作为分立的逻辑处理器。通过在多个执行 内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。多核处 理器能够在高集成化并占用较小空间的基础上提供更多的功能,相比传统的单 核系统而言性能更好。

VCPU(虚拟CPU)技术是CPU的虚拟化技术,CPU的虚拟化就是单CPU 模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序可以 在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

例如,多核处理器XLR732内部有8个内核(Core),每个Core又包含4 个独立的硬件线程或称为VCPU。每个VCPU可以运行LINUX、VXWORKS 等操作系统,也可以直接运行于RMIOS操作系统。

在多核处理器环境下基于VCPU进行应用程序开发时,需要对VCPU运 行的应用程序进行调试。目前主要采用的一种调试方法称为打印调试方法,即 通过在代码上嵌入printf源代码来进行错误跟踪。打印调试方法属于不可控制 的调试方法。在多核处理器环境下,多个内核同时打印,无法区分是哪个内核 的信息,甚至可能多个内核同时打印输出,导致打印结果为乱码。由于无法保 证printf的顺序,因此也就无法保证打印输出的可靠性和准确性,进而无法保 证多核处理器环境下基于VCPU的应用程序调试的可靠性和准确性。

发明内容

本发明实施例提供了一种多核处理器中基于VCPU的调试方法和装置,用 以提高多核处理器环境下基于VCPU进行应用程序调试时的可靠性和准确性。

本发明实施例提供的多核处理器中基于VCPU的调试方法中,每个VCPU 按照设定周期执行以下步骤:获取第一变量,所述第一变量为所述多核处理器 中所有VCPU共享的全局变量,所述全局变量的值为需要进行调试的第一目标 VCPU的标识;将获取到的第一变量的值与本VCPU的标识进行比较,若所述 第一变量的值与本VCPU的标识相同,则获取本VCPU对应的串行接口上输 入的命令并执行所述命令,所述命令包括调试命令和/或串口切换命令,所述串 口切换命令用于将所述第一变量的值设置为需要进行调试的第二目标VCPU 的标识,所述调试命令用于对VCPU上的应用进行调试。

本发明的上述实施例,通过在当前VCPU对应的串行接口上输入串口切换 命令,通过串口切换命令将全局第一变量的值设置为调试目标VCPU的标识; 各VCPU按照设定周期获取该全局第一变量,若该全局第一变量的值与本 VCPU的标识相同,则说明需要对本VCPU上的应用进行调试,因此通过执行 本VCPU对应的串口上输入的调试命令以达到调试目的。可以看出,全局第一 变量的值为调试目标VCPU的标识,通过串口切换命令设置该全局第一变量, 即达到了切换调试目标VCPU或调试目标VCPU对应的串行接口的目的,因 此可以有效控制调试目标,与现有技术相比,提高了多核处理器环境下基于 VCPU进行应用调试的可靠性和准确性。

在一种优选实现方式中,还包括:在需要对所述第二目标VCPU进行调试 时,在当前VCPU对应的串行接口上输入串口切换命令,所述当前VCPU的 VCPU标识与当前所述第一变量的值相同,所述串口切换命令用于将所述第一 变量的值设置为所述第二目标VCPU的标识。通过以上操作,并结合通过串口 切换命令将全局第一变量的值设置为调试目标VCPU的标识,可以实现对目标 VCPU上的应用进行调试。

在一种优选的实现方式中,执行所述调试命令之后,还包括:在所述调试 命令的执行结果中添加本VCPU的标识,输出添加了本VCPU的标识的执行 结果,以表明该执行结果是哪个VCPU的调试命令执行结果,以便于后续分析。

在一种优选的实现方式中,所述获取本VCPU对应的串行接口上输入的命 令,包括:通过执行系统函数,获取本VCPU对应的串行接口上输入的命令。 这样,可以利用系统函数获取本VCPU对应的串行接口上输入的命令,技术实 现简单易行。

在一种优选的实现方式中,所述串行接口上输入的命令是预先注册到所述 多核处理器的操作系统中的。这样,新增调试命令时,仅需在全局的结构体中 按照格式增加所需的调试命令即可,可以不需每次都在初始化时增加调试命 令。

本发明实施例提供的多核处理器中基于VCPU的调试装置位于所述多核 处理器中的每个VCPU,所述装置包括:

获取模块,用于获取第一变量,所述第一变量为所述多核处理器中所有 VCPU共享的全局变量,所述全局变量的值为需要进行调试的第一目标VCPU 的标识;

判断模块,用于将所述获取模块获取到的第一变量的值与本VCPU的标识 进行比较;

执行模块,用于在所述判断类模块判断所述第一变量的值与本VCPU的标 识相同时,获取本VCPU对应的串行接口上输入的命令并执行所述命令,所述 命令包括调试命令和/或串口切换命令,所述串口切换命令用于将所述第一变量 的值设置为需要进行调试的第二目标VCPU的标识,所述调试命令用于对 VCPU上的应用进行调试。

本发明的上述实施例,通过在当前VCPU对应的串行接口上输入串口切换 命令,通过串口切换命令将全局第一变量的值设置为调试目标VCPU的标识; 各VCPU按照设定周期获取该全局第一变量,若该全局第一变量的值与本 VCPU的标识相同,则说明需要对本VCPU上的应用进行调试,因此通过执行 本VCPU对应的串口上输入的调试命令以达到调试目的。可以看出,全局第一 变量的值为调试目标VCPU的标识,通过串口切换命令设置该全局第一变量, 即达到了切换调试目标VCPU或调试目标VCPU对应的串行接口的目的,因 此可以有效控制调试目标,与现有技术相比,提高了多核处理器环境下基于 VCPU进行应用调试的可靠性和准确性。

在一种优选的实现方式中,所述执行模块还用于,在执行所述调试命令之 后,在所述调试命令的执行结果中添加本VCPU的标识,输出添加了本VCPU 的标识的执行结果。通过以上操作,并结合通过串口切换命令将全局第一变量 的值设置为调试目标VCPU的标识,可以实现对目标VCPU上的应用进行调 试。

在一种优选的实现方式中,所述获取模块具体用于,通过执行系统函数, 获取本VCPU对应的串行接口上输入的命令,以表明该执行结果是哪个VCPU 的调试命令执行结果,以便于后续分析。

在一种优选的实现方式中,所述串行接口上输入的命令是预先注册到所述 多核处理器的操作系统中的。这样,新增调试命令时,仅需在全局的结构体中 按照格式增加所需的调试命令即可,可以不需每次都在初始化时增加调试命 令。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所 需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的 一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提 下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的多核处理器环境下基于VCPU的调试流程示意 图之一;

图2为本发明实施例提供的多核处理器环境下基于VCPU的调试流程示意 图之二;

图3为本发明实施例提供的多核处理器环境下基于VCPU的调试装置的示 意图。

具体实施方式

为了提高多核处理器环境下基于VCPU对应用程序进行调试时的可靠性 和准确性,本发明实施例通过在串行接口(以下简称串口)上输入串口切换命 令的方式,由该串口切换命令将一个所有VCPU共享的全局变量设置为调试目 标VCPU的标识,若有VCPU根据该全局变量确认本VCPU为调试目标VCPU 时,根据本VCPU对应的串口上输入的调试命令进行应用程序调试。

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发 明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例, 而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做 出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

参见图1,为本发明实施例提供的多核处理器环境下基于VCPU的调试流 程示意图。本发明实施例中,首先设置一个所有VCPU共享的全局变量,该全 局变量的值为需要进行调试的第一目标VCPU的标识。在每个设定周期,每个 VCPU执行以下操作:

步骤101:获取所述全局变量;

步骤102:将获取到的所述全局变量的值与本VCPU的标识进行比较,若 所述全局变量的值与本VCPU的标识相同,则获取本VCPU对应的串行接口 上输入的命令并执行所述命令。所述命令可以包括调试命令和/或串口切换命 令,所述串口切换命令用于将所述全局变量的值设置为需要进行调试的第二目 标VCPU的标识,所述调试命令用于对VCPU上的应用进行调试。

为方便描述,以下将所述全局变量称为g_ulShellMask,并参照图2对本发 明实施例的具体实现过程进行更详细的描述。g_ulShellMask的取值范围为 VCPU标识的取值范围。例如,如果VCPU标识为整数编号,取值范围是[0, N](N为不小于1的正整数),则g_ulShellMask的取值范围也可设置为[0,N] 范围内的整数。

当需要对VCPUn(0≤n≤N)上运行的应用程序进行调试时,可通过串口 切换命令将g_ulShellMask设置为VCPUn的VCPU标识值,然后在VCPUn对 应的串口上输入调试命令。每个VCPU按照设定周期读取g_ulShellMask,并 将读取的变量值与自身的VCPU标识值进行比较,若相同,则获取并执行本 VCPU对应的串口上输入的调试命令。

参见图2,为本发明实施例提供的多核处理器环境下基于VCPU的调试流 程示意图。以下流程可按照设定周期执行,在每个周期,每个VCPU执行以下 操作:

步骤201:读取全局变量g_ulShellMask;

步骤202:将读取的全局变量g_ulShellMask与本VCPU的标识进行比较, 如果相同,则转入步骤203,否则转入步骤206;

步骤203:获取该VCPU对应的串口上输入的命令;

步骤204:执行获取到的命令;

步骤206:执行常规处理(比如执行本VCPU需要周期处理的操作),并 等待下一个周期的到来。

上述流程的步骤204中,该VCPU对应的串口上输入的命令可以仅包括串 口切换命令,也可以仅包括调试命令,还可以既包括串口切换命令又包括调试 命令(步骤204a)。如果仅包含串口切换命令,则VCPU通过执行该串口切换 命令设置全局变量g_ulShellMask,即,将当前串口切换到g_ulShellMask所指 示的目标VCPU对应的串口,以便下一个周期到达时,针对该变量 g_ulShellMask所指示的目标VCPU上运行的应用进行调试(步骤204b),执行 完成串口切换命令后可进一步转入步骤206。如果仅包含调试命令,则VCPU 通过执行该调试命令以达到对该VCPU上运行的应用进行调试的目的(步骤 204c),此后可进一步转入步骤206。如果既包括串口切换命令又包括调试命令, 则VCPU在将当前串口切换到下一个周期需要进行调试的目标VCPU对应的 串口的同时,还对本VCPU上运行的应用进行调试(步骤204d),此后可进一 步转入步骤206。

进一步的,若该VCPU对应的串口上输入的命令中包含调试命令,则在执 行该调试命令之后,还可包括步骤205:通过打印操作将执行结果通过本VCPU 对应的串口进行输出。进一步的,在输出执行结果时,可在输出的执行结果中 添加本VCPU的标识,以表明该执行结果是哪个VCPU的调试命令执行结果, 以便于后续分析。

所述调试命令可以包括查看VCPU状态的命令等,比如查看收发统计情 况,查看CPU、内存资源使用情况等,在此不再一一列举。

通过以上描述可以看出,本发明的上述实施例,通过在当前VCPU对应的 串行接口上输入串口切换命令,通过串口切换命令将全局变量的值设置为调试 目标VCPU的标识;各VCPU按照设定周期获取该全局变量,若该全局变量 的值与本VCPU的标识相同,则说明需要对本VCPU上的应用进行调试,因 此通过执行本VCPU对应的串口上输入的调试命令以达到调试目的。可以看 出,全局变量的值为调试目标VCPU的标识,通过串口切换命令设置该全局第 一变量,即达到了切换调试目标VCPU或调试目标VCPU对应的串行接口的 目的,因此可以有效控制调试目标,与现有技术相比,提高了多核处理器环境 下基于VCPU进行应用调试的可靠性和准确性。

为了更加清楚的对本发明实施例进行说明,下面以在RMIOS系统中的应 用为例,说明本发明实施例的具体实现过程,在其他操作系统中的应用与此类 似。

将本发明实施例应用于RMIOS系统中时,可利用RMIOS系统的系统函 数register_shell_cmd注册shell命令,并可根据需要对所有VCPU共享的 shared_memory(共享内存或共享寄存器)型变量进行设置,各个VCPU在运 行的过程中每隔1ms(当然也可以设置为其他时间长度)读取一次该变量值, 以确认是否执行系统函数shell_run函数来捕获和执行本VCPU对应的串口输 入的命令,并在执行串口输入的命令后将该命令的执行结果输出至串口,从而 有效的控制串口输出与VCPU的对应关系,支持通过同一个串口与多个VCPU 之间进行有序的人机交互。

下面对以上在RMIOS系统中的应用进行具体描述。

本发明实施例中,VCPU号取值在0-31之间(包括0和31),VCPU0为 VCPU号为0的VCPU,VCPU1为VCPU号为1的VCPU,以此类推。在多 核处理器进行初始化的过程中,执行以下操作:

(a)定义shared_memory型串口控制掩码全局变量g_ulShellMask,用于 进行串口控制。g_ulShellMask的取值范围为[0,31],初始值可设置为0。

(b)定义全局变量g_ulVCPUId,每个VCPU均具有自己的g_ulVCPUId, 用于存储本VCPU的VCPU号,g_ulVCPUId的取值范围为[0,31]。可通过调 用RMIOS的API函数分别获取各VCPU的VCPU号,存储在对应VCPU的全 局变量g_ulVCPUId中。

(c)调用RMIOS系统提供的API(Application Programming Interface,应 用程序编程接口)函数进行shell初始化。在计算机科学中,Shell俗称壳(用 来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它接收用 户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令 语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好 的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许 多在高级语言中才具有的控制结构。

(d)调用系统函数register_shell_cmd向RMIOS系统注册可用的shell命 令。注册的shall命令中需要包括串口切换命令。注册shell命令的语句为:

register_shell_cmd("run_shell_cmd",(void*)run_shell_cmd)

串口切换命令的实现可以是:在run_shell_cmd中通过参数来带入输入的 字符串和参数,并执行函数来实现串口切换。如:串口切换命令的完整执行语 句为:run_shell_cmd set_printmask3,通过执行该命令可将g_ulShellMask的值 设置为3。

在初始化过程中,用户可根据需求在run_shell_cmd中增加不同的shell命 令,以便在运行过程中对VCPU的各种状态信息进行查看,达到对VCPU上 的应用进行调试的目的,也可以在运行时直接调用系统函数register_shell_cmd 注册命令来实现对VCPU的各种状态信息进行查看。本发明实施例优选采用的 是前种方法。新增shell命令时,仅需在全局的结构体中按照格式增加所需的 shell命令即可,可以不需每次都在初始化时增加register_shell_cmd。

下面以一个具体场景说明在多核处理器运行过程中的基于VCPU进行应 用调试的流程。下面的场景中,将当前VCPU0对应的串口切换到VCPU3对 应的串口,然后在VCPU3对应的串口上输入调试命令,以实现对VCPU3上 运行的应用进行调试。

第一毫秒到达时,此时g_ulShellMask=0,则当前的串口为VCPU0对应的 串口。此时在VCPU0对应的串口上输入run_shell_cmd set_printmask3,VCPU 0读取g_ulShellMask,判断读取到的g_ulShellMask值与VCPU0的变量 g_ulVCPUId的值相同,即读取到的g_ulShellMask值与自身的VCPU号相同, 则通过执行RMIOS的系统函数shell_run,来捕获VCPU0对应的串口上输入 的run_shell_cmd set_printmask3命令,通过执行该命令将g_ulShellMask设置 为3。进一步的,此后VCPU0还可执行本VCPU需要定期执行的操作。

第二毫秒到达时,此时g_ulShellMask=3,则当前的串口为VCPU3对应的 串口。此时在VCPU3对应的串口上输入调试命令,VCPU3读取 g_ulShellMask,判断读取到的g_ulShellMask值与VCPU3的变量g_ulVCPUId 的值相同,即读取到的g_ulShellMask值与自身的VCPU号相同,则通过执行 RMIOS的系统函数shell_run,来捕获VCPU3对应的串口上输入的调试命令, 并执行该调试命令。进一步的,VCPU3还可以将自身的VCPU号添加到调试 命令的执行结果中,再通过调用printf函数将该执行结果从VCPU3对应的串 口输出。进一步的,此后VCPU3还可执行本VCPU需要定期执行的操作。

每隔一毫秒,每个VCPU都会读取g_ulShellMask,判断读取到的 g_ulShellMask值与本VCPU的变量g_ulVCPUId的值是否相同。在上述第一 毫秒到达时,除VCPU0以外的其他VCPU读取到的g_ulShellMask值与自身 的VCPU号不相同,此种情况下,可执行本VCPU需要定期执行的操作,如 数据分发,调度处理等。同理,在上述第二毫秒到达时,除VCPU3以外的其 他VCPU读取到的g_ulShellMask值与自身的VCPU号不相同,此种情况下, 可执行本VCPU需要定期执行的操作,如数据分发,调度处理等。

在全局变量g_ulShellMask不变的情况下,始终对该全局变量 g_ulShellMask所指示的VCPU上的应用进行调试。

当需要对其他VCPU上的应用进行调试时,则可通过上述方式先进行串口 切换,即切换到目标VCPU对应的串口,然后在该目标VCPU对应的串口上 输入调试命令,使目标VCPU执行该调试命令,完成对该目标VCPU上的应 用的调试。

进一步的,如果串口切换命令中的参数(该参数为目标VCPU的VCPU 号)超出VCPU号的取值范围,比如串口切换命令为run_shell_cmd set_printmask33,则VCPU不更新全局变量g_ulShellMask的值,本次串口切 换失败,当前串口不变。

上述流程中,可通过人机交互方式,在VCPU对应的串口上输入调试命令 和/或串口切换命令。例如,用户可通过在管理多核处理器的操作系统界面中输 入上述调试命令和/或串口切换命令;也可以通过软件方式按照设定的调试策略 在VCPU对应的串口上输入调试命令和/或串口切换命令,以达到对目标VCPU 上的应用进行调试的目的,如可依次对每个VCPU上运行的应用进行相同的调 试操作。

综上所述,本发明实施例与现有技术相比,可以提高多核处理器环境下基 于VCPU进行应用调试的可靠性和准确性。

为了进一步阐述本发明实施例提供的技术方案的技术效果,下面对照现有 的几种多核处理器环境下基于VCPU进行应用调试的方法进行对比分析。

(1)与现有技术中通过在代码上嵌入printf源代码来进行错误跟踪的方式 进行对比分析

现有技术提供的打印调试方法是不可控制调试方法,多个内核会同时进行 调试和打印输出,这样导致一方面,由于无法保证printf的打印顺序,也就无 法区分打印输出的是哪个内核的信息,也就无法保证打印输出的可靠性和准确 性;另一方面,由于该方法对调试目标不可控,因此对于不需要调试的目标内 核也进行打印输出,造成系统资源的浪费。

而本发明实施例提供的调试方法,通过在当前VCPU对应的串行接口上输 入串口切换命令,通过串口切换命令将全局变量的值设置为调试目标VCPU的 标识,以控制调试目标VCPU或调试目标VCPU对应的串行接口,从而有效 控制调试目标,与现有技术相比,提高了多核处理器环境下基于VCPU进行应 用调试的可靠性和准确性。

(2)与现有技术中通过JTAG(Joint Test Action Group,联合测试行动小 组)协议来进行调试的方式进行对比分析

现有技术中,在多路技术的支持下,通过对希望调试的内核进行注册登记 (Registering),开发人员可经由单一JTAG接口访问多个离散状态的内核。如 果在有多个厂商产品组成的异构多核环境中进行调试工作,此时,仅仅依靠多 路技术是无法解决问题的,开发人员就需要采用可编址扫描端口(addressable  scan port)。这种架构需要用到非常特殊的组件,这些组件可以让开发人员把 JTAG扫描链分割成多个功能组,并通过唯一的地址来访问每个功能组。由于 JTAG使用的一些局限性,如:系统配置复杂,连线需求等在完整的产品交付 后无法使用,并且对使用者的要求也比较高,不可能所有的维护人员都能够做 到熟练使用JTAG进行调试。

而本发明实施例只要在串口上输入串口切换命令和调试命令,即可实现对 特定VCPU上的应用进行调试,使用简单方便,无需开发人员掌握特定的技术 及知识。

(3)与现有技术中通过硬件或软件断点调试方式进行对比分析

通过硬件或软件的断点调试方式,是指在调试的过程中通过设置硬件端点 或软件断点来对程序进行调试。硬件断点需要硬件寄存器提供支持,断点的数 目受限。软件断点通过在运行起来的程序中设置特征值实现,但是一般情况下 软件断点只能在可写的存储器的地址中设置(比如:RAM),而不能在ROM (比如:Flash)中设置。

硬件断点需要目标CPU的硬件支持,对于当前的RMIOS系统,由于硬件 不支持,则硬件断点无法使用。对于软件断点,通常的软件断点只能设在RAM 运行的代码上,而随着系统的代码量越来越大,特别是在移动通信领域,扩充 大容量的RAM势必会增加产品的成本,所以现在很多系统直接在FlashROM 上运行代码。对于这种在FlashROM上运行代码的系统,一般的软件断点是无 法设置的,这也是软件断点的局限性。

而本发明实施例,提供的调试方法,不用设置断点,因此不受设置断点的 条件限制,可以通过shell命令对所需的信息进行查看或执行函数,无需打断 认为执行,实时性好。

(4)与现有技术中远端模拟shell执行调试的方式进行对比分析

现有技术中的远端模拟shell类似于Telnet的文本方式交互的调试手段。 在终端将文本消息发送至目标执行终端并转换为函数调用,目标终端执行完命 令后将结果以字符串的方式再返回给源终端。该方案要求中间的节点通信必须 畅通,如有通信异常则无法获取到信息。

而本发明实施例中,无需通过中间节点,因此可靠性得以提高。另外,本 发明实施例通过软件凡是实现串口在VCPU间的切换及打印控制,配置简单, 成本低廉,处理简单,可靠性高。

基于相同的技术构思,本发明实施例还提供了一种多核处理器中基于虚拟 处理器VCPU的调试装置,该装置可应用于本发明实施例的上述流程。

参见图3,为本发明实施例提供的多核处理器中基于虚拟处理器VCPU的 调试装置结构示意图。该装置位于多核处理器中的每个VCPU,所述装置可包 括:获取模块301、判断模块302和执行模块303,其中:

获取模块301,用于获取第一变量,所述第一变量为所述多核处理器中所 有VCPU共享的全局变量,所述全局变量的值为需要进行调试的第一目标 VCPU的标识;

判断模块302,用于将所述获取模块获取到的第一变量的值与本VCPU的 标识进行比较;

执行模块303,用于在所述判断类模块判断所述第一变量的值与本VCPU 的标识相同时,获取本VCPU对应的串行接口上输入的命令并执行所述命令, 所述命令包括调试命令和/或串口切换命令,所述串口切换命令用于将所述第一 变量的值设置为需要进行调试的第二目标VCPU的标识,所述调试命令用于对 VCPU上的应用进行调试。

进一步的,执行模块还可在执行所述调试命令之后,在所述调试命令的执 行结果中添加本VCPU的标识,输出添加了本VCPU的标识的执行结果。

具体的,获取模块301可通过执行系统函数,获取本VCPU对应的串行接 口上输入的命令。

具体的,所述串行接口上输入的命令是预先注册到所述多核处理器的操作 系统中的。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产 品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入 式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算 机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一 个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设 备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中 的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个 流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使 得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处 理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个 流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基 本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要 求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号