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.

[参考译文] CCS/TCI6638K2K:无法在运行 Linux 和 SYSBIOS 的板上捕获 ARM 和 DSP 正确的 PC 跟踪

Guru**** 2988540 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/911739/ccs-tci6638k2k-unable-to-capture-arm-and-dsp-proper-pc-trace-in-board-running-linux-and-sysbios

器件型号:TCI6638K2K
Thread 中讨论的其他器件: SYSBIOS

工具/软件:Code Composer Studio

您好!

电路板详细信息:-

SoC:- tci6638K2K

CCS 版本:6.1.

Linux 操作系统:Ubuntu 14.04 x64

TI JTAG:XDS 560v2

我们运行的是 用于 ARM 内核的 Linux 内核、以及用于 DSP 内核的 SYSBIOS。 我们希望获取 ARM 和 DSP 内核的 PC 跟踪。

对于 DSP、我看到了两个观察结果:

1->当 使用 mpmcl 从 Linux 运行 DSP SysBIOS 二进制文件时、载入 dsp1 dsp_image.out;mpmcl 运行 dsp1

我收到错误消息: “电脑坏了,当前的导出帧。”

2->直接从 JTAG 运行 DSP SysBIOS 二进制文件时、我将获得正确的 PC 跟踪。

对于在运行 Linux 的 ARM 上运行的应用程序:

我收到错误:"FIFO 溢出、开始跟踪、程序流重建中的间隙"

0xC051E588 68 207. FIFO 溢出、跟踪开始、程序流重建中的间隙 ANDEQ R0、R0、R0、LSR #32 0xC051E588 3.23E+09 0
0xC051E588 275. 61. ANDEQ R0、R0、R0、LSR #32 0xC051E588 3.23E+09 0
0xC051E59C 336. 113 ANDEQ R0、R0、R0、LSR #32 0xC051E59C 3.23E+09 0
0xC052018C 449. 2. ANDEQ R0、R0、R0、LSR #32 0xC052018C 3.23E+09 0
0xC051E5D0 451. 4. ANDEQ R0、R0、R0、LSR #32 0xC051E5D0 3.23E+09 0
0xC0054204 455 23 ANDEQ R0、R0、R0、LSR #32 0xC0054204 3.22E+09 0
0xC051E64C 478 4. ANDEQ R0、R0、R0、LSR #32 0xC051E64C 3.23E+09 0
0xC051E80C 482. 5. ANDEQ R0、R0、R0、LSR #32 0xC051E80C 3.23E+09 0

 

请在此处提供您的帮助。

谢谢、

Rahul Ravi

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

    Rahul、

    有些图像没有经过。 是否可以按照以下主题中所示的说明重新发送?

    https://e2e.ti.com/support/site-support/f/1024/t/761613 

    尽管如此、我怀疑 Linux 没有正确地将 ETB 中的数据传送到 JTAG。 这是在建立"BareMetal"连接时由 GEL 初始化脚本执行的、因此这将解释您在直接使用 JTAG 加载代码时获得的信息为何正确。

    另一个方面是、Linux 可能会使用 MMU 重映射或保护存储器、从而导致 ETB 功能失败。 通常、Linux 内核配置具有一些构建选项、允许 ETB 正常工作。 这需要重建内核。

    遗憾的是、我没有与您相同的电路板来尝试、但如果器件专家有其他见解、我将与他们联系。  

    此致、

    拉斐尔

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

    您好、Rahul、

    要使用 mpmcl 下载的 DSP 映像需要具有资源表、以便 ARM Linux 知道 DSP 将使用的区域。 它将不同于直接在 DSP 上使用 CCS 运行.out 文件。 有关资源表的更多信息、请参阅中的资源自定义表部分

    http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#resource-custom-table

    雷克斯

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

    您好、Rafael、

    感谢您的支持。

    请找到所附的快照

    1->DSP PC 跟踪给出错误的位置

    2->正在工作的 DSP PC 跟踪。


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

    Rahul、

    请对延迟表示歉意、并感谢您发送照片。 错误消息表示跟踪 GUI 接收到的数据损坏、因此我想 Linux 配置可能正在播放破坏此功能的部分-您是否尝试查看内核是否具有启用 ETB 的配置? 我记得在较旧的内核中、这是一个选项、但我有一段时间没有这么做。  

    我将尝试寻找可能触发这种情况的其他方案、并在发现任何相关问题时进行报告。  

    此致、

    拉斐尔

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

    您好、Rafael、

    感谢您的回复。 我尝试通过在.config 文件中添加以下两个配置参数来在 Linux 内核中启用 ETB

    CONFIG_ARM_AMBA=y

    CONFIG_OC_ETM = y

    配置 OC_ETM
           bool "on-chip ETM 和 ETB"
           取决于 ARM_AMBA
           帮助
             启用片上嵌入式跟踪宏单元和嵌入式跟踪
             缓冲器驱动程序、它允许您收集的跟踪
             内核代码。

    但是在构建时、CONFIG_ARM_AMBA=y、 CONFIG_OC_ETM =y 会从.config 文件中删除。

    这意味着该 SoC (tci6638K2K)不支持这两个参数。

    请提供您对此的评论、并指导我如何在内核中启用 ETB。

    此致、

    Rahul Ravi



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

    您好、Rahul、

    我将了解一下 Linux 配置、但我目前很忙、因此最早的时间将是下周的某个时间。   

    雷克斯

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

    您好、Rahul、

    我看不到问题。 该 EVM 运行 Linux 处理器 SDK 6.1版本内核4.19。 CCS 为9.1。

    请参阅随附的 PC 跟踪屏幕截图。

    雷克斯

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

    尊敬的 Rex:

    如果 我直接从 XDS560仿真器加载 DSP 二进制文件、我还能够以可解码格式获得 DSP 的 PC 跟踪。

    但是、如果使用 mpmcl 命令从 Linux 加载 DSP 二进制文件、我将无法对捕获的 PC 跟踪日志进行解码。

    现在、我更感兴趣的是捕获可以解码的 ARM PC 跟踪日志。

    此致、

    Rahul Ravi



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

    您好、Rahul、

    我们就这个问题进行了内部讨论、并希望您尝试一些事情、以及一些有关您的问题的问题:

    1) 1)对于不起作用的情况,是否在开始跟踪会话之前加载应用程序的符号?  如果加载了符号、则跟踪解码器会将.out 用于程序映像、作为解码…的一部分。否则、跟踪解码器将被强制从存储器中读取。  我建议在开始跟踪会话之前加载符号。

    2) 2) 位于非工作用例的"程序地址"列中的地址是否与应用程序中的有效可执行代码段相关联? 该位置的操作码是否真的是 NOP 1 (0x00010000)–如反汇编列中所述?

    3) 3)最新版本的 CCS 是否会出现此问题? 6.1版非常旧。

    4) 4)您是否可以尝试加载预编译 IPC 示例、而不是加载 DSP 应用。 MessageQ_single.xe66、/lib/firmware/ipc 以查看问题是否仍然发生?

    谢谢!

    雷克斯

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

    尊敬的 Rex:

    由于时间限制、我们目前专注于 ARM 端调试并查找挂起的原因、因此、如果您可以帮助处理 ARM 端跟踪、以便我们可以分析 ARM 进入挂起的原因。

    此致、

    Rahul Ravi