专利名称:多处理器系统以及使多处理器系统的调试处理同步的方法
技术领域:
本发明涉及使得多处理器系统的调试处理同步的方法和系统。
背景技术:
在计算机系统的研发过程中,硬件和/或软件的调试是很复杂的 工作。对于多处理器系统来说,这项工作甚至更困难和复杂。通常, 在片上系统(简称为SoC)上集成了一个或多个微处理器或数字信号 处理器,所述片上系统包括对诸如ROM、 RAM、 EEPROM之类的存 储器,包括计数定时器、实时定时器、电源之类的外设,诸如USB、 以太网、FireWire线缆和模拟接口之类的外部接口等的选取。当调试 这样的多处理器系统时,在处理器中的一个发生故障的情况下,理想 的是停止其他处理器,使得错误数据不会通过通信网络而传播。例如, 当利用多个调试器来调试多个处理器时,发生了以下不同的问题
一当调试器给出用于第一处理器的运行命令时,片上系统同
步硬件检测该运行命令并且停止第一处理器直到第二处理器
得到该运行命令为止。
一当用户给出RUN命令时,调试器声明(assert) STEP和 RUN信号。当调试器从之前遇到的断点启动处理器时,这种 操作是典型的。在片上系统内,这个顺序像是两个独立的RUN 命令。通过处理器同步的简单实现,第二处理器根据第一处理 器的第一步进命令而启动,并且在该步进完成之后停止,这并 非想要的操作。应该避免这些"虚警"。 而且,在片上系统的主机侧上包括标准调试器,这些调试器并 非设计用于多核调试,并且不知道连接到片上系统的其他处理器或调 试器。当调试一个处理器时,在这样的多处理器系统中开启和停止处
5理器和外设期间的通常问题是,用户想检查当第一处理器遇到停止条 件时第二处理器做些什么。而且,在系统被调试并且可能进入暂停时 第二处理器可以改变系统的状态,同时等待来自第一处理器的响应, 并且在调试失败之后再次启动。如果像DMA (直接存储器存取)控 制器或定时器的外设保持运行而系统被调试,则所述外设也能改变系 统的状态。因此,想要的是处理器的同步运行和停止。
在JP 2228742A1中,描述了针对多个处理器的同步调试方法。 例如,在存储跟踪信息时,处理器将中断信号输出到中断信号线并将 其发送到其他处理器。因此,其他处理器定时地和同时地接收该中断 信号,并且同时将同步信号标志作为跟踪信息存储在它们自己的跟踪 存储器中。随后,在处理器的跟踪存储器中存储和保持了同步信号标 志,这些同步信号标志相对于时间彼此不存在偏移。因此,消除了处 理器的执行程序的历史之间的时间延迟,并且使得这些处理器彼此同 步以执行安全调试。这些同步调试方法使用了中断信号和同步信号标 志以及跟踪信息,而没有处理器的同步启动和停止。
发明内容
因此,本发明的一个目的是提供一种用于使得多处理器系统的 调试处理同步的方法和系统,其提供了包括使处理器彼此察觉到启 动、停止和调试的同步机制。
包括本发明的特征的使得多处理器系统的调试处理同步的方法 和系统解决了给出的问题。
在各个从属权利要求中给出了本发明的有利实施例。
根据本发明,给出了用于使得具有多个处理器的多处理器系统
的调试处理同步的方法,包括以下步骤
如果通过STOP信号请求用于处理器之一的调试处理,那么对 其他处理器声明HALT信号直到对它们声明了用于调试请求的STOP 信号为止,
对己经完成调试处理的每个处理器声明各自的HALT信号直到 其他处理器已经完成它们各自的调试处理,在取消对全部HALT信号和/或STOP信号的声明并且完成全部 调试处理之后,同步启动全部处理器。
如果实际上允许处理器运行,那么除了用于调试请求(简称为 DBREQ信号)的常规STOP信号之外的这种HALT信号的实现方式 允许处理器同步启动,另外声明了HALT信号。而且,HALT信号允 许同步停止。常规调试器(诸如所谓的AxD或者例如gdb调试器) 按步执行并且随后在用户给出RUN命令时运行。在调试器从断点启 动处理器时以及在通过将"断点指令"插入调试代码来实现断点时, 这种操作是典型的。例如,调试器越过断点,再次设置断点,并且随 后运行处理器。对于同步停止来说,其他处理器根据调试器的第一 STEP命令启动并且在该STEP完成之后停止。当调试器现在给出最 终的RUN命令时,其他处理器已再次处于调试模式中。为了检测处 理器是否已经停止以及另外检测其各自的调试器是否已经完成调试 处理,必须对剩余处理器的STOP信号进行声明。在处理器已经停止 的情况下,在调试器和调试处理仍在起作用时,仅声明额外的HALT 信号。由下文提出并描述的所述HALT信号和两个交叉触发器矩阵 的方案作出以下假设,调试模式信号(简称为DBGMODE)的快速 转换(toggling)表示"自动调试器相互作用"而慢速转换表示"用 户相互作用"。所述HALT信号能够被分成pre-HALT信号和 post-HALT信号。如果单独一个处理器已经处于调试模式,那么在未 处于调试模式的各个处理器上pre-HALT信号停止。在已经完成调试 处理的各个处理器上Post-HALT信号停止,直到其他处理器己经完 成了调试处理为止。
在可能的实施例中,如果声明了请求各个处理器的调试处理的 STOP信号,那么就取消对各个处理器的pre-HALT信号的声明。换 言之STOP信号优先于HALT信号,g卩,当声明了STOP信号时, 各个HALT信号不起作用。在可替代的具体实施例中,取消各个处 理器的pre-HALT信号的声明直到定时器和/或计数器己经从预定值 倒计数到0值为止。在另一具体实施例中,当对各个处理器的 pre-HALT信号的声明已经经过预定时间和/或预定迭代数目时,声明该处理器的STOP信号。当各个HALT信号在"足够的时间段"上处 于稳定时或者当(例如通过总线系统)写入STOP—SETTLED位时, 仅声明STOP信号。可通过内部计时器或计数器或者例如通过控制器 或调试监测器例如在主机侧从外部自动完成对实际时间或 STOP—SETTLED位的状态的检测。
在另一实施例中,如果请求了用于各个处理器的调试处理,那 么就取消对该处理器的STOP信号以及已声明的HALT信号的声明。 可以通过各个处理器声明调试模式信号(简称为DBGMODE)或者 通过在处理器上运行的调试监测器经由总线系统声明调试模式标志 来请求调试处理。
有利地是,取消对各个处理器的post-HALT信号的声明直到每 个处理器都进入RUN状态为止。特别地,如果全部处理器已经完成 它们的调试模式,那么就取消早先已经完成其调试模式的各个处理器 的post-HALT信号。
在有益的实施例中,实现了两个交叉触发器矩阵。实现HALT 矩阵和STOP矩阵来生成上述HALT信号和/或STOP信号。两个矩 阵包括作为每个处理器的输入信号的调试模式信号,该矩阵生成了作 为每个处理器的输出信号的HALT信号或STOP信号。
实现本发明的目的的技术方案包括用于使得具有多个处理器的 多处理器系统的调试处理同步的系统,所述系统包括
两个交叉触发器矩阵,包括作为每个处理器的输入信号的调试 模式信号以及作为每个处理器的输出信号的STOP信号和HALT信 号,
如果通过另一交叉触发器矩阵的STOP信号请求针对处理器之 一的调试处理并且直到另一交叉触发器矩阵对其他处理器声明用于 调试请求的各自的STOP信号为止,交叉触发器矩阵之一对其他处理 器声明HALT信号,
所述交叉触发器矩阵对己经完成调试处理的每个处理器声明各 自的HALT信号直到其他处理器已经完成它们的各自的调试处理为 止,在取消对全部HALT信号和/或STOP信号的声明并且完成全部 调试处理之后,全部处理器同步启动。
在所述调试系统中,有利地是,每个处理器在至少三条数据线 上与所述两个交叉触发器矩阵相连,该三条数据线包括一条用于所述 HALT信号的数据线、 一条用于所述STOP信号的数据线以及一条用 于调试模式信号的数据线。为了检测并提供调试处理模式和/或请求, 每个处理器都与各自的调试器模块相连。
本发明的用于多处理器系统的一种简单的同步调试方法是有利 的在一个或多个处理器的调试模式期间,通过利用两个交叉触发器 矩阵来对用于同步启动和/或停止处理器的额外的HALT信号进行声 明或取消声明。
图1示出了利用包括两个交叉触发器矩阵的三个处理器来使得 多处理器系统的调试处理同步的系统的框图,
图2示出了针对具有两个处理器的多处理器系统的两个交叉触 发器矩阵的输出信号的状态转换图。
具体实施例方式
以下将更具体地来描述本发明。
图1示出了用于使得包括三个处理器2.1-2.3的多处理器系统2 的调试处理同步的系统1的框图。系统1包括具有两个交叉触发器矩 阵3.1和3.2的交叉触发器逻辑3。 一个交叉触发器矩阵3.1将从各 个调试模式信号DBGM#2.1到DBGM#2.3生成各个处理器2.1到2.3 的HALT信号HALT#2.1到HALT#2.3。另一个交叉触发器矩阵3.2 将从各个调试模式信号DBGM#2.1到DBGM#2.3生成各个处理器2.1 至U 2.3的STOP信号STOP#2.1至U STOP#2.3。
在调试系统1中,每个处理器2.1到2.3均与至少三条数据线上 的所述两个交叉触发器矩阵3.1和3.2连接,该三条数据线包括一条 用于所述HALT信号HALT#2.1到HALT#2.3的数据线、 一条用于所述STOP信号STOP#2.1到STOP#2.3的数据线以及一条用于所述调 试模式信号DBGM#2.1至UDBGM弁2.3的数据线。为了检测各自的调 试处理模式和/或提供调试处理请求,每个处理器2.1到2.3均与各个 调试器模块4.1到4.3连接。
可由处理器2.1到2.3的各自的调试器4.1到4.3来声明调试模 式信号DBGM#2.1至U DBGM#2.3。可选地,可通过调试监测器来声 明调试模式标志,从而经由各个处理器2.1到2.3来声明调试模式信 号DBGM#2.1至lj DBGM#2.3。
本发明涉及用于对所述多处理器系统2的调试处理进行同步的 方法。现在利用用于多处理器系统2的状态转换图来具体描述调试方 法的可能的实施例,该多处理器系统2包括利用用于交叉触发的交叉 触发器逻辑3的两个处理器2.1到2.2,并且所述两个处理器2.1到 2.2的同步开始和停止。
图2示出了用于具有两个处理器2.1和2.2的多处理器系统1的 两个交叉触发器矩阵3.1和3.2的输出信号HALT//2.1到HALT#2.2 和STOP#2.1至'」STOP#2.2的状态转换图的可能的实施例。
为了在调试处理期间使得处理器2.1和2.2彼此同步,存在以下 不同的具体步进和定时点
定时点1:两个处理器2.1和2.2都在运行。
定时点2:如果针对处理器2.1到2.2之一声明了调试模式信号 DBGM#2.1到DBGM#2.2,那么有利地配置交叉触发器逻辑3来生成 HALT信号HALT#2.1至lj HALT#2.2和STOP信号STOP#2.1到 STOP#2.2。如果在至少2秒内声明了各自的HALT信号HALT#2.1 到HALT#2.2,贝lj STOP矩阵3.2被配置来例如生成STOP信号 STOP#2.1至lj STOP#2.2。
定时点3:针对处理器2.1声明了调试模式信号DBGM#2.1。如 果设置了调试模式信号DBGM#2.1,则处理器2在调试处理期间遇到 断点,并且对另外的处理器8声明各自的HALT信号HALT弁2.2。处 理器2.2现在处在暂停状态并且停止。处理器2.1处在调试处理中。
定时点4:在内部和/或外部定时器或计数器从预定值(例如从2秒钟)倒计时到0值之后,可以取消用于处理器2.2的各自的HALT 信号HALT#2.2的声明。另外或可选地,由各个处理器2.2的各自的 STOP信号STOP#2.2来取消对各自的HALT信号HALT#2.2的声明, 各自的STOP信号STOP#2.2请求所述处理器2.2的调试处理并且在 定时器或计数器达到0值之后或者如果用户已经设置调试处理模式 标志而自动声明。请求各个处理器2.2的调试处理的声明的STOP信 号STOP#2.2声明了交叉触发器逻辑3中的调试模式信号DBGM#2.2。 现在,处理器2.2和处理器2.1 二者都运行在调试处理中。
定时点5:在启动的调试处理期间,处理器2.1到2.2与它们的 调试器4.1到4.2进行通信,反之亦然。
定时点6:调试器4.1给出运行命令RUN,这产生了用于各个 处理器2.1的步进和运行命令。处理器2.1从断点运行。
定时点6a:调试器4.1的步进命令通常取消对调试模式信号 DBGMM.1的声明。因为另一个处理器2.2仍处在调试处理中,所以 声明用于各个处理器2.1的HALT信号HALT弁2.1直到所述处理器2.2 己经完成了其各自的调试处理为止。处理器2.1保持在暂停状态直到 处理器2.2已经完成了其各自的调试处理为止。直到处理器2.1处于 运行状态才能提供来自调试器4.1的步进命令。调试器4.1等待对开
始步进命令的响应。'
定时点7:各个处理器2.2的调试器4.2声明运行命令。利用调 试器4.2的运行命令来取消调试模式信号DBGM#2.2的声明。同样取 消各个处理器2.1的HALT信号HALT弁2.1的声明直到所述处理器2.2 进入RUN状态为止。全部处理器2.1和2.2都处于RUN状态。
定时点8:调试器4.1被设置一个请求。处理器2.1再次进入调 试模式。在步进命令完成之后,声明另一个处理器2.1的调试模式信 号DBGM#2.1和HALT信号HALT#2.1。
定时点9:调试器4.1设置运行命令,以完成从处理器2.1断点 开始的运行。取消对调试模式信号DBGM#2.1和HALT信号 HALT#2.2的声明并且同步启动处理器2.1和2.2。因为例如在声明调 试模式信号DBGM#2.1之后的小于2秒内调试器4.1设置了运行命
11令,所以没有声明各自的调试模式信号DBGM#2.2。
总的来说,使用HALT信号HALT#2.1到HALT#2.3来使得处 理器2.1到2.3彼此停止。当各自的调试器4.1到4.3己经完成调试 处理以及与各个处理器2.1到2.3的自动交互时,各自的STOP信号 STOP#2.1至lj STOP#2.3代替了各自的HALT信号HALT#2.1到 HALT#2.3。此时,调试器4.1到4.3和处理器2.1到2.3等待用户输 入。当调试器4.1到4.3把各个处理器2.1到2.3相继设置在RUN状 态时,HALT矩阵3.1防止这些处理器实际执行直到最后的处理器2.1 到2.3已经完成其调试处理并且进入RUN状态。
权利要求
1. 一种用于使具有多个处理器(2.1-2.3)的多处理器系统(1)的调试处理同步的方法,包括以下步骤如果通过STOP信号(STOP#2.1-STOP#2.3)请求用于处理器(2.1-2.3)之一的调试处理,那么对其他处理器(2.1-2.3)声明HALT信号(HALT#2.1-HALT#2.3)直到对它们声明了用于调试请求的STOP信号(STOP#2.1-STOP#2.3)为止,对已经完成调试处理的每个处理器(2.1-2.3)声明各自的HALT信号(HALT#2.1-HALT#2.3)直到其他处理器(2.1-2.3)已经完成它们各自的调试处理,在取消对全部HALT信号(HALT#2.1-HALT#2.3)和/或STOP信号(STOP#2.1-STOP#2.3)的声明并且完成全部调试处理之后,同步启动全部处理器(2.1-2.3)。
2. 如权利要求1所述的方法,其中如果声明了请求处理器 (2.1-2.3)调试处理的STOP信号(STOP#2.1-STOP#2.3),那么就取消对该处理器(2.1-2.3)的HALT信号(HALT#2.1-HALT#2.3)的声明。
3. 如权利要求1或2所述的方法,其中取消对所述处理器 (2.1-2.3)的HALT信号(HALT#2.1-HALT#2.3)的声明直到预定定时器和/或计数器己经达到O值为止。
4. 如前述权利要求之一所述的方法,其中当对处理器(2.1-2.3) 的HALT信号(HALT#2.1-HALT#2.3)的声明已经经过预定时间和/ 或预定数目的迭代时,声明该处理器(2.1-2.3)的STOP信号(STOP#2.1-STOP#2.3)。
5. 如前述权利要求之一所述的方法,其中如果请求了用于处理器(2.1-2.3)的调试处理,那么就声明该处理器(2.1-2.3)的STOP 信号(STOP#2.1-STOP#2.3)。
6. 如前述权利要求之一所述的方法,其中取消对各个处理器 (2.1-2.3)的HALT信号(HALT#2.1-HALT#2.3)的声明直到每个处理器(2.1-2.3)都进入RUN状态为止。
7. 如前述权利要求之一所述的方法,其中如果处理器(2.1-2.3) 运行在调试处理中,那么就取消对该处理器(2.1-2.3)的HALT信号(HALT#2.1-HALT#2.3)禾口 STOP信号(STOP#2.l-STOP#2.3)的声明。
8. 如前述权利要求之一所述的方法,其中实现两个交叉触发器 矩阵(3.1,3.2),这两个交叉触发器矩阵(3.1, 3.2)包括作为每个 处理器(2.1-2.3 )的输入信号的调试模式信号(DBGM#2.1-DBGM#2.3),这两个交叉触发器矩阵生成了作为每个 处理器(2.1-2.3)的输出信号的HALT信号(HALT#2.1-HALT#2.3) 禾口STOP信号(STOP#2,l-STOP#2.3)。
9. 一种用于使得具有多个处理器(2.1-2.3)的多处理器系统(l) 的调试处理同步的系统,包括两个交叉处理器矩阵(3.1, 3.2),包括作为每个处理器(2.1-2.3) 的输入信号的调试模式信号(DBGM#2.1-DBGM#2.3)以及作为每个 处理器(2.1-2.3)的输出信号的STOP信号(STOP#2.1-STOP#2.3) 和HALT信号(HALT#2.1-HALT#2.3),如果通过 一 个交叉触发器矩阵(3.2 )的STOP信号 (STOP#2.1-STOP#2.3)请求用于处理器(2.1-2.3)之一的调试处理 并且直到这个交叉触发器矩阵(3.2)对其他处理器(2.1-2.3)声明 用于调试请求的各自的STOP信号(STOP#2.1-STOP#2.3)为止,另 一交叉触发器矩阵(3.1)对所述其他处理器(2.1-2.3)声明HALT信号(HALT#2.1-HALT#2.3),所述另一交叉触发器矩阵(3.1)对已经完成调试处理的每个处 理器(2.1-2.3)声明各自的HALT信号(HALT#2.1-HALT#2.3)直 到其他处理器(2.1-2.3)已经完成它们各自的调试处理为止,在取消全部HALT信号(HALT#2.1-HALT#2.3)和/或STOP信 号(STOP#2.1-STOP#2.3)的声明并且完成全部调试处理之后,全部 处理器(2.1-2.3)同步启动。
10. 如权利要求9所述的系统,其中每个处理器(2.1-2.3)在至 少三条数据线上与所述两个交叉触发器矩阵(3.1, 3.2)相连,该三 条数据线包括一条用于所述HALT信号(HALT#2.1-HALT#2.3)的 数据线、 一条用于所述STOP信号(STOP#2.1-STOP#2.3)的数据线 以及一条用于调试模式信号(DBGM#2.1-DBGM#2.3)的数据线。
11. 如权利要求9或IO所述的系统,其中每个处理器(2.1-2.3) 都与各自的调试模块(4.1-4.3)相连。
全文摘要
本发明涉及用于使具有多个处理器(2.1-2.3)的多处理器系统(1)的调试处理同步的方法和系统,该方法包括以下步骤如果通过STOP信号(STOP#2.1-STOP#2.3)请求用于处理器(2.1-2.3)之一的调试处理,那么对其他处理器(2.1-2.3)声明HALT信号(HALT#2.1-HALT#2.3)直到对它们声明了用于调试请求的STOP信号(STOP#2.1-STOP#2.3)为止;对已经完成调试处理的每个处理器(2.1-2.3)声明各自的HALT信号(HALT#2.1-HALT#2.3)直到其他处理器(2.1-2.3)已经完成它们各自的调试处理为止;在取消全部HALT信号(HALT#2.1-HALT#2.3)和/或STOP信号(STOP#2.1-STOP#2.3)的声明并且完成全部调试处理之后,同步启动全部处理器(2.1-2.3)。
文档编号G06F11/36GK101506777SQ200780031145
公开日2009年8月12日 申请日期2007年8月20日 优先权日2006年8月21日
发明者乌韦·施特伯 申请人:Nxp股份有限公司