CN103544105B - 多核处理器中基于vcpu的调试方法和装置 - Google Patents
多核处理器中基于vcpu的调试方法和装置 Download PDFInfo
- Publication number
- CN103544105B CN103544105B CN201310508682.2A CN201310508682A CN103544105B CN 103544105 B CN103544105 B CN 103544105B CN 201310508682 A CN201310508682 A CN 201310508682A CN 103544105 B CN103544105 B CN 103544105B
- Authority
- CN
- China
- Prior art keywords
- vcpu
- variable
- serial ports
- command
- debug
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种多核处理器中基于VCPU的调试方法和装置。每个VCPU按照设定周期执行以下步骤:获取第一变量,该第一变量为多核处理器中所有VCPU共享的全局变量,其值为需要进行调试的第一目标VCPU的标识;将获取到的第一变量的值与本VCPU的标识进行比较,若相同,则获取本VCPU对应的串行接口上输入的命令并执行该命令,所述命令可包括调试命令和/或串口切换命令,所述串口切换命令用于将所述第一变量的值设置为需要进行调试的第二目标VCPU的标识,所述调试命令用于对VCPU上的应用进行调试。采用本发明可提高多核处理器环境下基于VCPU进行应用程序调试时的可靠性和准确性。
Description
技术领域
本发明涉及通信领域,尤其涉及一种多核处理器中基于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_cmdset_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,VCPU0读取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_cmdset_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对应的串行接口上输入的命令。
具体的,所述串行接口上输入的命令是预先注册到所述多核处理器的操作***中的。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (4)
1.一种多核处理器中基于虚拟处理器VCPU的调试方法,其特征在于,每个VCPU按照设定周期执行以下步骤:
获取第一变量,所述第一变量为所述多核处理器中所有VCPU共享的全局变量,所述全局变量的值为需要进行调试的第一目标VCPU的标识;
将获取到的第一变量的值与本VCPU的标识进行比较,若所述第一变量的值与本VCPU的标识相同,则获取本VCPU对应的串行接口上输入的命令并执行所述命令,所述命令包括调试命令和/或串口切换命令,所述串口切换命令用于将所述第一变量的值设置为需要进行调试的第二目标VCPU的标识,所述调试命令用于对VCPU上的应用进行调试;
在需要对所述第二目标VCPU进行调试时,在当前VCPU对应的串行接口上输入串口切换命令,所述当前VCPU的VCPU标识与当前所述第一变量的值相同,所述串口切换命令用于将所述第一变量的值设置为所述第二目标VCPU的标识。
2.如权利要求1所述的方法,其特征在于,执行所述调试命令之后,还包括:
在所述调试命令的执行结果中添加本VCPU的标识,输出添加了本VCPU的标识的执行结果。
3.如权利要求1-2中任一项所述的方法,其特征在于,所述获取本VCPU对应的串行接口上输入的命令,包括:
通过执行***函数,获取本VCPU对应的串行接口上输入的命令。
4.如权利要求1-2中任一项所述的方法,其特征在于,所述串行接口上输入的命令是预先注册到所述多核处理器的操作***中的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310508682.2A CN103544105B (zh) | 2013-10-24 | 2013-10-24 | 多核处理器中基于vcpu的调试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310508682.2A CN103544105B (zh) | 2013-10-24 | 2013-10-24 | 多核处理器中基于vcpu的调试方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103544105A CN103544105A (zh) | 2014-01-29 |
CN103544105B true CN103544105B (zh) | 2017-05-24 |
Family
ID=49967577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310508682.2A Active CN103544105B (zh) | 2013-10-24 | 2013-10-24 | 多核处理器中基于vcpu的调试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103544105B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199768B (zh) * | 2014-08-21 | 2017-04-05 | 大唐移动通信设备有限公司 | 多核处理器置位的方法和装置 |
CN108021476B (zh) * | 2016-10-31 | 2020-03-20 | 华为技术有限公司 | 一种互联接口的测试方法、装置和计算设备 |
CN106714010A (zh) * | 2017-01-09 | 2017-05-24 | 深圳市新格林耐特通信技术有限公司 | 基于epld实现olt设备cpu和pon芯片之间串口切换的装置及方法 |
CN109726135B (zh) * | 2019-01-25 | 2022-06-14 | 嘉楠明芯(北京)科技有限公司 | 一种多核调试方法、装置及计算机可读存储介质 |
CN111427806A (zh) * | 2020-03-23 | 2020-07-17 | 深圳震有科技股份有限公司 | 一种双核amp***共用串口的方法、存储介质及智能终端 |
CN111427817B (zh) * | 2020-03-23 | 2021-09-24 | 深圳震有科技股份有限公司 | 一种amp***双核共用i2c接口的方法、存储介质及智能终端 |
CN111708662B (zh) * | 2020-05-26 | 2023-09-29 | 新华三技术有限公司 | 调试方法及装置 |
CN118245410A (zh) * | 2024-05-28 | 2024-06-25 | 山东云海国创云计算装备产业创新中心有限公司 | 数据操作方法、装置、设备、可读存储介质及程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101212362A (zh) * | 2006-12-26 | 2008-07-02 | 中兴通讯股份有限公司 | 一种融合多类型测试工具的自动化测试装置及方法 |
CN101609429A (zh) * | 2009-07-22 | 2009-12-23 | 大唐微电子技术有限公司 | 一种调试嵌入式操作***的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7748033B2 (en) * | 2005-02-25 | 2010-06-29 | Microsoft Corporation | Windows remote debugger service |
-
2013
- 2013-10-24 CN CN201310508682.2A patent/CN103544105B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101212362A (zh) * | 2006-12-26 | 2008-07-02 | 中兴通讯股份有限公司 | 一种融合多类型测试工具的自动化测试装置及方法 |
CN101609429A (zh) * | 2009-07-22 | 2009-12-23 | 大唐微电子技术有限公司 | 一种调试嵌入式操作***的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103544105A (zh) | 2014-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103544105B (zh) | 多核处理器中基于vcpu的调试方法和装置 | |
US6718294B1 (en) | System and method for synchronized control of system simulators with multiple processor cores | |
CN100565472C (zh) | 一种适用于多处理器核***芯片的调试方法 | |
US11768601B2 (en) | System and method for accelerated data processing in SSDS | |
CN106155883A (zh) | 一种虚拟机可靠性测试方法及装置 | |
CN101149728A (zh) | 一种多核处理***及其管理方法 | |
DE102005021749A1 (de) | Verfahren und Vorrichtung zur programmgesteuerten Informationsverarbeitung | |
DE112017006568T5 (de) | Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern | |
CN102929158A (zh) | 一种多核多模型并行分布式实时仿真*** | |
CN112541313B (zh) | 为逻辑分析态配置触发表达式的方法和装置 | |
CN103995778A (zh) | 一种基于事件和动作的脚本文件生成方法及其装置 | |
CN103379000A (zh) | 一种并发测试方法及测试服务器 | |
CN110290024A (zh) | 策略上线前测试方法、装置及设备 | |
US7240258B1 (en) | Parallel test system and method | |
CN111262753B (zh) | 一种numa节点个数自动配置方法方法、***、终端及存储介质 | |
CN109947535A (zh) | 面向虚拟机的故障注入套件 | |
EP4148568A1 (en) | Method for realizing live migration, chip, board, and storage medium | |
JP5841458B2 (ja) | 試験装置および試験モジュール | |
JP2007304765A (ja) | プロセッサシステム及びプロセッサシステムの性能測定方法 | |
CN107632910A (zh) | 一种测试方法和装置 | |
EP2672388A1 (en) | Multi-processor parallel simulation method, system and scheduler | |
CN111447273B (zh) | 云处理***及基于云处理***的数据处理方法 | |
CN107783817A (zh) | 处理器的模拟方法、功能模拟器、性能模拟器和模拟*** | |
CN105068937B (zh) | 一种Linux内核模块的单元测试方法 | |
CN103077069B (zh) | 指令解析的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |