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.

[参考译文] TDA4VH-Q1:CCS 获得的 C71调用栈信息不足

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1506784/tda4vh-q1-the-c71-call-stack-information-obtained-by-ccs-is-insufficient

器件型号:TDA4VH-Q1
Thread 中讨论的其他器件:TDA4VH

工具/软件:

硬件:TDA4VH
SDK:1001 Linux + RTOS

CCS:12.4.0

当我们调试 C71程序时、会发生崩溃。 但是、当我们使用 CCS 获取调用栈信息时、只能看到在 SECURE_SOFT_RESET 处停止、无法看到其他信息。 在 SECURE_SOFT_RESET 之前、我们如何查看调用栈信息?

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

    你(们)好

    我假设您在"无引导"模式下运行代码。 您能否确认您正在使用的构建类型—Debug 或 Release?

    此致、
    Sivadeep

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

    你(们)好

    我们使用 eMMC 引导模式是因为我们的功能需要所有内核完全运行、以及我们使用调试模式构建的程序。

    当程序崩溃时、我们通过 CCS 附加相应的内核、然后加载相应的符号。

    下图显示了在正常情况下捕获的调用堆栈。 我们希望在程序崩溃时也能看到这样的调用堆栈、而不仅仅是出现崩溃消息、这没有任何帮助。

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

    你(们)好

    这张图片捕获了 TC397到 UDE 的崩溃场景、我们可以看到 OS 已进入 OS_TRAP、但同时、我们也可以在进入 OS_TRAP 之前看到调用栈、 因此我们可以清楚地看到系统崩溃是由 g_test_flag 函数引起的。CCS 是否支持此功能?

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

    大家好、Hongyao、

    对于您遇到的场景、获取调用栈会相当困难、因为 CCS 将根据当前 PC 值和代码所属任务的栈进行调用栈分析。 异常的真正挑战是中断矢量是异常的触发、并且没有太多的调用信息可以顽固不化。

    通常、我们需要交叉检查运行日志和损坏 位置、以确定发生异常之前正在运行的任务。 然后添加 调试代码以进一步缩小范围、找出 根本原因。

    在某些情况下、ROV 可能会有所帮助。  请参阅以下链接:

    如何使用 TI 的 ROV 调试器来诊断和调试嵌入式软件程序崩溃

    - FreeRTOS 实时对象视图(ROV)

    BR、Tommy