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.

[参考译文] TDA4AH-Q1:J784S4 GPIO 示例未显示调试打印、一直等待 GPIO 中断

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1654711/tda4ah-q1-j784s4-gpio-example-is-not-displaying-debug-prints-and-stuck-waiting-for-gpio-interrupt-forever

器件型号: TDA4AH-Q1

您好、

我正在开发 J784S4 评估板。 我使用调试配置文件和 FreeRTOS 重新编译了 PDK。

我运行了 GPIO 示例并逐步运行 main_led_blink.c 代码。  

问题 1:当我放置断点(例如在“GPIO_TEST“函数的开头)并点击“Run“时、代码会运行、但绝不会在断点处停止。

 

问题 2:当我单步执行 GPIO_LOG () 和 UART_printStatus () 行时、它们不会打印到控制台。 我有 6 个 Putty 实例打开监视/dev/ttyUSBx、其中 x 是 0、1、2、...、5。 我在任何控制台上都看不到任何调试消息。

示例:这些不会打印到我的 Putty 控制台。

 gpio_log(“\n--------- GPIO LED 闪烁应用程序---------------- \n“);
  uart_printStatus(“\n 等待中断发生...\n“);

在下面的屏幕截图中、您可以看到/dev/ttyUSB 上没有输出[0 至 5]

image.png

问题 3:该示例似乎等待用户按下 2 个按钮 (WKUP_GPIO0_6 和 MAIN_GPIO0_11)、但这些按钮似乎不起作用。 我尝试按压所有开关、代码永远不会中断。

  而 (wkup_gpio_intr_tr_figgered == 0u)   <--永远在这里等待或直到我强制“wkup_gpio_intr_tr_figgered“为 1。
  {
     
  }
  UART_printStatus(“\n WKUP GPIO 已切换!! \n“);
  而 (MAIN_GPIO_intr_triggered == 0U)    <--按下 SW3 不会触发中断并更改此值。
  {
     
  }

在下面的屏幕截图中、代码一直等待“wkup_GPIO_intr_triggered“更改为 1、但不按开关会触发中断/回调函数将值更改为 1。

image.png

从 J784S4 原理图可以看出 WKUP_GPIO0_6 连接到 OSPI 而不是开关。 因此、J784S4 板的 WKUP_GPIO0_6 可能不正确。  

image.png

可能需要使用 J784S4 EVM 用户指南表 2-9 中的其他开关之一、例如 SW5 (WKUP_GPIO0_7) 或 SW6 (WKUP_GPIO0_0)。image.png

对于“MAIN_GPIO_intr_triggered“、开关 SW3 “MAIN_IO_RET“应正常工作、因为代码配置 MAIN_GPIO_PIN_NUM = 11(对应于 SW3)、但按下 SW3 不会触发中断/回调。

image.png

 

 

 

 

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

    尊敬的 Deci:

    您使用的是哪个 SDK 及其版本?

    您是否尝试过使用发布配置文件而不是调试?

    由于周末、预计会有一些延迟。

    此致、

    Vinit

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

    PSDK 11_02_00_06
    PDK 11_02_00_15

    一些其他信息。 电路板初始化似乎失败、因为 Board_init (boardCfg) 返回非零值(–6)。

    我添加了一些调试打印(在 CIO 控制台中正确记录)、以确定 Board_init (boardCfg) 失败的原因。

    在 Board_init (boardCfg) 中、返回非零值的函数为“Board_moduleClockInitMcu()“(如下突出显示。 参见行 243)。 它返回–6、表示 Board_moduleClockInitMcu () 正在失败。

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

    尊敬的 Deci:

    我将尝试在我们这边重现这一点并分析问题。

    同时、 我建议您尝试使用 wkup_gpio0_3 而不是 wkup_gpio0_6、并告诉我您能得到什么。

    除此之外、您是否尝试过使用发行版配置文件而不是调试配置文件? 如果是、则版本配置文件是否有任何问题?

    Reards、

    Vinit

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

    我在“版本“中重新编译了 SDL 和 PDK 以及示例。 该示例现在可以正常工作。

    但是、我们需要在 调试 模式下进行编译、以便能够调试示例和我们的应用。 我们需要使用 debug 模式来关闭编译器优化 (-O0)、以便能够单步执行 C/汇编代码的每一行。 释放模式会优化代码、使调试和单步执行代码变得困难。


    问:如何编译为调试模式(即关闭优化)以便 调试 C 代码?




    FYI 以下 是我编译 SDL、PDK(包括示例)以用于调试模式的方式:

    #在调试模式下重建 SDL(否则由于  SDL 错误、PDK 编译将不会编译):

    $ cd ~/ti/ti-processor-sdk-rtos-j784s4-evm-11_02_00_06/sdl

    $使清洁&&使一切清洁

    make all core=mcu1_0 profile=debug SOC=j784s4 build_os_type=freeRTOS



    #在调试模式下重新编译 PDK :

    $ cd ~/ti/ti-processor-sdk-rtos-j784s4-evm-11_02_00_06/pdk_j784s4_11_02_00_15/packages/ti/build

    $ make -s All BOARD=j784s4_evm build_profile=debug




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

    您好、

    您是否正在运行多个应用程序以导入、如果是、您是否已确认其中的内存没有过载?

    [引述 userid=“667982“ url=“~/support/processors-group/processors/f/processors-forum/1654711/tda4ah-q1-j784s4-gpio-example-is-not-displaying-debug-prints-and-stuck-waiting-for-gpio-interrupt-forever/6383269

    FYI 以下 是我编译 SDL、PDK(包括示例)以用于调试模式的方式:

    #在调试模式下重建 SDL(否则由于  SDL 错误、PDK 编译将不会编译):

    $ cd ~/ti/ti-processor-sdk-rtos-j784s4-evm-11_02_00_06/sdl

    $使清洁&&使一切清洁

    make all core=mcu1_0 profile=debug SOC=j784s4 build_os_type=freeRTOS



    #在调试模式下重新编译 PDK :

    $ cd ~/ti/ti-processor-sdk-rtos-j784s4-evm-11_02_00_06/pdk_j784s4_11_02_00_15/packages/ti/build

    $ make -s All BOARD=j784s4_evm build_profile=debug

    [/报价]

    您可以单独构建所需的应用调试配置文件、而无需这样才能在 PDK 中构建所有模块。

    此致、
    Sudheer

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

    仅一个应用 (1 个内核。 R5F mcu1_0)。

    好的。 感谢您的建议。 Vinit 在“发布“模式下编译 PDK 的建议似乎解决了问题。  现在似乎可以调试和单步执行源代码。  

    感谢大家的帮助