CN101251819A - 一种适用于多处理器核系统芯片的调试方法 - Google Patents
一种适用于多处理器核系统芯片的调试方法 Download PDFInfo
- Publication number
- CN101251819A CN101251819A CNA2007101645846A CN200710164584A CN101251819A CN 101251819 A CN101251819 A CN 101251819A CN A2007101645846 A CNA2007101645846 A CN A2007101645846A CN 200710164584 A CN200710164584 A CN 200710164584A CN 101251819 A CN101251819 A CN 101251819A
- Authority
- CN
- China
- Prior art keywords
- processor core
- debugging
- module
- station module
- multiprocessor
- 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.)
- Granted
Links
Images
Abstract
本发明公开了一种适用于多处理器核系统芯片的调试方法:用一个运行在宿主机上的虚拟主控处理器核模块(111)来模拟一个主控处理器和调试控制站程序,负责发送和接收命令,控制多处理器核系统芯片的调试,发送调试命令给物理的每个处理器核上的运行调试服务站模块(131),并接收回复信息到运行在宿主机上的带有图形化界面的软件调试器(110)。本发明方法占用较小的硬件资源,利用软件来进行调试,可移植性强,适用于多处理器核系统芯片/片上网络平台调试。
Description
技术领域
本发明涉及一种适用于多处理器核系统芯片的调试方法。
背景技术
随着近年来晶体管工艺的发展和应用需求的驱动,嵌入式芯片设计已经从单处理器核系统进入多处理器核系统芯片(MPSoC)。如何对多处理器核系统芯片上运行的程序进行调试,成为了一个迫切需要解决的问题。
传统的单核处理器程序的调试方法有软件和硬件方法两大类。软件调试方法如GNU Debugger(GDB)运行于宿主机,处理器上运行GDB Stub,GDB向用户提供被调试程序的信息,并向GDB Stub发送调试请求,如查看寄存器的值,GDB Stub根据调试请求进行相应的处理,并向GDB反馈信息。硬件调试方法通过在处理器加入调试接口,如JTAG、EJTAG和Trace等,通过使处理器核进入一个特定的调试态;在这个调试态,可以查看处理器核的信息。软件方法的优点是为支持调试而增加的硬件代价较低,只需要处理器核支持断点、断点指令和异常处理机制等;缺点是调试速度不如硬件方法快。硬件方法的优点是调试速度较快,对结果不产生影响,低侵入性(调试不占用系统资源,不改变程序执行的行为,不对结果产生影响);缺点是硬件代价高,开发周期、芯片面积和功耗有所增加;当集成多个处理器时,若每个核增加调试接口而导致芯片面积、功耗增大。
发明内容
本发明要解决的技术问题是提供一种适用于多处理器核系统芯片的调试方法,该方法能调试同构或异构的多处理器核系统芯片,并通过宿主机上的图形化软件调试工具查看、控制被调试程序运行状态。
为了解决上述技术问题,本发明提供一种适用于多处理器核系统芯片的调试方法:用一个运行在宿主机上的虚拟主控处理器核模块111来模拟一个主控处理器和调试控制站程序,负责发送和接收命令,控制多处理器核系统芯片的调试,发送调试命令给物理的每个处理器核上的运行调试服务站模块131,并接收回复信息到运行在宿主机上的带有图形化界面的软件调试器110。
作为本发明的适用于多处理器核系统芯片的调试方法的改进,该方法包括以下步骤:
1)、软件调试器110针对每一个处理器核上的运行调试服务站模块131提供单步调试运行、设置/去除断点和运行至断点处的功能;并将上述功能转换为特定格式的调试命令包,通过Windows进程间通信机制将调试命令发送给在虚拟主控处理器核模块111上运行的调试控制站模块112;
2)、虚拟主控处理器核模块111依次通过宿主机上的外设接口、与多处理器核系统芯片的总线(如果多处理器核系统是基于总线架构)或片上网络某节点上的总线(如果多处理器核系统是基于片上网络架构)相连的通信接口121,来访问多处理器核系统芯片硬件平台上的全局存储器140;
虚拟主控处理器核模块111将调试控制站模块112所收到的调试命令转发给每个处理器核上的运行调试服务站模块131;
3)、运行调试服务站模块131对本处理器核上运行的被调试程序执行调试命令所要求的动作,并产生相应的返回信息;
4)、运行调试服务站模块131与虚拟主控处理器核模块111通过通信协议通信,因此上述返回信息通过通信接口121到达虚拟主控处理器核模块111,最终在软件调试器110作相应的显示。
因此,本发明主要包括三部分的内容。第一部分是宿主机上的带有图形化界面的软件调试器110。第二部分是宿主机上的一个虚拟主控处理器核模块111,该虚拟主控处理器核模块111能通过宿主机上的外设接口(如USB,串口,并口等)和多处理器核硬件开放平台通信,该虚拟主控处理器核模块111能通过连接到多处理器核系统芯片的总线(如果多处理器核系统是基于总线架构)或片上网络某节点上的总线(如果多处理器核系统是基于片上网络架构)的外设接口访问系统芯片的共享存储空间(即全局存储器140)(如果多处理器核系统是基于片上网络架构,虚拟主控处理器核模块(111)发送调试控制站模块(112)所收到的调试命令,该调试命令通过片上网络路由到达调试命令中所指定的处理器核上)。第三部分是每个处理器核上的运行调试服务站模块131。多处理器核系统芯片的硬件抽象和软件结构如图1所示。具体说明如下:
第一部分,宿主机上的带有图形化界面的软件调试器110(命名为GUIMPSoC Debugger,以下用GMD缩写代替)主要显示每个处理器核上的运行调试服务站模块131的运行情况,如各个处理器上运行的程序停止的地址、寄存器的值、特定存储空间上的特定长度的数据,并且向用户提供针对每一个处理器核上的运行调试服务站模块131的单步调试运行、设置/去除断点、运行至断点处的功能,该软件调试器110负责将这些功能转换为特定格式的调试命令包,通过Windows进程间通信机制将调试命令发送给第二部分的虚拟主控处理器核模块111上运行的调试控制站模块112,并等待运行调试服务站模块131返回的信息包来更新图形化界面的软件调试器110上显示的各个处理器上被调试程序的情况。
第二部分,宿主机上的虚拟主控处理器核模块111(Virtual Mainprocessor Core,以下缩写为VMC),是一个RISC核扩展的软件仿真器。此仿真器通过与多处理器核系统芯片的硬件平台的通信接口121相连的宿主机上的外设接口来访问多处理器核硬件平台的全局存储器140(GM:GlobalMemory)。虚拟主控处理器核模块111上运行一个调试控制站模块112(Debugger Control Station,以下缩写为DCS),调试控制站模块112接收来自软件调试器110的调试命令,转发给处理器核;
第三部分,处理器核上的运行调试服务站模块131(Debugger ServiceStation,以下缩写为DSS),该部分对本处理器核上运行的被调试程序执行调试命令所要求的动作,并产生返回信息,该部分与虚拟主控处理器核模块111通过通信协议通信。
本发明方法针对的硬件抽象如图1所示:假设物理上有1个RISC核和N-1个RISC/DSP核,有一块全局存储140(GM),RISC核连接到总线/片上网络,DSP核通过直接存储访问(DMA:Direct Memory Access)访问GM(DSP核也可以连接到总线/片上网络)。
全局存储器140划分出两个32字节的缓冲区交换调试系统信息,分别称为虚拟主控处理器核写缓冲141(VMC Write Buffer,以下缩写为VWB),和物理核写缓冲142(Physical core Write Buffer以下缩写为PWB)。虚拟主控处理器核模块111通过通信接口121访问硬件平台上的全局存储器140。一个Lock寄存器,针对每个物理核有VMC_write_ready,VMC_read_ready,Physical_Core_write_ready,Physical_Core_read_ready寄存器,这(4×N+1)个寄存器都是1bit的长度,并通过存储映射访问,虚拟主控处理器核模块111也可以访问这些寄存器。
本发明适用于多处理器核系统芯片的调试方法,其特点是采用软件测试方法,通过运行在宿主机上的软件调试器110,查看各个处理器上运行的被调试程序信息,如各个处理器上运行的程序停止的地址、寄存器值、特定存储空间上的特定长度的数据等;控制每个处理器上的运行调试服务站模块131的运行状态,如单步调试和断点设置等。
本发明适用于多处理器核系统芯片的调试方法,是通过特定的每个处理器核上的运行调试服务站模块131与运行在宿主机上的调试控制站模块112之间的通信协议、通信机制,在一个/多个处理器核在长时间运行(阻塞)时,宿主机上的调试控制站模块112通过非阻塞方式,确保其他处理器核仍然能被调试。
本发明适用于多处理器核系统芯片的调试方法,通过采用宿主机上运行的虚拟主控处理器核模块111,根据特定的通信协议,发送调试命令给多处理器核系统中每个处理器核上运行的运行调试服务站模块131,接收每个处理器核上运行的运行调试服务站模块131应答的方法来进行多处理器核系统芯片的调试。通过特定的机制,能够保证一个或多个处理器核在长时间运行(阻塞)时,其他处理器核仍然能被调试。该方法占用较小的硬件资源,利用软件来进行调试,可移植性强,适用于多处理器核系统芯片/片上网络平台调试。
综上所述,与现有的方法相比,本发明的适用于多处理器核系统芯片的调试方法具有如下优点:可移植性强,能适应于基于总线/片上网络通信模式的同构/异构多处理器核系统芯片;硬件成本低,支持调试系统的额外硬件资源包括两块32字节的全局存储区的缓冲区,(4×N+1)个1位寄存器(N是处理器核数目);能够保证一个或多个处理器核在长时间运行(阻塞)时,其他处理器核仍然能被调试。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1是多处理器核系统芯片硬件抽象和软件结构图;
图2是处理调试命令(非确定命令和确定命令)DCS的整体流程图;
图3是处理调试命令(非确定命令和确定命令)GMD的整体流程图;
图4是处理调试命令(非确定命令和确定命令)DSS的整体流程图。
具体实施方式
本发明定义调式命令包、返回信息包的格式是:处理器核号,线程号(可选),基本命令(或返回包基本格式),如下所示:
单步运行:
MP_step={C1_s,C2_s,…,{Ci_thread1_s,Ci_thread2_s,…},…}
Return_MP_step={C1_S_address,C2_S_address,…,
{Ci_thread1_S_address,Ci_thread2_S_address,…},…}
增加断点:
MP_add_break={C1_z_address,C2_z_address,…,
{Ci_thread1_z_address,Ci_thread2_z_address…},…}
Return_MP_add_break={C1_zOK,C2_zOK,…,
{Ci_thread1_zOK,Ci_thread2_zOK…},…}
删除断点:
MP_delete_break={C1_Z_address,C2_Z_address,…,
{Ci_thread1_Z_address,Ci_thread2_Z_address,…},…}
Return_MP_delete_break={C1_ZOK,C2_ZOK,…,
{Ci_thread1_ZOK,Ci_thread2_ZOK…},…}
查看寄存器的值:
MP_register={C1_r,C2_r,…,{Ci_thread1_r,Ci_thread2_r…},…}
Return_MP_register={C1_rvalue,C2_rvalue,…,
{Ci_thread1_rvalue,Ci_thread2_rvalue…},…}
查看存储器的值:
MP_memory={C1_m_addr_length,C2_m_addr_length,…,
{Ci_thread1_m_addr_length,Ci_thread2_m_addr_length…},…}
Return_MP_register={C1_mvalue,C2_mvalue,…,
{Ci_thread1_mvalue,Ci_thread2_mvalue…},…}
指定每一个被调试程序的起始地址:
MP_start_address={C1_start_address,C2_start_address,…,
{Ci_thread1_start_address,Ci_thread2_start_address…},…}
Return_MP_start_address={C1_address,C2_address,…,
{Ci_thread1_address,Ci_thread2_address…},…}
指定一个被调试程序结束调试:
MP_end={C1_end,C2_end,…,{Ci_thread1_end,Ci_thread2_end…},…}
Return_MP_end={C1_endOK,C2_endOK,…,
{Ci_thread1_endOK,Ci_thread2_endOK…},…}
继续运行直到断点:
MP_continue={C1_c,C2_c,…,{Ci_thread1_c,Ci_thread2_c,…},…}
该返回包基本格式如下表1所示:
表1、继续运行直到断点的调试命令基本格式和返回包基本格式
命令包基本格式 | 返回包基本格式 |
c | [Signal number][exceptionaddress], |
如果在一个固定的时间内返回;not_ready,如果在固定时间内无法返回 |
以上调试命令/回复信息格式中C1,C2,…,Ci,…分别表示处理器核的号码,Ci_thread1,Ci_thread2等分别表示第i号处理器核上运行的线程号。由于在实际应用中,运行在某个处理器核上的任务可能被分为多个线程,也可能只有单个线程,所以,类似于C1_s格式的调试命令是针对于某个处理器核上的任务只有单一线程的情况,类似于C3_thread2_s格式的调试命令是针对于某个处理器核上的任务被细化为多个线程时对某一个特定的线程的调试命令。
本发明的具体实施步骤包括以下几方面(以下是以硬件平台为总线连接方式为例):
I)、处理器上的运行调试服务站模块131的下载以及初始化:
1、在宿主机上,通过交叉编译环境(如GCC工具链),产生运行于每个处理器核上的运行调试服务站模块131的可装载/运行的机器码文件,并产生被调试的汇编程序的可装载/运行的机器码文件,将他们合并于一个文件中,称之为整合的文件;
2、将1中整合的文件下载到全局存储器140后,通过reset按键,将N个VMC_write_ready寄存器的值,N个VMC_read_ready寄存器的值,N个Physical_Core_write_ready寄存器的值,N个Physical_Core_read_ready寄存器的值都初始化为0,Lock寄存器初始化为1。RISC/DSP核启动DMA通信信道,将该整合文件中运行在特定处理器上的程序(包括运行调试服务站模块131和被调试程序)搬运到特定处理器的局部存储器上;
3、搬运完毕之后,每个处理器核上的调试服务站模块131开始执行,将异常处理程序拷贝至某一异常入口,运行调试服务站模块131就开始查询等待针对本处理器核上的被调试程序的Start_Address[addr]命令;
4、启动宿主机上的软件调试器110,并在宿主机上的虚拟主控处理器核模块111上运行调试控制站模块112,调试控制站模块112查询等待软件调试器110通过发送来的调试命令。
II)、调试开始:
1、用户在软件调试器110上指定第i个处理器核的调试起始地址,软件调试器110通过Windows进程间通信机制发送“Core[i]_Start_Address[addr]”(1≤i≤N)给虚拟主控处理器核模块111上运行的调试控制站模块112;
2、当调试控制站模块112收到软件调试器110的调试命令时,首先将N个VMC_read_ready寄存器的值,和N个VMC_write_ready寄存器的值 设为0,并将Lock寄存器的值设为1,将该命令放入虚拟主控处理器核写缓冲141,并将第i个VMC_write_ready寄存器的值设为1,并等待第i个处理器核的回复;
3、在第i个处理器核上运行的调试服务站模块131查询到第i个VMC_write_ready寄存器的值为1;i)如果是RISC核,就读取该命令,ii)如果是DSP核,就启动DMA将虚拟主控处理器核写缓冲141上的命令搬运到私有空间上;
4、在第i个处理器核上运行调试服务站模块131保存程序地址[addr]上的指令,并将该地址的指令替换为一条断点指令(break),然后从跳转到程序地址[addr]开始执行,显然,由于断点指令,将进入异常入口;
5、在异常入口,运行调试服务站模块131首先将保存的程序地址[addr]上原来的指令恢复,将Core[i]_[exception address](1≤i≤N)放入物理核写缓冲142,将第i个Physical_Core_write_ready寄存器的值设为1,通知调试控制站模块112来读取;
6、当调试控制站模块112发现第i个Physical_Core_write_ready为1,就将物理核写缓冲142中的回复信息读取并返回给软件调试器110,同时设置第i个VMC_read_ready寄存器的值为1,通知第i个运行调试服务站模块131读取完毕;
7、第i个运行调试服务站模块131发现第i个VMC_read_ready寄存器的值为1,就将第i个Physical_Core_read_ready寄存器的值和第i个Physical_Core_write_ready寄存器的值设为0,并开始等待其他调试命令;
8、软件调试器110更新显示第i个处理器核上被调试程序的调试起始地址。
III)、处理调试命令:
传统的单处理器远程调试方案扩展到多处理器核系统芯片时,单步命令,查看命令,增加/去除断点命令等都可以在固定的时间内得到响应,其中可能出现较长响应时间的是读取大量存储数据,通过约定限制一次最多能读取的数据长度,本发明方法中约定一次最多读取M个字(可以由用户配置指定),这样规定之后,则以上命令的回复均可以在一个时间限制内到达(例如,假设读取存储器一个字的最大时延是Tm,则一次读取M个字所需时间为M×Tm)。而对于继续执行(continue)这个调试命令,对某一个处理器核上的被调试程序来说,可能一个断点设置在一个需要执行很久的循环之后,或者由于程序不够严谨,该循环是一个死循环(既然是被调试程序,很可能含有缺陷),这样的情况会导致虚拟主控处理器核模块111花费很长时间等待某一个处理器核上的被调试程序运行至断点,而其他处理器核上的被调试程序无法继续调试。为解决该问题,本发明定义的通信协议用不同的机制处理继续运行命令(称为非确定命令)和其他命令(称为确定命令)。
A)、针对确定命令:
1、用户使用确定命令,如对第i个处理器核上被调试程序进行单步调试,软件调试器110向虚拟主控处理器核模块111上的调试控制站模块112发送“Core[i]_s”(1≤i≤N),并等待回复;
2、调试控制站模块112发现软件调试器110发送命令,首先将N个VMC_read_ready寄存器的值和N个VMC_write_ready寄存器的值置0,然后将该命令放入虚拟主控处理器核写缓冲141,并将第i个VMC_write_ready寄存器的值置1,等待第i个处理器核上运行调试服务站模块131回复;
3、在第i个处理器核上的运行调试服务站模块131查询到第i个VMC_write_ready寄存器的值为1,i)如果是RISC核,就读取该命令,ii)如果是DSP核,就启动DMA将虚拟主控处理器核写缓冲141上的命令搬运到局部存储器上,并将第i个Physical_Core_read_ready寄存器的值置为1;
4、调试控制站模块112查询到第i个Physical_Core_read_ready寄存器的值为1,就将第i个VMC_write_ready寄存器的值置为0;
5、运行调试服务站模块131按照调试命令做出相应的动作,然后将回复信息写到物理核写缓冲142,并将第i个Physical_Core_write_ready寄存器的值置为1;
6、调试控制站模块112查询到第i个Physical_Core_write_ready的值为1,就将物理核写缓冲142中的回复读取,并将第i个VMC_read_ready寄存器的值置为1,并将回复发送给软件调试器110;
7、第i个处理器核上的运行调试服务站模块131查询到第i个VMC_read_ready寄存器的值为1,就将第i个Physical_Core_read_ready寄存器的值,Physical_Core_write_ready寄存器的值置为0,并开始新的一轮查询调试命令;
8、软件调试器110在显示上更新第i个被调试程序的信息。
对于继续非确定调试命令增加了三个机制,使得一个处理器核在长时间运行(阻塞)时,其他处理器核仍然能被调试。
机制1:调试控制站模块112上使用定时器。当调试控制站模块112收到一个针对第i个处理器核上的调试程序的非确定命令后,开启一个定时器,并等待第i个运行调试服务站模块131的回应,如果在定时器结束之前没有收到第i个运行调试服务站模块131的回复信息,则向软件调试器110发送Core[i]_not_ready,并开始新一轮的调试命令查询。当软件调试器110收到not_ready,就停止等待该非确定命令的回应,并显示第i个处理器核上的被调试程序尚在运行;
机制2:当软件调试器110显示第i个处理器核上的被调试程序尚在运行,用户可以调试其他处理器核上的被调试程序。软件调试器110就会把这些命令发给调试控制站模块112,此时,第i个处理器核上的被调试程序可能到达断点处,并要发送回复。所以在调试控制站模块112查询调试命令的每一遍开始时都会首先查询是否有某个运行调试服务站模块131将针对之前的继续调试命令的回复放入物理核写缓冲142,如果有,则将该回复记录,在收到软件调试器110的调试命令时,先将该记录的回复返回软件调试器110,之后再返回通信协议中本调试命令所对应的回复。软件调试器110收到一个格式不同于通信协议上的回复时,说明这是前一次继续执行命令的回复,则更新显示信息:前一个第i个处理器核上运行的程序已经运行到断点处,之后再次等待针对本次调试命令的回复;
机制3:机制2中可能会带来一个同步问题:某个运行调试服务站模块131正在准备向物理核写缓冲142中写回复,而另一个处理器核上的被调试程序执行至断点处,也准备向物理核写缓冲142写回复,这会导致竞争。解决方法是使用一个1bit的Lock寄存器,它的值为1表示开锁状态,为0表示上锁状态,当多个运行调试服务站模块131准备写入物理核写缓冲142时,首先查询Lock寄存器的值,某个运行调试服务站模块131抢到锁,并将Lock寄存器的值置为0(上锁),这样其他运行调试服务站模块131就要等待开锁(Lock为寄存器的值1)才可写入物理核写缓冲142。抢到锁的运行调试服务站模块131将回复写入物理核写缓冲142,并查询到VMC_read_ready为1后,将Lock寄存器的值置为1(开锁),然后,剩余的运行调试服务站模块131就可以再次抢锁;
B)针对非确定命令:
我们只考虑继续执行命令的回复未能在定时器结束之前到达的情况,如果在定时器结束之前到达,则过程与确定性命令处理方式一样:
1、用户要对第i个处理器核上的被调试程序执行继续运行命令,软件调试器110发送“Core[i]_c”(1≤i≤N)到虚拟主控处理器核模块111上的调试控制站模块112;
2、调试控制站模块112查询软件调试器110发送的命令,首先将N个VMC_read_ready寄存器的值,N个VMC_write_ready寄存器的值置0,并检查是否有某个Physical_Core_write_ready寄存器的值为1(之前继续运行命令的回复),如果有,就从物理核写缓冲142中读取回复信息并返回给软件调试器110,然后将软件调试器110的命令放入虚拟主控处理器核写缓冲141,并将第i个VMC_write_ready寄存器的值置1,等待第i个处理器核上运行调试服务站模块131回复;
3、在第i个处理器核上的运行调试服务站模块131查询到第i个VMC_write_ready寄存器的值为1,i)如果是RISC核,就读取该命令,ii)如果是DSP核,就启动DMA将虚拟主控处理器核写缓冲141上的命令搬运到局部存储器,并将第i个Physical_Core_read_ready寄存器的值置为1;
4、调试控制站模块112查询到第i个Physical_Core_read_ready寄存器的值为1,就将第i个VMC_write_ready寄存器的值置为0,并启动一个定时器并等待第i个运行调试服务站模块131的回复;
5、运行调试服务站模块131按照调试命令做出相应的动作,然后将回复信息写到物理核写缓冲142,并将第i个Physical_Core_write_ready寄存器的值置为1;
6、如果到定时器结束调试控制站模块112尚未发现i个Physical_Core_write_ready寄存器的值为1,就向软件调试器110发送Core[i]_not_ready,并开始新一轮的命令查询;
7、软件调试器110更新显示信息,第i个处理器核上的被调试程序尚在运行,不可调试,但是其他处理器核上的被调试程序仍可调试;
8、用户对其他处理器核上的被调试程序进行调试,软件调试器110向调试控制站模块112发送命令,如针对第j个核上被调试程序。调试控制站模块112在新一轮的命令查询中,前一个继续运行命令可能已经回复(调试控制站模块112查询到第i个Physical_core_write_ready寄存器的值为1),如果是这样,调试控制站模块112将这个回复记录下来,并当调试控制站模块112收到一个命令后,首先将记录的回复发送给软件调试器110;
9、如果软件调试器110发现收到的回复格式并不是通信协议上规定的,表示这个回复是针对上一个继续运行命令的,软件调试器110首先更新调试信息,第i个处理器核上的被调试程序到达断点处,并再次等待针对本次调试命令的回复;
10、如果第i个,第j个运行调试服务站模块131同时完成相应的调试动作,并且准备往物理核写缓冲142中写回复,则使用一个Lock寄存器来同步,方法如以上机制3描述;
调试控制站模块112,软件调试器110,运行调试服务站模块131处理调试命令(非确定命令和确定命令)的整体流程图如图2,图3,图4所示。
IV)调试结束:
用户准备结束某个处理器核上的被调试程序的调试,可能仍然对其他处理器核进行调试,所以本发明中增加了一个调试命令:end,格式如前文介绍。这个命令通过调试控制站模块112发送给每个运行调试服务站模块131,方法与前面的处理确定命令一样,运行调试服务站模块131在收到该命令时,回复OK,并离开异常入口。当软件调试器110收到endOK后更新显示该处理器核调试结束。
如果硬件平台是片上网络连接结构,那么基本方法不变,只是将(4×N+1)个针对每个处理器核的VMC_write_ready,VMC_read_ready,Physical_Core_write_ready,Physical_Core_read_ready寄存器,和Lock寄存器改为在全局存储中的4×N+1个1bit长度的变量,其他不变。
最后,还需要注意的是,以上列举的仅是本发明的具体实施例子。显然,本发明不限于以上实施例子,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。
Claims (2)
1、一种适用于多处理器核系统芯片的调试方法,其特征是:用一个运行在宿主机上的虚拟主控处理器核模块(111)来模拟一个主控处理器和调试控制站程序,负责发送和接收命令,控制多处理器核系统芯片的调试,发送调试命令给物理的每个处理器核上的运行调试服务站模块(131),并接收回复信息到运行在宿主机上的带有图形化界面的软件调试器(110)。
2、根据权利要求1所述的适用于多处理器核系统芯片的调试方法,其特征是包括以下步骤:
1)、软件调试器(110)针对每一个处理器核上的运行调试服务站模块(131)提供单步调试运行、设置/去除断点和运行至断点处的功能;并将上述功能转换为特定格式的调试命令包,通过Windows进程间通信机制将调试命令发送给在虚拟主控处理器核模块(111)上运行的调试控制站模块(112);
2)、虚拟主控处理器核模块(111)依次通过宿主机上的外设接口、与多处理器核系统芯片的总线或片上网络某节点上的总线相连的通信接口(121),来访问多处理器核系统芯片硬件平台上的全局存储器(140);
虚拟主控处理器核模块(111)将调试控制站模块(112)所收到的调试命令转发给每个处理器核上的运行调试服务站模块(131);
3)、运行调试服务站模块(131)对本处理器核上运行的被调试程序执行调试命令所要求的动作,并产生相应的返回信息;
4)、运行调试服务站模块(131)与虚拟主控处理器核模块(111)通过通信协议通信,因此上述返回信息通过通信接口(121)到达虚拟主控处理器核模块(111),最终在软件调试器(110)作相应的显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101645846A CN100565472C (zh) | 2007-12-11 | 2007-12-11 | 一种适用于多处理器核系统芯片的调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101645846A CN100565472C (zh) | 2007-12-11 | 2007-12-11 | 一种适用于多处理器核系统芯片的调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101251819A true CN101251819A (zh) | 2008-08-27 |
CN100565472C CN100565472C (zh) | 2009-12-02 |
Family
ID=39955216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101645846A Expired - Fee Related CN100565472C (zh) | 2007-12-11 | 2007-12-11 | 一种适用于多处理器核系统芯片的调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100565472C (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840368A (zh) * | 2010-03-26 | 2010-09-22 | 中国科学院计算技术研究所 | 多核处理器的jtag实时片上调试方法及其系统 |
CN101727423B (zh) * | 2008-10-17 | 2011-12-07 | 东北大学 | 可重配置fpga上可抢占硬件多任务系统及其实现方法 |
US8112677B2 (en) | 2010-02-26 | 2012-02-07 | UltraSoC Technologies Limited | Method of debugging multiple processes |
CN102955737A (zh) * | 2012-11-06 | 2013-03-06 | 无锡江南计算技术研究所 | 异构处理器体系的程序调试方法和系统 |
CN104750603A (zh) * | 2013-12-30 | 2015-07-01 | 联芯科技有限公司 | 一种多核dsp软件仿真器及其物理层软件测试方法 |
CN106610878A (zh) * | 2016-12-19 | 2017-05-03 | 北海市云盛科技有限公司 | 双控制器系统的故障调试方法 |
CN106959923A (zh) * | 2017-04-01 | 2017-07-18 | 广州致远电子有限公司 | 一种异构多处理器系统的实时调试方法 |
CN108107872A (zh) * | 2017-12-28 | 2018-06-01 | 北京翼辉信息技术有限公司 | 一种基于网络的dsp应用在线调试系统及调试方法 |
CN110795350A (zh) * | 2019-10-28 | 2020-02-14 | 山东浪潮人工智能研究院有限公司 | 一种risc-v处理器的可控跟踪调试方法及系统 |
CN111050262A (zh) * | 2020-01-10 | 2020-04-21 | 杭州耳青聪科技有限公司 | 一种智能语音增强的实时电子耳蜗调试系统 |
CN111367742A (zh) * | 2020-03-02 | 2020-07-03 | 深圳中微电科技有限公司 | 调试mvp处理器的方法、装置、终端和计算机可读存储介质 |
CN111625450A (zh) * | 2020-05-19 | 2020-09-04 | 珠海全志科技股份有限公司 | 基于scp处理器的死机调试方法和装置 |
CN111966582A (zh) * | 2020-07-27 | 2020-11-20 | 安徽芯纪元科技有限公司 | 多调试对象的集群调试系统及其管理方法和调试方法 |
CN112559336A (zh) * | 2020-12-09 | 2021-03-26 | 成都海光集成电路设计有限公司 | 自适应调试异构计算芯片的方法、装置、系统及主板芯片 |
CN113688055A (zh) * | 2021-09-07 | 2021-11-23 | 天津津航计算技术研究所 | 一种基于dss的单一dsp设备测试装置 |
CN115454881A (zh) * | 2022-11-10 | 2022-12-09 | 北京红山微电子技术有限公司 | Risc-v架构的调试系统及调试方法 |
CN116340188A (zh) * | 2023-05-26 | 2023-06-27 | 深流微智能科技(深圳)有限公司 | Gpu芯片渲染任务的调试方法及系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626265B2 (en) | 2015-06-29 | 2017-04-18 | International Business Machines Corporation | Efficiency of cycle-reproducible debug processes in a multi-core environment |
TWI775307B (zh) * | 2021-02-04 | 2022-08-21 | 新唐科技股份有限公司 | 半導體裝置及其操作方法 |
-
2007
- 2007-12-11 CN CNB2007101645846A patent/CN100565472C/zh not_active Expired - Fee Related
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727423B (zh) * | 2008-10-17 | 2011-12-07 | 东北大学 | 可重配置fpga上可抢占硬件多任务系统及其实现方法 |
US8112677B2 (en) | 2010-02-26 | 2012-02-07 | UltraSoC Technologies Limited | Method of debugging multiple processes |
CN101840368A (zh) * | 2010-03-26 | 2010-09-22 | 中国科学院计算技术研究所 | 多核处理器的jtag实时片上调试方法及其系统 |
CN101840368B (zh) * | 2010-03-26 | 2013-01-16 | 中国科学院计算技术研究所 | 多核处理器的jtag实时片上调试方法及其系统 |
CN102955737B (zh) * | 2012-11-06 | 2015-08-12 | 无锡江南计算技术研究所 | 异构处理器体系的程序调试方法和系统 |
CN102955737A (zh) * | 2012-11-06 | 2013-03-06 | 无锡江南计算技术研究所 | 异构处理器体系的程序调试方法和系统 |
CN104750603A (zh) * | 2013-12-30 | 2015-07-01 | 联芯科技有限公司 | 一种多核dsp软件仿真器及其物理层软件测试方法 |
CN106610878A (zh) * | 2016-12-19 | 2017-05-03 | 北海市云盛科技有限公司 | 双控制器系统的故障调试方法 |
CN106959923A (zh) * | 2017-04-01 | 2017-07-18 | 广州致远电子有限公司 | 一种异构多处理器系统的实时调试方法 |
CN108107872A (zh) * | 2017-12-28 | 2018-06-01 | 北京翼辉信息技术有限公司 | 一种基于网络的dsp应用在线调试系统及调试方法 |
CN108107872B (zh) * | 2017-12-28 | 2019-03-22 | 北京翼辉信息技术有限公司 | 一种基于网络的dsp应用在线调试系统及调试方法 |
CN110795350B (zh) * | 2019-10-28 | 2023-05-05 | 山东浪潮科学研究院有限公司 | 一种risc-v处理器的可控跟踪调试方法及系统 |
CN110795350A (zh) * | 2019-10-28 | 2020-02-14 | 山东浪潮人工智能研究院有限公司 | 一种risc-v处理器的可控跟踪调试方法及系统 |
CN111050262A (zh) * | 2020-01-10 | 2020-04-21 | 杭州耳青聪科技有限公司 | 一种智能语音增强的实时电子耳蜗调试系统 |
CN111367742A (zh) * | 2020-03-02 | 2020-07-03 | 深圳中微电科技有限公司 | 调试mvp处理器的方法、装置、终端和计算机可读存储介质 |
CN111625450B (zh) * | 2020-05-19 | 2024-03-19 | 珠海全志科技股份有限公司 | 基于scp处理器的死机调试方法和装置 |
CN111625450A (zh) * | 2020-05-19 | 2020-09-04 | 珠海全志科技股份有限公司 | 基于scp处理器的死机调试方法和装置 |
CN111966582A (zh) * | 2020-07-27 | 2020-11-20 | 安徽芯纪元科技有限公司 | 多调试对象的集群调试系统及其管理方法和调试方法 |
CN111966582B (zh) * | 2020-07-27 | 2022-09-13 | 安徽芯纪元科技有限公司 | 多调试对象的集群调试系统及其管理方法和调试方法 |
CN112559336A (zh) * | 2020-12-09 | 2021-03-26 | 成都海光集成电路设计有限公司 | 自适应调试异构计算芯片的方法、装置、系统及主板芯片 |
CN112559336B (zh) * | 2020-12-09 | 2023-05-19 | 成都海光集成电路设计有限公司 | 自适应调试异构计算芯片的方法、装置、系统及主板芯片 |
CN113688055B (zh) * | 2021-09-07 | 2023-08-22 | 天津津航计算技术研究所 | 一种基于dss的单一dsp设备测试装置 |
CN113688055A (zh) * | 2021-09-07 | 2021-11-23 | 天津津航计算技术研究所 | 一种基于dss的单一dsp设备测试装置 |
CN115454881B (zh) * | 2022-11-10 | 2023-03-03 | 北京红山微电子技术有限公司 | Risc-v架构的调试系统及调试方法 |
CN115454881A (zh) * | 2022-11-10 | 2022-12-09 | 北京红山微电子技术有限公司 | Risc-v架构的调试系统及调试方法 |
CN116340188B (zh) * | 2023-05-26 | 2023-08-04 | 深流微智能科技(深圳)有限公司 | Gpu芯片渲染任务的调试方法及系统 |
CN116340188A (zh) * | 2023-05-26 | 2023-06-27 | 深流微智能科技(深圳)有限公司 | Gpu芯片渲染任务的调试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100565472C (zh) | 2009-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100565472C (zh) | 一种适用于多处理器核系统芯片的调试方法 | |
US6934937B1 (en) | Multi-channel, multi-service debug on a pipelined CPU architecture | |
CN101154183B (zh) | 一种微控制器嵌入式在线仿真调试系统 | |
US7131114B2 (en) | Debugger breakpoint management in a multicore DSP device having shared program memory | |
CN101344899B (zh) | 一种片上系统的仿真测试方法及仿真测试系统 | |
US7805638B2 (en) | Multi-frequency debug network for a multiprocessor array | |
CN101840368B (zh) | 多核处理器的jtag实时片上调试方法及其系统 | |
CN115841089A (zh) | 一种基于uvm的系统级芯片验证平台及验证方法 | |
CN100422953C (zh) | 利用HDL扩展串口的SoC系统在线调试方法 | |
JPH02287635A (ja) | マイクロコンピュータ,マイクロプロセッサおよびコア・プロセッサ集積回路用デバッグ周辺装置 | |
CN114580344B (zh) | 测试激励生成方法、验证方法、验证系统及相关设备 | |
US9558086B2 (en) | System on chip with debug controller and operating method thereof | |
CN102508753A (zh) | Ip核验证系统 | |
CN113076227A (zh) | Mcu验证方法、系统和终端设备 | |
CN113110859A (zh) | 一种嵌入式终端远程在线开发系统 | |
CN113849433B (zh) | 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质 | |
CN100487668C (zh) | 一种嵌入式处理器的调试方法 | |
US7428661B2 (en) | Test and debug processor and method | |
CN102184290B (zh) | 嵌入式微处理器的周期精确和位精确系统级模型构建方法 | |
CN103793263B (zh) | 一种基于PowerPC处理器的DMA事务级建模方法 | |
CN109416667A (zh) | 具有动态且可配置的响应的、使用两个存储器级的串行设备仿真器 | |
CN101329702A (zh) | 一种满足SystemC语法的多核处理器的先进先出队列单元组 | |
CN101784905B (zh) | 用于对片上系统的制造进行控制的设计信息的验证 | |
CN111176926B (zh) | 一种基于双口sram的ip核仿真系统及仿真方法 | |
CN100474266C (zh) | 一种用于数字信号处理器的调试系统及其调试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091202 Termination date: 20121211 |