This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1290NCPDT:支持 TM4C129上的跟踪

Guru**** 2516170 points
Other Parts Discussed in Thread: EK-TM4C123GXL, TM4C1290NCPDT, SEGGER

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1052701/tm4c1290ncpdt-supporting-trace-on-the-tm4c129

器件型号:TM4C1290NCPDT
主题中讨论的其他部件:TM4C123EK-TM4C123GXLSEGGER

我正在将 TM4C123设计更新为 TM4C129、并尝试在该过程中尽可能多地进行改进。  到目前为止、我们使用了 EK-TM4C123GXL 的 ICDI 调试器来加载软件和调试(单步、设置断点、查看存储器等)。  我们使用具有自定义引脚的 Tag-Connect 电缆、该引脚包括用于目标的 UART0信号、复位和电源。  它为我们提供了很好的服务、但我想知道我们在调试器速度和跟踪功能方面还有什么要做的。  因此、我想知道我们应该切换到还是添加不同的调试连接器、以及哪些调试器硬件可以让我们利用新功能。

我一直在查看 XDS110和 XDS200。  看起来,它们使用0.05英寸间距的20引脚 TI CTI 连接器和引脚排列,以及用于其它连接器的适配器。  我在 TM4C129电路板上看到的大多数示例似乎都使用0.05英寸间距的10引脚 Cortex 调试连接器,这省略了许多信号。  我会通过将较小的连接器与这些调试器中的任何一个配合使用而放弃什么?  您似乎可以使用任何 XDS 调试器(但不使用 ICDI)访问嵌入式跟踪宏单元(ETM)。  [校正:XDS110可以访问具有 ETB 的 MCU 上的 ETB、而不是 ETM;TM4C129不能访问 ETM。]  ETM 是否在 CCS 中提供回溯功能(崩溃后)?  

与 TM4C129搭配使用时、XDS200是否比 XDS110具有显著优势?  我看到它具有有效的 JTAG 时钟、而 XDS110没有、但我认为 TM4C129无论如何也不支持。  即使没有活动的 JTAG 时钟、XDS200也更快吗?  这是加载软件时的一个大优势,还是加载时间已经由 MCU 闪存在传输后进行编程所需的时间决定?  XDS200是否具有功能优势?

如果我们跃进 XDS560v2、20引脚连接器是否支持它将提供的所有附加功能、或者是否需要60引脚连接器?  或者 TM4C129根本不支持这些功能?

 谢谢、

Steve

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Steve、

    我们将稍微向后回答这个问题、以便开始、因为我不知道这里的所有答案、但首先要回答:

    [引用 userid="227181" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1052701/tm4c1290ncpdt-supporting-trace-on-the-tm4c129 ]如果我们跃向 XDS560v2迈进、20引脚连接器是否支持它将提供的所有其他功能、或者是否需要60引脚连接器?  或者 TM4C129可能根本不支持这些功能?[/引述]

    使用大于10引脚的接头不会带来额外的好处。 TM4C1290NCPDT 没有额外的 JTAG 连接可插入更高级的接头。

    我们的 JTAG 用户指南介绍了第3.1和3.2节中的接头引脚排列和 TM4C12x 连接、您将看到所有 TM4C12x 连接都是通过10引脚接头 https://www.ti.com/lit/an/spma075/spma075.pdf?ts=1636579798982进行计算的

    有一条关于 EMU0/EMU1依赖于目标器件的说明、我不知道为什么像这样提到 EMU0/EMU1、因为这些引脚不用于 TM4C 器件。

    [引用 userid="227181" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1052701/tm4c1290ncpdt-supporting-trace-on-the-tm4c129 ]我在 TM4C129电路板上看到的大多数示例似乎都使用0.05英寸间距的10引脚 Cortex 调试连接器,该连接器忽略了许多信号。  我会通过将较小的连接器与这些调试器中的任何一个配合使用而放弃什么?  您似乎可以使用任何 XDS 调试器(但不使用 ICDI)访问嵌入式跟踪宏单元(ETM)。[/quot]

    如上所述、任何功能都不会丢失。

    [引用 userid="227181" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1052701/tm4c1290ncpdt-supporting-trace-on-the-tm4c129。]我看到它具有有效的 JTAG 时钟,而 XDS110没有,但我认为 TM4C129无论如何都不支持。  即使没有活动的 JTAG 时钟、XDS200也更快吗?  加载软件的一个大优势,或者加载时间已经由 MCU 闪存在传输后对其进行编程所需的时间决定[/报价]

    我认为闪存编程是主要瓶口、但如果我错了、SW 工具团队可以进行其他评论。

    [引用 userid="227181" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1052701/tm4c1290ncpdt-supporting-trace-on-the-tm4c129 ]ETM 是否提供了 CCS 回扫功能(崩溃后)?  [/QUERE][quote userid="227181" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1052701/tm4c1290ncpdt-supporting-trace-on-the-tm4c129~与 TM4C129搭配使用时、XDS200是否比 XDS110具有显著优势?[quote userid="227181" URL"/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1052701/tm4c1290ncpdt-supporting-trace-on-the-tm4c129?XDS200是否具有功能优势?

    对于这些问题、我需要向我们的软件工具专家咨询。 我将请他们对此主题发表评论。

    此致、

    Ralph Jacobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="227181" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1052701/tm4c1290ncpdt-supporting-trace-on-the-tm4c129 "]您似乎可以使用任何 XDS 调试器(尽管不使用 ICDI)访问嵌入式跟踪宏单元(ETM)[/quot]

    我认为唯一支持 ETM 的 XDS 调试器是 XDS560v2 PRO TRACE 接收器和调试探针。 但是、查看产品页面、  ARM 内核引脚跟踪(ETM)支持的器件中*未*列出 Cortex-M 器件。

    XDS110和 XDS200确实支持 Cortex-M 器件的 SWO 跟踪。 与 ETM 相比、SWO 跟踪是低带宽跟踪、但它允许跟踪、而无需检测代码。

    SEGGER 具有 J-Trace PRO Cortex-M ,但查看 完整的 J-Link/J-Trace 支持 CCS 不支持具有 J-Trace 的 SWO 或 ETM 跟踪。

    跟踪分析器用户指南 提供了一些有关 CCS 中跟踪的信息,尽管上次更新时间是2014年。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    切斯特提到的 J-Trace 是使用 ETM 的好选择。   有一个名为 J-Trace Pro Cortex M 的版本。 您将无法在 CCS 中显示跟踪数据、但 SEGGER 提供了一种可用于臭氧的工具。

    您需要在电路板上放置适当的接头。  通常情况下、您会使用 Arm Cortex 20引脚接头。  基本上、它是 Arm Cortex 10引脚接头、具有用于跟踪的额外引脚。  您可以将 XDS110连接到标头的调试端、并在 CCS 中进行大部分调试。  然后、当您想要进行跟踪时、您将断开 XDS110并连接 Segger J-Trace。

    对于 TM4C、我不会为 XDS200费心、XDS110已经足够好了。

    此致、

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢后续行动、Ralph。  我仍在尝试整理事情。

    Ralph Jacobi 说:

    使用大于10引脚的接头不会带来额外的好处。 TM4C1290NCPDT 没有额外的 JTAG 连接可插入更高级的接头。

    我同意不再有 JTAG 连接、但对于跟踪、这可能是一个不同的情况...

    Ralph Jacobi 说:

    有一条关于 EMU0/EMU1依赖于目标器件的说明、我不知道为什么像这样提到 EMU0/EMU1、因为这些引脚不用于 TM4C 器件。

    《TM4C129x 系列 Tiva C 系列微控制器的系统设计指南》(SPMA056)指出:

    TM4C129x 系列微控制器包括用于指令跟踪捕获的 ARM 嵌入式跟踪宏单元(ETM)。 跟踪数据在引脚 TRD0-3上输出并使用 TRCLK 计时。

    Tiva TM4C1290NCPDT 微控制器数据表(DS-TM4C1290NCPDT-15863.2743 SPMS429B) 表25-3显示引脚44 (PF2)可被分配至函数 TRD0、描述为"Trace Data 0"。  TRD1、TRD2和 TRD3也在这里。

    也许跟踪数据可用、但在名为 TRD0-3的引脚上、而不是 EMU...?   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、Chester。  我把 ETM 和 ETB 融合在一起、最终认为 TM4C129两者都有。  我现在觉得它有 ETM、但没有 ETB。  因此、有关 XDS110能够访问 ETB 的信息是不相关的。  我想 ETM 就是在 TRD0-3引脚上放置跟踪信息的方法(请参阅我对 Ralph Jacobi 的响应)。

     TM4C1290NCPDT 通过 ATB (ARM 跟踪总线)接口支持"串行线跟踪"(SWO)。   它似乎使用与 JTAG 相同的引脚子集、因此应使用10引脚连接器来支持它。  如您所述、使用 XDS110应该可以读取它。  XDS 调试器似乎会创建一个虚拟 COM 端口,然后您会告诉调试软件从中读取(根据 跟踪分析器用户指南 SPRUHM7B)。  该指南建议 SWO 跟踪在 CCS 中支持四种配置:

    • 统计函数分析
    • 数据变量跟踪
    • 中断分析
    • 自定义内核跟踪

    它表示不支持 PC 跟踪配置、这种配置有助于确定导致崩溃的情况。  但在第3.3.12节中、它讨论了受支持的自定义内核跟踪配置。  我不清楚它有何不同(除了仅支持单个内核)。  它是否还提供某种回扫功能?  这是我最感兴趣的内容。  如果 SWO 跟踪能够实现它(即使缓冲器大小有限且速度较慢)、10引脚连接器和 XDS110就足以满足我的需求。  否则、我想我会继续寻求 ETM 支持、以此作为实现目标的一种方法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Johns、感谢您提供有关 J-Trace 和臭氧的信息。  硬件的价格相当高、但我在搜索错误时花费了这么多时间、所以这可能是有道理的。  至少臭氧是免费的。

    关于连接器、出于空间原因、我希望保持0.05英寸的间距。   J-Trace PRO 附带 一个看起来具有此类连接器的 Cortex-M 跟踪参考板(https://www.segger.com/products/debug-probes/j-trace/)。  我假设它的引脚分配如下所示: https://www.segger.com/products/debug-probes/j-link/accessories/adapters/19-pin-cortex-m-adapter/。  但该引脚未显示完整硬件跟踪需要的额外(除 JTAG/SWD 之外)引脚。   我一定会错过一些东西。

    我在 https://www.ti.com/lit/an/spma056/spma056.pdf 的图26中找到了类似的引脚分配、 TI 似乎建议在引脚14、16、18和20上连接跟踪信号。  J-Trace 调试器是否未使用它们?  也许我发现的适配器没有连接它们、但调试器附带的0.05英寸间距电缆确实连接了它们。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    该适配器看起来像是用于将旧式 ARM20Pin 连接到较新的 Cortex 20/19接头。  ARM20不支持走线、因此不会连接这些引脚。

    J-Trace 探头具有 Cortex 20和 ARM20连接器和电缆。

    在上图中、您可以看到左侧是小型 Cortex20 (0.05节距)连接器、右侧是旧式 ARM20 (0.1节距)连接器。  您不希望使用适配器。  您需要将0.05 Cortex20接头放在电路板上、然后使用提供的电缆将其连接到 J-Trace。  无需适配器。

    此致、

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Steve、

    我在浏览 JTAG 部分、由于某些原因、甚至没有在其中提到、您必须像您所做的那样在引脚排列中找到它、这就是我没有意识到这一点的原因。

    我做了更多的挖掘、Bob Crosby 的这篇前文详细介绍了这些引脚的用途: https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/642010/tm4c123gh6pm-about-the-embedded-trace-macrocell-and-jtag-swd/2370532#2370532

    我自己没有真正的详细信息、因为我从未尝试过使用该接口、而且它没有很好的记录。  由于它是 ETM 跟踪宏单元、因此 Arm 可能会有更多有关用例的文档。

    此致、

    Ralph Jacobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    再次感谢大家帮助解决所有这些问题。 我将尝试根据您所写的内容以及我能够从各种文档中挖掘出来的内容进行总结。 如果我遇到问题、请更正。 我留了几个问题、但可能需要等待并测试才能获得答案。 如果有人能够更新文档,这似乎是一个很好的开始位置:)

    • 10引脚0.05英寸间距 Cortex 调试连接器似乎非常常用、可处理除 ETM 以外的所有内容。
    • 20引脚间距为0.05英寸的 Cortex + ETM 连接器添加了完整外部布线所需的连接、可用于 J-Trace 或 XDS560v2 PRO 布线(检查是否受支持)。 您可以使用10引脚电缆将其插入一半。 它有很多接地连接、因此带状电缆将在高速信号之间接地、这可能有助于减少串扰和 EMI。
    •  这两个连接器(以及仅那些连接器)都记录在2013年的《TM4C129x 系列 Tiva C 系列微控制器的系统设计指南》(SPMA056)中。 也许 TI 应该在那里停下来...
    • "通过 JTAG 接口使用 TM4C12x 器件"(SPMA075)显示了四个不同调试连接器(包括10引脚 Cortex 调试连接器)的 JTAG 连接。 但是、尽管它在晚些时候(2016年)进行了更新、但它不包含 Cortex + ETM 连接器、这无疑是下一个最有用的连接器。 在两个20引脚连接器上、它确实包括、它省略了布线连接、这可能导致有人使用其中一个连接器、但未能实现额外引脚所支持的潜在优势(布线)(省略确实阐明了哪些引脚对于_JTAG_至关重要、具体而言、 这可能是他们的观点)。
    • XDS110调试器本机使用 CompactTI 20引脚连接器(CTI-20)、该连接器使用不同的引脚、但与 Cortex + ETM 连接器使用相同的物理连接器(键控不同)。 XDS110包括两个 Cortex 连接器的适配器。 CTI-20引脚包括四个 GPIO 引脚、但没有用于跟踪的引脚、这在 XDS110上很有意义、因为它支持 GPIO 而不是跟踪。 将这些 GPIO 线连接到 TM4C129上支持布线的引脚也许是有道理的、这样您就可以根据需要制作适配器并使用 J-Trace (根据 sprui94中的表4、所包含的适配器不能用于该目的)。 或者只需使用 Cortex + ETM 连接器即可获得与10引脚连接器的兼容性、这是一个额外的好处。

    关于到目标的 UART 连接:

    • 内置于 TM4C123和 TM4C129 Launchpad 中的 ICDI 调试器支持 UART 连接。 目标 MCU 的 UART0连接到调试 MCU、该调试 MCU 可使用基于 USB 的虚拟 COM 端口对其进行访问。 根据我的经验,此 UART 比 printf()用来传输控制台 I/O 的默认方法快得多(115200波特) 并且可以将其设置为中断驱动并使用一个较大的 SRAM 缓冲区、在这种情况下、可以使用该缓冲区、但只会导致程序执行中的最小延迟(在 uartstdio.h 中搜索"UART_buffed")。 我已经广泛使用了它、发现 UART 连接并不包含在每个调试连接器中、这让我感到惊讶。
    • SPMA056提到"在某些 Tiva C 微控制器开发套件上、使用2x10 0.05英寸间距的连接器、但 PA1 (U0TX)连接到引脚14 (TRD0)、PA0 (U0RX)连接到引脚16 (TRD1)、以便为 TI 的板载 ICDI 提供调试 UART 接口。" 我认为结果是前10个引脚与 Cortex 调试连接器兼容、后半部分添加了 UART0连接而不是跟踪信号、使其与标准 Cortex + ETM 连接器不兼容(几根跳线可以使其切换)。 我不知道使用该引脚的外部调试器、但在理论上它会提供 DEBUC+UART。
    • XDS110在其本机20引脚连接器上没有 UART 连接、但在单独的12引脚连接器上有 UART 连接(以及四个 GPIO 信号和其他一些东西)。 我看到的使用它的示例使用了跳线。
    • 在我看来、可以使用 UART 信号将两个引脚添加到 Cortex 接头(位于位置0和-1)。 未来的调试器可以使用12或22引脚电缆而不是10或20引脚电缆进行连接、而现有的调试器仍然可以正常连接。 该键仍可防止连接不正确。 我将任意建议引脚0是目标 MCU 传输到主机的 UART 数据、引脚-1是从主机传输到目标 MCU。

    显然、使用 UART0处理控制台和调试消息还有其他几种方法。 有关这些内容的一些信息来自 https://mcuoneclipse.com/2016/10/17/tutorial-using-single-wire-output-swo-with-arm-cortex-m-and-eclipse/ 及其链接到的页面。 我没有使用过其中的任何一种:

    • 如果目标支持 USB、并且您的软件可以进行足够的设置、则可以通过这种方式发送控制台/调试消息。
    • 如果使用 Segger J-Link (或预仿真 J-Trace)、则可以使用其实时传输(RTT)功能执行双向 I/O。
    • 如果使用 SWD 而不是 JTAG 进行调试、则调试消息可以通过 SWO 输出。 这应适用于 TM4C129和 XDS110。 如果这种方法运行得足够好、我可能不会关心 UART 连接、尽管这种方法仅用于输出(对于调试消息、可以、对于命令行界面、不可以)。 我认为它可能支持在单独的"渠道"上发表不同类型的信息、这是很方便的。 是否有人会说这种方法与使用 UART0的方法相比如何、特别是在传输速度和使其在无阻塞的情况下运行的能力方面(缓冲器的中断驱动输出)? 在 https://software-dl.ti.com/ccs/esd/documents/xdsdebugprobes/emu_swo_trace.html 上查看函数 port_wait()的实现情况,可以很清楚地看到它可以轮询。 但它是否具有硬件 FIFO? 当 FIFO 空(或当前传输完成)时是否有一个可以触发的中断? 在 MCU 数据表中、我似乎找不到有关 ITM (仪表跟踪宏单元)硬件的大量信息、这些硬件会发出记录消息。 是否有其他参考文档? 是否有人编写了一个修改后的 printf (在概念上类似于 UART 的 UARTprintf)来利用它? 在示例代码中、调用函数 ITM_PLOT_string 的格式相当难看、但也许可以直接换行更好的内容。

    因此、在我看来、选择 CTI-20连接器的主要原因是您不需要适配器即可将其与 XDS110 (和类似的)调试器配合使用。 但大多数人使用10引脚 Cortex 调试连接器、如果您需要跟踪、则可以使用20引脚 Cortex + ETM 连接器、只需插入一半即可获得与10引脚版本相同的调试接口、 或者、您可以插入整个调试+跟踪项目(使用同时支持这两者的调试器)。 这些都不支持用于调试/控制台消息的 UART 连接(对 Cortex + ETM 引脚进行非标准修改除外)、但也有其他选项(单独的接线或使用调试硬件接口的多个选项)。

    SWO 提供的任何跟踪功能都可以使用任何调试器连接器来访问、SWO 与上述基于外部硬件的跟踪完全独立。 您必须使用 SWD 而不是 JTAG 模式以及支持 SWO 跟踪的调试器(例如 XDS110)。

    我是否得到了所有这些正确的结果? 我是否错过了重要的内容? 是否有人使用 SWO 跟踪输出调试消息? 是否有人知道、通过 SWO 支持的 CCS 中的"自定义内核跟踪"配置是否支持崩溃后的反向跟踪、无论是使用 CCS 还是使用其他调试器软件?

    我当前的计划是实施20引脚 Cortex + ETM 连接器(可能添加了 UART 引脚)、并将 XDS110与适配器配合使用。 由于 SD/SWO 信号相对较慢、我认为适配器可以。 我将尝试 SWO 跟踪并查看它为我提供的内容。 如果我需要基于硬件的跟踪、我应该能够获得一个 J-Trace 并将其直接插入。 这有道理吗? 与用于调试的 XDS110相比、低端 J-Link 是否更适合使用、原因是硬件不同或相关的软件功能?

    再次感谢您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Steve、

    XDS560v2 PRO TRACE 不支持 TM4C 上的 ETM。  

    我个人的意见是从 XDS110开始。  它很便宜。  根据您的20引脚 Cortex 计划、您只需将110连接到接头的调试半部分即可。  110附带 cTI20至 Cortex 10适配器。  我一直在使用它们。  如果需要、您可以选择购买 SEGGER J-Trace Cortex M 并将其连接到完整的20引脚接头。

    如您所见、独立 XDS110具有一个小分线板、该分线板具有可将 UART 连接到的引脚。  因此、您只需在电路板上暴露几个引脚、然后将电线连接到分线板、而不必担心标准 Cortex 20上的引脚混乱。

    此致

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="227181" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1052701/tm4c1290ncpdt-supporting-trace-on-the-tm4c129/3900668 #3900668")是否有人可以谈一谈这种方法与使用 UART0方法相比有何不同、特别是在传输速度和使其在无阻塞的情况下运行(缓冲器的中断驱动输出)方面? 在此处查看函数 port_wait()的实现[/quot]

    CCS/MSP-EXP432E401Y:如果尝试选择832个周期(或更低)的采样间隔 、使用 XDS110进行统计函数分析会导致 CCS 挂起、并提供一些有关先前测试中所见 SWO 波特率的信息。 使用 XDS110和 TM4C129器件:

    • 在 Windows 下、SWO 波特率设置为 15 Mbaud
    • 在 Linux 下、SWO 波特率设置为 4Mbaud

    不确定自上次调查以来是否有任何变化以提高 XDS110的可用波特率。

    引用的线程还突出显示了 XDS110具有比 XDS200更高的 SWO 跟踪性能。

    至于 CAN、SWO 可被中断驱动以发送消息、  根据 ARM 论坛上的 Cortex M3 ITM 跟踪、答案是否定的

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢切斯特对此采取后续行动。  遗憾的是没有中断。  也许15Mbaud 足够快、我不在乎它是否会阻止一点。  当发生崩溃时、最好是所有已打印的消息都已输出、而不仅仅是处于等待发送的缓冲区中。  如果非阻塞真的很重要、我想计时器中断可以从缓冲器中拉取并馈入 ITM;它可能真的必须经常触发(假设硬件 FIFO 很少/没有)。  如果它足够频繁地触发、它基本上将成为阻断(除了更高优先级的中断)。  有趣!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、Johns。  这样做会让我的选择保持开放;如果/何时合理、我可以花更多的钱进行追踪。   

    自从我上次编写以来、我发现了一组 YouTube 视频、这些视频非常证实了我们在本主题前面讲过的内容。  这些文档比我找到的所有书面文档都更加简单。   Lauterbach 的视频特别好(我将在另一条消息中提供链接)。  我认为 TI 最好更新他们的现有文档(而不仅仅是创建其他内容)以澄清问题。  一个显示各种调试器和连接类型支持哪些功能和不支持哪些功能的表将是一个很好的起点。  至少应包含如下信息:

    • ICDI 调试器(如停产的 XDS100和内置于 TM4C12x Launchpad 中的调试器):非常慢。  支持 JTAG 调试、但不支持 SWD、因此不支持 SWO 跟踪。  至少需要四个 JTAG 引脚、这些引脚通常可通过10引脚0.05英寸 Cortex 调试连接器进行访问(但请参阅20引脚 Cortex+ETM 连接器上的以下信息)。
    • SWD 调试器(如 XDS110和 XDS200)。  它们还支持 JTAG 调试、但通常用于 SWD 模式、该模式仅使用 JTAG 使用的四个引脚中的两个来提供类似的调试功能。  上面提到的任一连接器都可以 支持 JTAG 和 SWD。
      • 某些 Cortex-M3/M4 MCU (但不是 TM4C12x)提供 ETB (嵌入式跟踪缓冲器)、该 ETB 可将(有限数量的)指令跟踪信息存储在 MCU 的内部存储器中。  它可用于从崩溃中进行追溯等操作、以查找崩溃前立即采用的代码路径。  ETB 信息可使用 SWD 管脚读取、因此无需额外的硬件。  请勿将 ETB 与 ETM 混淆(更多内容如下)。
    • TM4C129支持 SWO 跟踪、它提供 了许多有用的功能(遗憾的是不包括指令跟踪)。  它仅在使用 SWD (而不是 JTAG)模式进行调试时可用、因为它重用了 SWD 不需要的 JTAG 信号之一作为 SWO 输出。  因此、如果您为 JTAG 连接调试连接器、则可以使用 SWD 和 SWO。  XDS110和 XDS200都支持 SWO;XDS100和 TM4C12x Launchpad 的 ICDI 调试器不支持 SWO。  有关 SWO 跟踪可以执行的操作的更多信息、请参阅 https://www.youtube.com/watch?v=HG_i_uln6Es。  
    • TM4C123确实支持使用来自 MCU 嵌入式跟踪宏单元(ETM)的五个额外信号(即 TRD0-3和 TRCLK)的指令跟踪。  在10引脚 Cortex 调试连接器上没有空间放置它们、但在20引脚 Cortex+ETM 连接器上有空间。    有关连接任一连接器的信息,请参阅 SPMA056。  20引脚连接器的一半非常方便、与10引脚连接器完全相同、因此如果您不使用 ETM 走线、可以将10引脚调试连接器插入20引脚接头的一侧。

    如果使用10引脚连接器(或20引脚的一半)、XDS110调试器可能是 TI 的最佳选择、可能甚至比(更昂贵) XDS200更好。  SEGGER J-Link 调试器是另一种常用的选择。  优点和缺点...???

    如果使用20引脚 Cortex+ETM 连接器、上述调试器选项将用于调试、但不提供指令跟踪。  

    • TI 显然不销售能够进行跟踪的调试器、因此您必须向第三方寻求。  使用第三方调试器的一个优势是它也可以与其他品牌的 Cortex-M MCU 配合使用。  一些公司似乎还销售适用于 Cortex-M 和其他(可能是多核) MCU 的调试器。
    • SEGGER J-Trace Pro Cortex M 将提供跟踪功能、 看起来非常常见。  虽然基本调试应在 CCS 中工作、但为了充分利用跟踪功能、您可能需要使用 SEGGER 的臭氧软件(如果您有调试器、则无需为此付出任何代价)。
    • Keil 同样专门为 Cortex-M MCU ( ULINK-Pro)制作调试器。  他们还制作了一个工具链(IDE、编译器等)、这是 CCS 的替代方案。  我不知道 CCS 是否与调试器一起工作。
    • Lauterbach 是 Cortex-M MCU 的 uTrace 调试器。  它可与他们的 TRACE32软件配合使用。  我不知道它是否适用于 CCS。
    • 可能还有其他一些。  很抱歉我错过了你。

    请注意、XDS110使用一个20引脚的连接器、此连接器的引脚排列与 Cortex+ETM 连接器不同。  它通常不包含 ETM 信号、因此为了支持布线、应使用其中一个 Cortex 连接器和引脚。  XDS110确实附带适配器、这些适配器将与任一 Cortex 连接器一起使用。

    最好对所有调试器选项进行速度比较、但我没有该信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于任何试图深入挖掘、重新跟踪我的步骤或更新文档(请!)的人、这些 URL 会指向我找到的大多数 TI 信息:

    此主题中的其他人引用了这些内容:

    我最近发现了以下内容:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="227181" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1052701/tm4c1290ncpdt-supporting-trace-on-the-tm4c129/3900668 #3900668"]是否有人知道 CCS 中受 SWO 支持的"自定义内核跟踪"配置是否支持在崩溃后使用 CCS 或其他调试器软件进行反向跟踪?

      输出 SWO 消息的 Cortex-M ITM 的限制是、唯一的自动 PC 采样操作是"统计"采样、在这种采样中、电流 PC 以常规间隔进行采样。 这适用于分析以查看不同函数中所见时间的百分比、但不足以确定回扫轨迹、因为可能会错过某些分支。

    我找到    了 Lauterbach 的 Cortex-M 跟踪培训和 ARM-ETM 培训、其中包含有关跟踪的更多信息、对此进行了解释。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。  一旦您进行了整理、一切都是有意义的、但直到那时、它还是相当令人困惑的:

    • 如果 MCU 有 ETB、它可以仅通过两个 SWD 引脚输出指令跟踪信息。  但 TM4C129没有 ETB。
    • 通过使用 SWO 引脚、您可以执行"SWO 跟踪"、该跟踪只能对 PC 进行周期性采样、因此对指令跟踪不有用。
    • 如果 MCU 具有 ETM、则可以驱动一个额外的时钟线和四条跟踪线、其中包含允许外部调试器执行指令跟踪的信息。  但 TI 的调试器不支持、TI XDS110调试器使用的20引脚 TI CTI 连接器不支持这些信号、而支持跟踪(用于其他 MCU)的 TI 调试器使用的60引脚连接器通常不受支持 TM4C129上跟踪的第三方调试器的支持。

    感谢帮助我解决所有问题!

    Steve