集成电路内诊断数据的捕获.pdf

上传人:r7 文档编号:1063502 上传时间:2018-03-29 格式:PDF 页数:29 大小:1.44MB
返回 下载 相关 举报
摘要
申请专利号:

CN03826316.5

申请日:

2003.09.17

公开号:

CN1764903A

公开日:

2006.04.26

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

G06F11/34(2006.01); G06F11/36(2006.01)

主分类号:

G06F11/34

申请人:

ARM有限公司;

发明人:

P·基梅尔曼; I·费尔德

地址:

英国剑桥郡

优先权:

2003.04.17 US 10/417,329

专利代理机构:

中国专利代理(香港)有限公司

代理人:

杨凯;王勇

PDF下载: PDF下载
内容摘要

一种集成电路装备有采取诊断数据捕获电路形式的诊断数据捕获和输出系统,所述诊断数据捕获和输出系统从总线捕获数据字和环境字。所述总线可以是连接集成电路内功能电路的功能总线或者是专用总线,直接把一个或多个功能电路链接到诊断数据捕获电路。捕获的诊断数据在先进先出缓冲区内缓冲,然后串行化以便输出。所述诊断数据字段还包括时间值,指示所关心的诊断数据字段被捕获的时间和是否有任何诊断数据字段没有被捕获。

权利要求书

1.  一种集成电路,所述集成电路包括:
一个或多个功能电路,可用来执行数据处理操作;
诊断数据捕获电路,可用来从总线捕获诊断数据字段值,所述诊断数据字段值包括由所述一个或多个功能电路产生的数据字和代表所述一个或多个功能电路的与所述数据字相关联的环境的环境字;和
诊断数据串行输出电路,可用来将所述诊断数据字段串行化并把所述诊断数据字段从所述集成电路输出到外部诊断装置。

2.
  如权利要求1所述的集成电路,其中包括多个功能电路,所述总线是使所述多个功能电路互联的功能总线。

3.
  如权利要求2所述的集成电路,其中所述功能总线包括数据部分和地址部分,所述数据字是从所述数据部分捕获的,而所述环境字是从所述地址部分捕获的。

4.
  如权利要求3所述的集成电路,其中所述环境字是所述总线的所述地址部分上地址的一部分。

5.
  如上述权利要求中任何一项所述的集成电路,其中所述总线是专用诊断总线,它把关于所述数据字和所述环境字的信号从至少一个功能电路传送到所述诊断数据捕获电路。

6.
  如权利要求3、4和5中任何一个所述的集成电路,其中包括多条总线,所述多条总线包括作为专用诊断总线的至少一条总线,所述专用诊断总线把关于所述数据字和所述环境字的信号从至少一个功能电路传送到所述诊断数据捕获电路。

7.
  如上述权利要求中任何一项所述的集成电路,其中所述诊断数据捕获电路包括先进先出缓冲区,所述诊断数据字段在被所述诊断数据串行输出电路串行化以便输出以前被存储在所述先进先出缓冲区中。

8.
  如上述权利要求中任何一项所述的集成电路,其中所述诊断数据字段还包括定时字,所述定时字表示与所述诊断数据字相关联的时间值。

9.
  如权利要求8所述的集成电路,其中所述时间值是计数值,表示从任何以前捕获的仍旧被所述诊断数据串行输出电路输出的诊断数据字段的捕获以来,所经过的持续时间。

10.
  如权利要求9所述的集成电路,其中所述时间值还用来指明是否有一个或多个诊断数据字段没有被所述诊断数据捕获电路捕获。

11.
  如上述权利要求中任何一项所述的集成电路,其中所述诊断数据串行输出电路在单一诊断数据串行输出信号线上输出所述诊断字。

12.
  如上述权利要求中任何一项所述的集成电路,其中所述诊断数据串行输出电路在单一诊断数据串行输出信号线上与时钟信号线上时钟信号相关地输出所述诊断字。

13.
  如上述权利要求中任何一项所述的集成电路,其中在至少一个所述功能电路上执行的程序指令产生所述诊断数据字段。

14.
  如权利要求13所述的集成电路,其中所述程序指令对在其上捕获所述数据字和所述环境字的所述总线产生总线交易。

15.
  如上述权利要求中任何一项所述的集成电路,其中所述诊断数据捕获电路可用来捕获所述总线上、与和预定地址特性匹配的地址相关联的总线交易。

16.
  如权利要求15所述的集成电路,其中所述预定的特性是所述地址落在预定的地址范围内。

17.
  如权利要求16所述的集成电路,其中所述环境字是索引值,所述索引值指示所述预定的地址范围内所述地址的位置。

18.
  如上述权利要求中任何一项所述的集成电路,其中所述诊断数据捕获电路包括屏蔽电路,可用来利用可编程的屏蔽值来选择要捕获的诊断数据字段。

19.
  一种用于从集成电路接收诊断数据的诊断装置,所述诊断装置包括:
诊断数据串行数据接收机,可用来接收串行数据,所述串行数据代表从所述集成电路内的总线捕获的诊断字段值;和
诊断数据解码器,可用来对所述诊断字段解码,以便识别其中的由所述集成电路内一个或多个功能电路产生的数据字和代表所述一个或多个功能电路与所述数据字相关联的环境的环境字。

20.
  如权利要求19所述的诊断装置,其中所述总线是连接多个功能电路的功能总线,所述功能总线包括数据部分和地址部分,所述数据字是从所述数据部分捕获的,而所述环境字是从所述地址部分捕获的。

21.
  如权利要求20所述的诊断装置,其中所述环境字是所述总线的所述地址部分上的地址的一部分。

22.
  如权利要求19、20和21中任何一个所述的诊断装置,其中所述总线是传送关于所述数据字和所述环境字的信号的专用诊断总线。

23.
  如权利要求20、21和22中任何一个所述的诊断装置,其中从多条总线捕获诊断数据字段,所述多条总线中至少一条总线是传送关于所述数据字和所述环境字的信号的专用诊断总线。

24.
  如权利要求19至23中任何一个所述的诊断装置,其中所述诊断数据字段还包括表示与所述诊断数据字相关联的时间值的定时字。

25.
  如权利要求24所述的诊断装置,其中所述时间值是计数值,指示从任何一个以前捕获的仍旧从所述集成电路输出的诊断数据字段的捕获以来所经过的持续时间。

26.
  如权利要求25所述的诊断装置,其中所述时间值还用来指明,在所述集成电路内是否有一个或多个诊断数据字段没有被捕获。

27.
  如权利要求19至26中任何一个所述的诊断装置,其中所述诊断数据串行数据接收机在单一诊断数据串行输入信号线上接收所述诊断字。

28.
  如权利要求19至27中任何一个所述的诊断装置,其中所述诊断数据串行数据接收机在单一诊断数据串行输出信号线上,与时钟信号线上的时钟信号有关地接收所述诊断字。

29.
  如权利要求19至28中任何一个所述的诊断装置,其中所述诊断数据字是响应在所述集成电路的至少一个功能电路上执行的程序指令而产生的。

30.
  如权利要求29所述的诊断装置,其中所述程序指令对在其上捕获所述数据字和所述环境字的所述总线产生总线交易。

31.
  如权利要求19至30中任何一个所述的诊断装置,其中诊断数据字段对应于所述总线上与预定地址特性匹配的地址相关联的总线交易。

32.
  如权利要求31所述的诊断装置,其中所述预定的特性是所述地址落在预定的地址范围内。

33.
  如权利要求32所述的诊断装置,其中所述环境字是索引值,指示所述预定的地址范围内所述地址的位置。

34.
  如权利要求19至33中任何一个所述的诊断装置,其中为了由可编程的屏蔽值捕获而选定所述诊断数据字段。

35.
  一种产生诊断数据的方法,所述诊断数据代表由集成电路的一个或多个功能电路执行的一个或多个数据处理操作,所述方法包括:
从总线捕获诊断数据字段值,所述诊断数据字段值包括由所述一个或多个功能电路产生的数据字和代表所述一个或多个功能电路与所述数据字相关联的环境的环境字;
将所述诊断数据字段串行化;以及
从所述集成电路向外部诊断装置输出所述诊断数据字段。

36.
  如权利要求35所述的方法,其中所述集成电路包括多个功能电路,所述总线是将所述多个功能电路互联的功能总线。

37.
  如权利要求36所述的方法,其中所述功能总线包括数据部分和地址部分,所述数据字是从所述数据部分捕获的,而所述环境字是从所述地址部分捕获的。

38.
  如权利要求37所述的方法,其中所述环境字是所述总线的所述地址部分上地址的一部分。

39.
  如权利要求35至38中任何一个所述的方法,其中所述总线是从至少一个功能电路向所述诊断数据捕获电路传送关于所述数据字和所述环境字的信号的专用诊断总线。

40.
  如权利要求37至39中任何一个所述的方法,其中所述集成电路包括多条总线,所述多条总线包括作为专用诊断总线的至少一条总线,所述专用诊断总线从至少一个功能电路向所述诊断数据捕获电路传送关于所述数据字和所述环境字的信号。

41.
  如权利要求35至40中任何一个所述的方法,其中包括在将所述诊断数据字段串行化以前,在先进先出缓冲区中缓冲诊断数据字段。

42.
  如权利要求35至41中任何一个所述的方法,其中所述诊断数据字段还包括表示与所述诊断数据字相关联的时间值的定时字。

43.
  如权利要求42所述的方法,其中所述时间值是计数值,指示从任何一个以前捕获的仍旧被输出的诊断数据字段的捕获以来的持续时间。

44.
  如权利要求43所述的方法,其中所述时间值还用来指明是否有一个或多个诊断数据字段没有被所述诊断数据捕获电路捕获。

45.
  如权利要求35至44中任何一个所述的方法,其中在单一诊断数据串行输出信号线上输出所述诊断数据字段。

46.
  如权利要求35至45中任何一个所述的方法,其中在单一诊断数据串行输出信号线上、与时钟信号线上的时钟信号相关联地输出所述诊断数据字段。

47.
  如权利要求35至46中任何一个所述的方法,其中在至少一个所述功能电路上执行的程序指令产生所述诊断数据字段。

48.
  如权利要求47所述的方法,其中所述程序指令对在其上捕获所述数据字和所述环境字的所述总线产生总线交易。

49.
  如权利要求35至48中任何一个所述的方法,其中捕获所述总线上与和预定的地址特性匹配的地址相关联的总线交易。

50.
  如权利要求49所述的方法,其中所述预定的特性是所述地址落在预定的地址范围内。

51.
  如权利要求50所述的方法,其中所述环境字是索引值,所述索引值指示所述预定的地址范围内所述地址的位置。

52.
  如权利要求35至51中任何一个所述的方法,其中可编程的屏蔽值用来选择要捕获的诊断数据字段。

说明书

集成电路内诊断数据的捕获
本发明涉及集成电路领域。更具体地说,本发明涉及集成电路内,诸如用于调试、性能监测、设计及其他过程的诊断数据的捕获。
已知提供一些带有内建捕获诊断数据然后输出诊断数据的系统的集成电路。这样的集成电路的示例是由英国剑桥ARM Limited(公司)生产的集成电路,它包括嵌入式跟踪宏单元(ETM)。所述ETM系统用来捕获跟踪数据,诸如识别所执行的程序指令、被操纵的数据值等,进入芯片跟踪缓冲区,供随后输出到外部诊断装置。ETM类型系统的一个问题是,它们消耗数量相对大的电路资源。一旦利用所述ETM电路的设计和开发工作完成,这个诊断专用电路区域在生产集成电路过程中基本上没有用。
还已知,在开发系统程序代码内插入程序指令,以便利用UART或者其他通信资源从所述集成电路输出诊断数据。采用这种程序驱动方法的一个缺点是,它给有关的程序造成沉重的负担,并可能使它的运行发生畸变,使得诊断数据用处变小。因为所述装置接口不是设计成进行直接访问的,所以这是一个特别的问题。更糟糕的是,若通信装置已满载(无法接受更多数据),则所述应用程序可能停下来,数据在没有被记录的情况下丢失。相反,若所述程序代码的元件由足够低的优先级和不影响性能的相当不频繁的激励构成,则可能回收的信息数量受到限制,而所述信息的定时还可能被有害地延迟。
从一个方面看,本发明提供一种集成电路,所述集成电路包括:
一个或多个功能电路,可用来执行数据处理操作;
诊断数据捕获电路,可用来从总线捕获诊断数据值字段,后者包括由所述一个或多个功能电路产生的数据字和代表与所述数据字相联系的所述一个或多个功能电路的环境的环境字;以及
诊断数据串行输出电路,可用来使所述诊断数据字段串行化,并把所述诊断数据字段从所述集成电路输出到外部诊断装置。
本技术提供一种诊断数据捕获电路,它从总线捕获诊断数据。这是一种硬件捕获机构,因此它本身不会给任何执行程序代码造成负担。从总线捕获的诊断数据字段包括数据字和环境字。还为捕获所述环境字而设置诊断数据捕获电路,使所捕获的数据字能够更容易解释,并免去为提供环境通知信息而提供程序代码或者其他机制来阐明所述诊断数据的必要性。一旦被诊断数据捕获电路捕获,所述诊断数据字段便通过它自己的诊断数据串行输出电路从所述集成电路输出,使之也不给别处造成负担。本技术提供诊断数据输出能力,对集成电路的其他元件带有一种有利的低侵扰水平,而同时本身还只要求一种有利的低水平的电路系统开销。
应当指出,所述诊断数据捕获电路从其中捕获诊断字段的总线,可以采取各种各样的不同形式,但是在推荐的实施例中,诊断数据捕获电路应方便地从集成电路的链接两个或两个以上功能电路的功能总线捕获诊断数据。
在功能总线的环境下,数据字可以从功能总线的数据部分捕获,而环境字可以从功能总线的地址部分捕获。可以用所述功能总线的整个地址作为环境字,但是在推荐的实施例中,只用所述地址中提供足够程度的环境信息的所需要的一部分,而同时减少需要从所述集成电路输出的数据数量。
作为一种替代或者除了从功能总线捕获诊断数据外,还可以采用专用的诊断总线,直接把数据从一个或多个功能电路发送到所述诊断数据捕获电路。在这种环境下,可以在捕获的数据字和环境字的属性上,在一种程度上改善灵活性,因为它们不受功能总线协议的限制。
尽管诊断数据的串行输出可以是直接的和无缓冲的,但是在本发明推荐的实施例中,提供先进先出缓冲区,在串行化和输出以前存储所述诊断数据字段。这样的先进先出缓冲区在一定程度上防止所述诊断数据输出能力的溢出。这可能是这样一种情况,所关心的诊断事件在相隔很近的时间出现,而且若无某些程度的缓冲,就可能无法同时调查这些情况。
在本发明的推荐的实施例中,诊断数据字段包括定时字,指示与所述数据字相联系的时间值。所述时间值可以具有各种各样不同的形式,例如,它有可能是某种周期计数形式或者实时值,但在推荐的实施例中,采用于下方法来设置所述计数值:使所述计数值指示从仍旧由所述诊断数据串行输出电路输出的任何以前捕获的诊断数据字段被捕获以来地持续时间,这样既能减少要从所述集成电路输出的数据量,又仍旧允许足够程度的时间分辨率。
在推荐的实施例中,所述时间值还可以用来指明是否有一个或多个诊断数据字段没能被捕获,例如,由于诊断数据字段溢出或者某些其他类型的捕获失败的结果。
可以用各种各样不同的方法并且利用各种各样不同的编码来实现所述诊断数据的串行形式输出。作为示例,所述诊断数据字段可能被拆分为较小的多字节段,然后依次输出。但是,在推荐的实施例中,利用单一条串行数据输出线或者单一条串行数据输出线与时钟信号相联系,所述时钟信号可以由所述集成电路本身产生或者由与所述集成电路配合使用的其他电路产生,可减少与诊断系统相联系的所采用的外部引脚数的形式的系统开销。输出与时钟信号的结合,以额外的一条信号线为代价,或者在所关心的时钟信号线已经作为一种外部输出存在的情况下,至少以一定程度上增加复杂性为代价,一般地可以实现较快的数据转移速率。
本技术的一个特别推荐的特征是,对这些功能电路之一执行的程序指令可以产生诊断数据字段。于是,可以使程序产生种籽数(seeded)/装备仪表,它们在运行的适当时刻产生诊断数据。这在诊断数据的产生上和它的代表性上,允许有相当大的灵活性和能力。另外,硬件诊断数据捕获电路和串行输出电路具有使程序代码不必对诊断数据的捕获或者输出负责的作用,而只由它自己产生。这有利地减少程序代码的系统开销。进一步,即使程序在产生这个数据之后″崩溃″,所述数据仍将被捕获。
生成诊断数据的程序指令最好通过对随后从其中捕获数据字和环境字的总线产生总线交易来做到这一点。产生总线交易的程序指令一般存在于集成电路内,利用总线结构,并相应地,可以容易地用于这个诊断功能。
本技术的强烈推荐的特征是,所述诊断数据捕获电路可用来捕获与预定地址特性匹配的地址相联系的总线交易。这样,可以使所述诊断数据捕获电路成为总线从设备,后者具有它自己的关联的地址范围,而把功能电路设置成在想要产生用于捕获和输出的诊断数据时利用所述地址范围内的地址产生总线交易。
与所述诊断数据捕获电路相联系的地址范围的使用,提供非常有利的特征,即,要与数据字相联系的环境字可以从所述地址范围内所述总线交易要送往的特定地址推算出来。于是,功能电路可能通过设置待指向特定的地址位置的总线交易,提供它的要与所述数据字段相联系的环境信息,当所述诊断数据由程序指令产生时,这特别容易做到。
所述环境字可以利用指示在所述预定的范围地址内使用的地址位置的索引值,有效地表示所述总线交易的地址。
本发明的推荐的实施例提供对诊断事件的可编程的灵敏度,可以以一种不然就无法由用户调整的办法,通过使用施加在所述诊断数据字段上的可编程的屏蔽值将其包括在所述系统的运行中。这个可编程的屏蔽值由所述诊断数据捕获电路使用来把用户已经确定为当时不关心的诊断数据屏蔽掉,或者屏蔽出那些所关心的数据。
从另一方面看,本发明提供诊断装置,用于从集成电路接收诊断数据,所述诊断装置包括:
诊断数据串行数据接收机,可用来接收代表从所述集成电路内的总线捕获的数值的诊断字段的串行数据;和
诊断数据解码器,用于对所述诊断字段进行解码,以便在其上识别由所述集成电路内一个或多个功能电路产生的数据字以及代表所述一个或多个功能电路的与所述数据字相联系的环境。
从另一方面看,本发明提供一种生成代表由集成电路的一个或多个功能电路执行的数据处理操作的诊断数据的方法,所述方法包括:从总线捕获一个值的诊断数据字段,所述诊断数据字段包括由所述一个或多个功能电路产生的数据字和代表与所述数据字相联系的所述一个或多个功能电路的环境的环境字;
使所述诊断数据字段串行化;以及
从所述集成电路向外部诊断装置输出所述诊断数据字段。
现将参照附图只以举例的方式描述本发明的实施例,附图中:
图1示意地举例说明包括诊断数据捕获电路的集成电路;
图2示意地举例说明按照本发明一个实施例的集成电路,其中包括诊断数据捕获电路,后者包括计数数据输入端和硬件输出端;
图3表示按照本发明实施例的装置,用于接收由具有单一输出导线的诊断捕获装置输出的数据;
图4是按照本发明实施例的单线输出接口的逻辑模型;以及
图5示意地举例说明诊断数据捕获装置。
参照图1,图中示出集成电路10,它包括诊断数据捕获电路15,可用来捕获通过连接两个功能电路20的系统总线25传输的诊断数据。诊断数据捕获电路15在由数据处理系统处理的数据和单线输出之间提供接口,有时称作单线输出(SWO)装置。
在图1的装置中,所述诊断数据捕获电路设置成访问沿着这些功能电路之间的总线传输的数据。它基本上是一个无源装置,除提供对所述数据的访问以外,不影响所述系统或者以任何方式影响所述数据。
所述诊断数据捕获装置包括地址译码器、FIFO(先进先出)和串行化器。所述诊断数据捕获装置可用来访问沿着所述总线的数据部分传输的数据字,还访问沿着所述总线地址部分传输的将要写入数据的地址。所截获的数据字是数据写入,因为它们是诊断目的所关心的。
访问所述数据字,然后地址译码器通过在所述数据字上加上″环境数据″的选定位对其进行处理。这个环境数据是从地址数据推算的,并且事实上用来把所述数据字放入环境中。然后把长度扩展后的数据字传送到FIFO。
在大多数实施例中,所访问的数据字是32位字,而在推荐的实施例中,它被选择成在其上加上5位环境数据。所述环境数据一般是地址的一部分,从地址总线上的地址数据取得。
可以以若干种方法触发数据捕获,包括响应写入特定的地址的数据。一般地,在数据处理系统中,诊断数据写入所述处理器地址空间的特定区域,于是,任何写入这个特定区域的数据都将是所述诊断捕获装置所关心的。因此,建立所述系统,以便使写入所述区域的数据写入指令都触发所述数据捕获装置。做到这一点的一种方法是给所述诊断数据捕获电路提供屏蔽电路,它可用来使用可编程的屏蔽值来选择要捕获的诊断数据字段。
一旦所述数据捕获电路被触发,所述地址译码器动作,在所述数据字上加上环境数据。在许多实施例中,所述数据区域内的各个地址对特定的功能是特定的,于是,各个可能加到所述数据字上作为5位环境数据的地址的细节,为被截获的数据字的特别的功能提供信息。因此,在某些实施例中,所述环境字段可以是偏移量值,指示预定的地址范围内所述地址位置。在这方面,例如,在RTOS的典型模型中,索引号0可以用于线程输入,1用于线程输出,2用于多路开关未决,3用于队列未决等。所述装置,例如,所述RTOS只把threadID(线程识别符)(TCB地址或者其他32位信息)写入索引号0,用于指明所述指定线程被调度。于是,在一个存储指令中,RTOS可以既传达动作/发生的事件,又传达所述作用/事件的环境。
所述37位数据从所述地址译码器输出,然后输出到FIFO,后者可能只是一级FIFO,但是最好包含若干级。事实上,所述FIFO使多个要发送的数据字能够紧靠在一起,只要总体速率低于所述频带宽度。所述FIFO的典型深度是3,尽管根据功能电路的最大速率、芯片接收数据的时钟速率和SWO的输出速率,可以选择不同的深度。
然后,串行化器用来通过单线输出(SWO)以串行数据的形式输出来自FIFO的数据输出。由串行化器输出的数据速率取决于所述实施例。有低速和高速实施例,并在下面对其进行更详细的描述。实质上,所述高速实施例要求对串行化器的输出计时(见图2),于是,除单线诊断数据串行输出(SWO)外,还有一条时钟信号输入线。一般所述高速实施例在约48MHz下运行,它可以支持100MHz。
所述低速实施例不要求时钟输入,因而可以在单一引脚接口上支持高达12MHz。
单线输出接口装置将串行地输出多个所述37位数据字,然后,任何接收装置可以使用与所述32位数据字相联系的5位环境数据,以便将所述输出数据多路分解成不同的流。
图2表示用于按照本发明实施例的集成电路中的数据捕获装置。所述数据捕获装置类似于图1举例说明的,但是另外还包括″计数″输入端和附加的FIFO,所述FIFO带有用于从功能电路发送诊断数据的关联的专用诊断总线。
所述计数输入端可用来输入定时字段,指示与可能附在所述37位字上的环境数据相联系的时间值。所述计数值指示从所述系统总线捕获数据字之间的时间长度,或者换句话说,在下一个字到达以前,这样的字在所述FIFO上花费的时间长度。
一种实现方案是设置计数器,所述计数器从一段数据的捕获启动,并在下一段数据捕获停止,然后重新开始。若所述捕获计时器溢出,它会发送一段数据来影响所述SWO,这不影响频带宽度,因为这些额外的分组只当事实上所述分组队列输出暂停时才需要。
来自所述计数器的信息在串行化器中加到所述37位字上,就是说,作为与所述分组相联系的延迟标记产生数据分组。在推荐的实施例中,这是3位宽。所述计数数据在由处理器执行的写指令之间提供一种时间指示,因而这是有用的附加诊断数据。它还可以提供一种特定数据字段的数据捕获是否丢失的征兆。
图2还表示专用诊断总线40,它在不通过系统总线传送数据的情况下,提供从功能电路到诊断捕获电路的通信。它是一个硬件实现方案,并在事实上可以提供所述特定功能电路的运行″踪迹″。这里没有地址译码,所述硬件设置直接把所述数据位写入FIFO。它通过它自己的FIFO耦合到数据捕获电路,即使正在从所述系统总线捕获数据,这也使数据能够加到输出线路上。
图3示出用于接收由具有单线输出的诊断捕获装置输出的串行数据的装置。所述装置包括串行数据接收机和串行数据解码器。所述接收机可用来接收串行信号,而解码器可用来对信号进行解码,并从所述信号内识别由所述功能电路产生的数据字和它们的相关的环境数据。然后用所述环境数据来对数据字进行分类,并将所述单一流多路分解为多个流。
在某些实施例中,所述接收机可能是主机上的调试器,所述解码器起按照它们的环境数据对数据字进行分类的作用,并把适当的数据转发到所述调试器,而同时发送其他数据到定制DLL,并对其他数据进行存储。
除用于调试或者跟踪目的外,其他诊断数据可能利用单线输出装置捕获。例如,若这个系统出现在汽车集成电路上,从这个引脚可以提取诊断数据,所述诊断数据提供汽车系统中不同的部分的状态信息。
下面给出在本发明的实施例上附加的信息。在这方面,使用于下术语和缩写。
术语   意义
SWJ    单线JTAG。这是一个模型,以此一个运行控制仿真器放入芯片中,并利用单一引脚方案(对于JTAG用4或者5个引脚)进行通信。这不仅减少引脚数,而且一般比JTAG快得多。它还提供附加的访问和独特ID。这个MemTAP模型的使用允许非常快速的下载。
DBT/Mem  这是TAP块,起AMBA的作用(AHB或者AHB-Lite)
TAP      用于访问系统总线的主设备。
AMBA     芯片内的ARM总线标准。
AHB      AMBA高速接口,用于正常存储器访问(对比APB)。
AHB      AMBA装置,有源地响应一个地址的访问
从设备   范围。SWO是一种AHB从设备。
AHB Lite 是指AMBA AHB的删除一些功能的(stripped down)版本,没有多主设备,而且没有完全的突发方式和它的关联的信令。
UART     异步串行(一次发送一位)装置。SWO基于UART概念。SWO还用来代替UART作为调试跟踪工具。
ETM      嵌入跟踪宏单元,指芯片上跟踪块,它响应触发事件并储存指令和/或数据跟踪信息。
下面描述按照本发明实施例的非常小的单线输出″跟踪″部件。这个部件与ETM差别相当大,实际上可以用ETM补充(取决于用途和HW))。SWO模型是一种应用驱动跟踪,而ETM是处理器驱动跟踪。其中ETM使用触发器和范围来控制跟踪对象,SWO是无源的,并且只输出由应用程序、RTOS或者系统HW明确地发送给它的数据。
SWO设计成由应用程序用于4个主要目的:
·进行′printf′调试。这意味着它们要让应用程序(app)发送数据到某些通道,使得它们可以在主机上进行后加工。传统上,使用串行通道,但是这要求应用程序(apps)拥有资源(一般如此)。它还意味着ISR要泄漏(drain)(或者HW自动缓冲)。另外,传统的串行装置慢得多的速率限制了数据速率。
·进行RTOS事件跟踪。这意味着对RTOS进行小的修改,它把ID写到特定位置,指明发生了什么事件。只要写操作成本低,它可以让写留在展开版本(与具有单独的调试图像相比)。这保证固定的低侵扰,以便避免产生探针效应。传统上,这是向低优先级线程传送,后者把它输出串行线。或者把它转储到环形缓冲区,用于后来的Mortem分析。但是,大部分RTOS只在特殊版本中才包括它,所述线程的延迟和串行线路意味着,往往丢失或者歪曲关键信息。另外,线程的系统开销和传送所述信息高得多的系统开销具有探针效应,它改变受试的行为。
·进行应用程序或者′总线′跟踪。这一般意味着监视特定的交易或者实时数据。这与printf调试的区别在于,它的解释必须与数据本身分隔(例如,先有知识)。这还意味着,所述系统中的其他核心可以使用同样的业务(诸如DSP)。
·使系统级HW能够发送所收集的信息。这使系统设计者能够容易地增加在所述主机的控制下馈送的小的块信息。这可以包括争用分析(总线使用平衡、DMA分析、PC采样(在高速缓存较少的核心上或带有支持核心)、事件计数、时间触发器事件(诸如从ETM)、差错状态等。
在混合SWO和ETM系统中,ETM将能够集中在指令流、特殊触发事件及其他频带宽度不折衷的区域上。这种平衡为与引脚和门电路紧密关联的设计者提供较好的解决方案。
所述SWO模型让修改后的应用程序代码原封不动,并当不使用时,关断SWO部件。这意味着,在调试和生产使用之间的时间代价不改变。于是,它是固定侵扰(一般非常低,因为它只写入快速存储器)。但是,因为它可能关断,所以不用时不消耗功率。
SWO体系结构基于三个指导原则:
1.代替调试UART(RS232等)类型的编程解决方案。
2.在单一引脚、高达12Mbit/s的速度的条件下以及在2个引脚、高达100Mbit/s的速度下可以很好地工作。
3.把应用程序侵扰减到最小。
所述SWO接口作为一组32存储器映射字″寄存器″暴露在外。每个字寄存器都可以用一个对应用程序有意义的32位值写入。寄存器的索引号(0-31)是消息报文的一部分。就是说,实际上没有32寄存器,而是一个37位宽的寄存器。这个37位寄存器包含由应用程序写入的所述32位数据和由所述寄存器地址选定的5位索引号(所述地址的低5位)。这意味着,一个应用程序只要通过位置选定就可以给所述数据增加意义。
在一个典型的RTOS模型中,例如,索引号0可以用于线程输入,1用于线程输出,2用于多路开关(mutex)未决,3用于队列未决等。这意味着,例如,所述RTOS只把进程ID(TCB地址或者其他32位信息)写入索引号0,来指明所述指定线程已被调入。于是,在一个存储指令中,所述RTOS可以传达发生所得动作/事件和所述动作/事件的环境。
索引号可以在带宽中指定。于是,0-17可以给RTOS(18个索引号),18和19用于″printf″登录,20和21用于功能入口/出口(编译器产生或者手产生),22和23用于ISR入口/出口等。因为主机还把所述37位看作″地址″(5位)和″数据″(32位),所以可以把它多路分解成不同的流。于是,在所述主机中,调试器可以处理全部地址0-17作为RTOS事件,18和19用于printf登录等。这种多路分解只不过是向所述调试器提供的配置判决和用在所述靶上的习惯。这使一些消息流能够进到定做DLL、一些存储到文件中、而一些由调试器当场处理。任何组合都是允许的。
与数据用的寄存器一起,SWO部件提供密钥锁定控制寄存器、状态寄存器和ID。还有屏蔽使能寄存器,它允许对特定地址(0-31)的选择性禁止。
SWO定义为具有两个基本形式:低速和高速。低速部件用来在单引脚接口上维持高达12Mbit/s的速度。高速部件用来在双线(时钟外加数据)上维持高达100Mbit/s的速度。高速部件仍旧称为″单线″,因为它可以利用单一数据引脚完成。应该指出,所述高速部件预计一般运行在约48MHz和较低的速度下,与USB2捕获装置一起很好工作。应当指出,可以使用更多引脚,但是意图是保持配置数目非常小,以免使捕获装置的可用性造成问题。
根据协议,SWO部件把整个问题分成4层通信:
1.导线协议。这定义为42位协议,用于正常单线模型(低速),但是利用Manchester编码的双时钟(于是10MHz位速率使用20MHz时钟速率)。当共享引脚资源时,它可以是包裹的ETM V.3分组。对于高速,它将是42位协议,带有单独的时钟源(可以是装入所述芯片或者在所述芯片之外的时钟,是为SWO或者不是为SWO设计的)。
2.靶协议。这定义为40位协议,包含3位数据头、5位地址和32位数据块。所述3-位数据头用于延迟信息、超限状态和扩展格式化。
3.数据协议。所述数据协议是主机和靶应用程序之间的合同。就是说,对所述32位数据没有确定的意义。其意义是由发送者指定的,由主机SW解码,后者配置成能够理解它。这使自由格式使用能够跨越范围很宽的应用程序和系统。
4.捕获装置协议。这是所述靶协议的扩展部分,并使所述捕获装置能够提供附加的信息。具体地说,所述捕获装置为分组启动提供时间量度(inlmicro第二粒度)。时间量度使相对和绝对时间量度能够用合理的准确性完成。所述靶协议中的内部延迟是针对分组″串″(当分组从后端到后端流出时)的,然而所述捕获装置时间是固定的量度(和因为在新的分组或者分组串开始时测量,允许修正)。
单线低速HW接口设计成使由低成本装置实现波特率自动设定成为可能。通过保持在或者低于12Mbit/s和利用Manchester编码(1=高-低,0=低-高),就容易使所述装置进行波特率自动设定,并适合于与USB1.1一起工作。另外,在24MHz下或更低频率下,对所述芯片非常很小的应力都会驱动所述信号或者电路板设计者布置线迹。这有助于保证这个调试部件可以在现场要求很小资源的情况下使用。事实上,在推荐的实施例中,所述单线将用芯片上的测试引脚进行多路切换(在复位时受控),因为没有外部HW干扰(尝试与连接到例如,LED的GPIO共享是一般都如此)。这意味着所述测试引脚连接器也可以用于SWO。
对于高速使用,将使用单独的时钟引脚(于是单一数据线加上时钟)。这个时钟将用于所述速率,于是没有波特率自动设定的必要性(一个开始位和奇偶位仍将用来识别一个分组)。应当指出,所述时钟可以是芯片中或者芯片外的任何时钟信号。还应当指出,速度较高的SWJ可以使用同样时钟,允许非常快速的单线调试控制。这意味着3个引脚可以用于较大装置中高速的SWJ+SWO。带有MemTAP的高速SWJ能够以比今天的4-6线JTAG更快的速度运行。
尽管持续12Mbit/s的速率对大部分应用是足够的,但是突发速率可能需要更高。所述SWO部件使用FIFO来使较高突发速率成为可能。系统设计者可以选择FIFO的深度(1或更大)。FIFO使应用程序能够发送多个紧靠在一起的数据字,只要总体速率低于频带宽度即可。这例如允许将3个环境字转储,为稀有事件的登录作好准备。3的FIFO深度可能是最优的。
应当指出,所述应用程序仍旧需要知道,对于特别的处理器最大速率将意味着什么。这个将受FIFO深度、芯片的时钟速率和SWO速率影响。因为SWO不记录发生超时(数据丢失),这使它能够容易地针对特定应用程序和芯片组合调谐。
用于printf调试的这个传统的模型在应用程序的关键地点插入打印语句。这允许在不停止处理器的情况下,进行非常应用程序中心的信息转储。这个技术由于4个原因得到广泛应用:
1.在调试器中在每一点上停止是很费时的,当你不知道你在寻找什么时,它是非常费时的。所述printf模型使你能够显示重要的数据并寻找问题的征兆。Printf调试与运行-停止调试配合使用,因为一旦问题区域向下收窄,人们便可以使用调试器来单步通过所述问题区域。
2.代码流程分析。所述登录可以用来观察运行顺序。对于基于SW的中断,这可能是非常有用的,因为运行顺序在大部分情况下不是确定的。
3.数据登录。在运行的同时转储数值的能力,允许在所述事实之后进行分析。若这是利用断点完成的,则不仅费时,而且很可能改变行为,因为停止会影响外部系统。典型用法是把实际的数据与预期的数据比较(产生的、以前的应用程序等)和用于调谐。
4.稀有事件监测。所述printf模型往往用于这样的系统,其中故障出现非常稀少(例如,运行2个星期之后)。这可以用来在所述点处检测出失效的环境下捕获尽可能多信息。
对于传统的printf调试,问题是它涉及发送字节流,往往带有格式化成为该字节流的数据,跨越缓慢的通道。另外,随后往往难以管理所述结果。利用字符串有以下问题:
·字符串越长,发送占用的时间就越长。这意味着字符串要简洁,这会影响阅读所述结果的能力。
·字符串要存储在靶存储器,于是要占用空间。
·字符串往往需要具有格式化为所述字符串的数据(本地信息)。这不仅需要时间,而且意味着缓冲区管理(直至输出格式化的字符串为止)。
传统方法的替代方法是不利用字符串,而是发送原始数据。问题变成将其转换为有用的信息非常困难,并产生如何捕获数据的问题。
按照本发明实施例的SWO以一种有效的和容易使用的方式支持强大的printf调试类型。所述模型基于两个部分:
·字符串表模型。这意味着用户建立一个文件,带有每一个他们想要使用的字符串与数字和枚举名称之间的映射。例如:
0x10:DBGCHANGEVALVE阀门位置已经变为%d
0x11:DBG MOTOR SENSOR:电动机传感器读数:%u速度,%u温度,%u电流
在上述两行中,所述文件已经提供足够的信息,允许每一条printf登录以32位发送。所述32位值将″拆分″成8位索引号进入所述表(0x10和0x11将是在8位位置上)和24位数据值。在第一个字符串中,24位值用于%d。在第二个示例中,24位值被分成3个8位量,并用于%u控制。字符串还可以使用%c和定点值。所述文件由通用程序使用,它建立C/C++头文件,后者连同某些宏一起定义每一个枚举,来检拾所述数据。这允许在程序中使用非常简单的行:DBGSTR1(DBGCHANGEVALVE,valve_position(阀门-位置));
所述宏简单地写下枚举移动24位(一个由编译器计算的常数和所提供的价值或运算的结果。这使用非常很小处理器系统开销。
·调试器解释通过查阅所述字符串表中的8位索引号得来的数值,然后将它们呈现在登录窗和/或文件中。登录窗口允许通过枚举和排序过滤。登录窗口和文件都还记录时间戳(从所述捕获装置)。这允许进行事件之间的相对时间测量。
过去人们已经尝试在这些相同的应用程序中使用DCC。
但是,这样做有3个主要问题:
·它在性能上是非常不确定的。它只是漏得像JTAG仿真器和SW选择的那样快。当运行基于主机的仿真器时,这是非常不可预测的。这意味着所述应用程序或者丢失了数据(随后没有这个的记录),或者等待(阻塞所述应用程序)。这可以在某种程度上通过让线程来完成这个运行(于是只有所述线程被阻塞)和/或使用空中断来克服。两个解决方案仍然非常需要侵扰位。
·因为它需要CP14接口并且因为上面定义的所述单字问题,它可以合理地不在线写入。这意味着所述应用程序要调出例程来完成这个需要的动作,这使系统开销大大增加。
·没有(资料)谈及工具支持((DCC通道观看程序是对非阻塞支持的唯一的实在的选项)。
因此,DCC大致等效于利用UART,但是带有确定性较低的性能。另外,最大DCC速率受所用的仿真器和与其一起使用的SW的严重影响。
所述捕获装置进行时间测量。确定新的分组的第一位输出的时间允许要做的测量。所述捕获装置刚好在此以前发送一个分组(给所述主机),它指明这个分组以前延迟了多长时间(从所述最后一次的分组)。一旦一个分组串到达(一个分组串意味着下一个分组的起始位刚好在前一个分组的停止之后-这一般是从FIFO转储),使用所述分组中的所述延迟标记。所述延迟值指明当新的一个到达时,以前的一个在所述FIFO中大致停留多长时间。所述延迟是时间的2次方指数(0=0-7,1=8-15,2=16-31等),于是可以进行标定,以便提供合理的测量。
另外,可以把标记从ETM传送到SWO,以便允许进行相关分析。可以使这与带有用户设置的跟踪事件相关(于是在跟踪块开始时写入数值,来取得时间相关,然后给后来的全部输出打上戳)。于是,这允许存储周期对时间的关系。这使用中等分辨率时间(1微秒)耦合到ETM,这将允许较好地理解所述应用程序环境中的跟踪。这将变得更真实,因为ETM失去它的提供时间戳(时间不关联的周期以外,并可能在任何时间改变它们的意义)的能力。
所述时间戳允许进行刺激/响应的测量、应用程序中的点到点、对SW响应的HW事件(诸如ISR)、ISR定时、中断潜伏期和代码评价。正常的时间测量工作通过让捕获装置插入发回主机的分组作为捕获计时器溢出。这允许主机得到绝对时间。因为只使用这些额外的分组,当没有分组串时,没有频带宽度代价(因为捕获到主机通信链路的死时间)。
下面简要描述按照本发明实施例的四种类型的装置:
1.用于低速SWO的低成本直接到USB的并行化器。这个装置不带有存储器,而是使用EPLD和USB装置来把所述分组原样发送回去(时间戳用的除外)。这个装置只需要在所述靶上(SWO和接地)两个连接器。它特别适合于微控制器。
2.用于高速SWO的高速捕获装置。这使用附加的单独时钟引脚来采集高达100MHz(等)的数据。它或者使用速度较高的通信通道到所述主机,诸如USB或者100 Base 10,或者需要时使用板上缓冲区。
3.ETM跟踪收集块。它原样收集高速SWO信号或者分组内ETM v3数据流。
4.智能仿真器,诸如RVI可以用来利用一条引脚来采集低速SWO。这允许收集到本地的存储器,然后通过RV-消息装入主机。RVI块可能需要预加工所述数据(除时间戳以外)。
如在图4中可以看到的,逻辑设计是:核心在内部存储器中看到32位字。这些应该是0或者低等待状态(有效的0带有写缓冲区)。这允许应用程序用32位数据字写到映射区域内的偏移量0-31。所述装置将记录′求余′地址(作为((基地址)>>2)&0x1F)加上所述32位字。所述额外的映射寄存器用于控制和状态。
所述SWO部件在上电时被禁止,以避免浪费功率(但是它仍旧可以写入,它们只是不起作用了)。应当指出,对于被动使用(无运行控制块),所述应用程序在引导代码或者根据某些检测机构(诸如strap引脚或者引导EEPROM/闪存设置)使之启动。这意味着所述SWO或者由运行控制仿真器启动(通过核心或者MemTAP),或者由应用程序启动它本身。
图5示意地举例说明可以连接到所述集成电路的诊断数据捕获装置。其外部形式看来像圆柱体,一端带有插入PCB连接器的电缆,而另一端带有计算机连接,诸如USB插塞。在捕获线路50内,并行化器从集成电路接收串行诊断数据流。分组包裹器从所述并行化器52取出字节流,添加它自己的时钟,当某些周期没有数据时,还发送出心博。它还将发送分组以便表示它是否溢出(与所述通信能够排出数据的速度相比,数据到达较快)。应当指出,在推荐的实现方案中,心博无论如何总是每个固定周期都发送的。当长数据串到达(用所述心博对所述分组时间再设置基线)时,这保证没有歪曲的超时。通信装置56(USB)从所述分组包裹器54取出诊断数据,将其发送到通用计算机(例如,PC),以便进一步分析。

集成电路内诊断数据的捕获.pdf_第1页
第1页 / 共29页
集成电路内诊断数据的捕获.pdf_第2页
第2页 / 共29页
集成电路内诊断数据的捕获.pdf_第3页
第3页 / 共29页
点击查看更多>>
资源描述

《集成电路内诊断数据的捕获.pdf》由会员分享,可在线阅读,更多相关《集成电路内诊断数据的捕获.pdf(29页珍藏版)》请在专利查询网上搜索。

一种集成电路装备有采取诊断数据捕获电路形式的诊断数据捕获和输出系统,所述诊断数据捕获和输出系统从总线捕获数据字和环境字。所述总线可以是连接集成电路内功能电路的功能总线或者是专用总线,直接把一个或多个功能电路链接到诊断数据捕获电路。捕获的诊断数据在先进先出缓冲区内缓冲,然后串行化以便输出。所述诊断数据字段还包括时间值,指示所关心的诊断数据字段被捕获的时间和是否有任何诊断数据字段没有被捕获。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1