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.

[参考译文] TDA4VP-Q1:无法单步执行代码、调试器卡在 appLogGetCpuSyncState 函数中

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1494386/tda4vp-q1-unable-to-step-through-the-code-debugger-stuck-in-apploggetcpusyncstate-function

器件型号:TDA4VP-Q1

工具/软件:

我想使用 XDS110来调试 MCU1_0代码。 我已使用包含调试符号的固件刷写 MCU1_0。 MPU 上有 QNX。  一旦我启动调试会话,我看到代码卡在循环中,永远不会进入 main.c 中的任务。 我想调试写在 main 中的任务。 它被卡住的文件是 SDK 的一部分、并非由我们编写、似乎正在进行一些同步。  

此外、当我使用调试符号构建 tispl 时、它的大小相当大、因此我在控制台上收到以下消息、并且 QNX 也无法引导。  

如何解决此问题并逐步执行代码。

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

    您好、

    Unknown 说:
    我已使用调试符号刷写了 MCU1_0的固件。

    您是否在调试或释放模式下构建了固件? 我希望您知道 MCU1_0也运行 DM、因此停止该内核可能会影响调用 SCIclient API 的其他内核。

    我想调试写在 main 中的任务。 它被卡住的文件是 SDK 的一部分、并非由我们编写、似乎正在进行一些同步。  [/报价]

    您能否共享整个调用堆栈? 您分享的图片被截断。  

    另外、请告诉我们您尝试对 MCU1_0固件映像进行调试的内容。  

    此外,当我用调试符号构建 tispl 时,它的大小相当大,因此我在控制台上收到以下消息, QNX 也无法启动。  [/报价]

    这可能是、也可能不是由调试符号导致;我们怀疑这是由于您创建的 MCU1_0映像损坏、这可能不允许 SCI 服务器初始化和为 SPL 调用的请求提供服务。

    谢谢。

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

    "您是否在调试或释放模式下构建了固件?"

    代码内置在调试模式下

    "您可以共享整个调用堆栈吗?  "

    我有一个任务正在控制一些 GPIO、我想逐步完成这个任务。 调用堆栈不显示 此任务。 此任务写入 main.c 文件

    "这可能是、也可能不是由调试符号导致;我们怀疑这是由您创建的 MCU1_0映像损坏造成的"

    如果我在释放模式下构建代码、则固件运行正常。  

    "我们怀疑这是由于您创建的 MCU1_0映像损坏、这可能不允许 SCI 服务器初始化和为 SPL 调用的请求提供服务"  

    在这种情况下、在 MCU1_=上开发固件时、建议采用的调试方法是什么

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我有一个任务是控制一些 GPIO、我想逐步完成这个任务。 调用堆栈不显示 此任务。 此任务是用 main.c 文件
    编写的。

    好的、明白。  原因是执行已通过您的代码、最终将在线程"appMain"->"AppInit"->"appLogCpuSyncInit()-> appLogCpuSyncWithMaster ()中结束。  如果您希望调试您的代码、我建议您在任务中执行以等待(例如执行 while (1)循环)、或在"main"函数的前面添加这个等待循环。 这样、您可以退出 while (1)循环、并根据需要调试代码。

    谢谢。

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

    我已经禁用了同步函数,它会导致代码进入任务,但 它不会跳到我的断点非常可靠.  我没有完全得到你的最后一个答复。 应在何处添加环路。 此外 、ospi、tiboot3.bin、tispl 和 uboot.img 中有3个二进制文件。 随着代码的不断增长、我将向其添加调试符号、带调试符号的代码大小变得超过2MB。  是固定的还是可以更改。 如何提高 tispl 的尺寸限制。 我们使用的是 NOR 闪存。  

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

    理想情况下、我们建议在您尝试调试的 DM 映像的主函数开始时添加它。 如果尺寸不断增大、请自定义并削减功能以调试您看到的问题。 您可以稍后再添加。

    对于标准配置、分区是固定的。 但是、它们可以根据需要进行更改、但这需要更改闪存工具脚本、并且也会影响 U-boot SPL 代码。 我们不建议这样做,但如果你想这样做,这是由你决定的。

    谢谢。