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.

[参考译文] J721EXCPXEVM:R5F 内核 (MCU3_0) 和 A72 (Linux) 之间的 GPIO0 中断路由

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1574352/j721excpxevm-gpio0-interrupt-routing-between-r5f-core-mcu3_0-and-a72-linux

器件型号: J721EXCPXEVM

工具/软件:

我想知道在 A72 加载 Linux 的情况下、从 R5F 内核访问外部 GPIO 引脚的可能性。 RTOS SDK 中有 main_led_blink.c 演示文件 (10.01)、我之前处理过该文件、中断等、但这会使用 WKUP 域 GPIO 和一个带有主 GPIO1(适用于 J721e)。 我有一个 GESI 板、可以很轻松地将几个接头引脚引脚引脚多路复用到 GPIO(一些 MCAN0 和 SPI3_CS2)、所有这些引脚都在 MAIN_GPIO0 中。 如果只有 R5F 内核正在运行、但如果 Linux 内核正在运行、则将这些引脚用作演示和设置中断似乎可以正常工作、这样做会使 Linux 启动停滞。

我将使用可以使用提供的 Yocto 项目构建的基本 Arago 映像。 您能否确认 Linux 正将 MAIN_GPIO0 用于其自身目的、以及我确实遇到某种中断资源争用的情况?

其次、如果是这种情况、R5F 内核是否绝对无法在中断方面完全访问 GPIO0?

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

    尊敬的 Tyler:

    [报价 userid=“652899" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1574352/j721excpxevm-gpio0-interrupt-routing-between-r5f-core-mcu3_0-and-a72-linux

    我有一个 GESI 板、可以很轻松地将几个接头引脚引脚引脚多路复用到 GPIO(一些 MCAN0 和 SPI3_CS2)、所有这些引脚都在 MAIN_GPIO0 中。 如果只有 R5F 内核正在运行、但如果 Linux 内核正在运行、则将这些引脚用作演示和设置中断似乎可以正常工作、这样做会使 Linux 启动停滞。

    我将使用可以使用提供的 Yocto 项目构建的基本 Arago 映像。 您能否确认 Linux 正将 MAIN_GPIO0 用于其自身目的、以及我确实遇到某种中断资源争用的情况?

    [/报价]

    您使用哪些 GPIO0 引脚? 您是正确的、Linux 将 GPIO0 引脚用于自身目的、这是所有内核之间的共享资源、因此、一些使用的 GPIO0 引脚可能会导致冲突。 这个问题很可能是由于中断资源争用造成的。 您的引导模式是什么?

    在主内核和 MCU R5 内核上运行的 RTOS PDK 支持分组中断以及线路中断。 但是、运行 A72 的 Linux 只支持我们 TI SDK 中的分组中断。 因此、务必确保不要将相同的分组中断用于多个内核、否则您可能会看到发生错误的中断。 例如、对 MCU R5 使用 GPIO0_0 上的中断并对主 R5 使用 GPIO0_1 上的中断会导致错误中断、因为 GPIO0_0 上的任何中断都会触发整个 GPIO_BANK0。 同样、这也可在 A72 和 MCU R5 上发生。 请查看此常见问题解答、了解更多 GPIO 信息。

    其次、如果是这种情况、R5F 内核是否绝对没有办法在中断方面完全访问 GPIO0?

    您是指通过中断完全控制所有 GPIO0 引脚吗? 如果是这样、则可以将默认 Linux 映像操纵到该保留空间并使用特定的 GPIO0 引脚。 同样、EVM 原理图中使用了一些 GPIO0 引脚、这些引脚被保留。

    谢谢、

    Neehar

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

    我尝试使用引脚 GPIO0_17、_18、_20、_26 和_53、 因为这些 GPIO 可能暴露在 GESI 板的接头 (J11、J13、J5) 上、并存在一些多路复用。

    您的引导模式是什么?

    SD 卡模式、 https://ceslab-tda4.github.io/psdkra-docs/psdk_rtos/docs/user_guide/evm_setup_j721e.html#sd-boot-mode

    您是指通过中断完全控制所有 GPIO0 引脚吗? 如果是这样、则可以将默认 Linux 映像操纵到该保留空间并使用特定的 GPIO0 引脚。 同样、EVM 原理图中使用了一些 GPIO0 引脚并保留。

    是的、这就是我的意思。 我花了一点时间来配置设备树、最终只在多个实例中启动了引导过程。 我只是不了解详细说明用于启动的引脚的文档。

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

    所以我一直使用上面提到的演示进行一些测试、虽然在没有引导模式时工作正常、但在 A72 运行时、SD 引导模式会发生一些中断。 没有任何更改、我看到 R5F 内核在演示中获取了第一个中断、但看起来在 Linux 启动过程中的某个时刻崩溃。 如果我更改它以将所有内容延迟 15 秒、它将运行并完成、但永远不会收到任何中断。 该演示使用 WKUP 域的两个引脚和 MAIN_GPIO1、因此也有一些干扰引脚。

    补充问题、根据我的理解、设备树通常不应用于配置、但我看不到除了用于配置 GPIO 引脚是否使用之外的任何其他内容 — 尽管我仍需要仔细阅读驱动程序代码,可以找到。 这是正确的、还是在设备树中处理了所有配置?

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

    尊敬的 Tyler:

    我已尝试使用引脚 GPIO0_17、_18、_20、_26 和_53、 因为这些 GPIO 可能暴露在 GESI 板的接头 (J11、J13、J5) 上、并存在一些多路复用。[/报价]

    您是否仅使用 GESI 板上的 GPIO 引脚进行了测试? 您是否测试过任何其他 GPIO 引脚?

    是的、这就是我的意思。 我花了一点时间来配置设备树、最终只在多个实例中启动了引导过程。 我只是不了解详细说明了启动时使用哪些引脚的文档。

    您需要查看的主文件如下:

    [linux_install_path]/board-support/ti-linux-kernel-6.6.32 + git-ti/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts

    该演示使用 WKUP 域和 MAIN_GPIO1 的两个引脚、因此有一些引脚也会干扰这些引脚。

    您能告诉我您使用的是哪两个引脚吗? 您使用的所有 WKUP 和 MAIN_GPIO1 引脚是否都会出现问题?

    这是正确的、还是在设备树中处理了所有配置?

    器件树用于显式描述将在应用中使用的硬件和 GPIO 引脚。 它将描述一些信息、例如哪些设备可用、它们的连接方式以及各种其他属性。 此信息将传递给驱动程序、驱动程序将执行实际配置。 虽然器件树不执行实际配置、但在这种情况下、了解它确切定义了正在使用哪些 GPIO 引脚非常重要。

    谢谢、

    Neehar

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否仅使用 GESI 板上的 GPIO 引脚进行了测试? 您是否测试过任何其他 GPIO 引脚?

    J721e 电路板上的许多 GPIO 用于其他器件、或者没有任何物理引脚输出。 我想我可以尝试一些未公开的东西、只需从代码中切换它以查看中断是否起作用。

    您要查看的主文件

    谢谢、我会再来看看。

    您能告诉我您使用的是哪两个 PIN? 您使用的所有 WKUP 和 MAIN_GPIO1 引脚是否都会出现问题?

    WKUP GPIO0 引脚 6 和主 GPIO1 引脚 6 是列出的引脚。 我还没有尝试这些引脚上的其他引脚、但我将尝试测试几个引脚。

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

    尊敬的 Tyler:

    我将等待您听到有关测试结果的消息。

    此外、请注意、如常见问题解答中所述、您可能希望对不同的内核使用不同的 GPIO 组。 为了实现良好做法、您还可以在不同内核上使用不同的 GPIO 实例基地址。 最后、如果您使用不同的 GPIO 基地址、则还需要使用正确的 VGPIO 更新 CTRL MMR padconfig 寄存器。

    谢谢、

    Neehar

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

    尊敬的 Tyler:

    接下来、该问题是否仍然存在?

    谢谢、

    Neehar

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

    据我从其他引脚可以看出、当 Linux 出现时、它们也会被取代。 仍在围绕器件树进行挖掘、看看会有哪些作用、但大多数情况下、我已经放弃了、尽管这并不理想、但还是将关键输出引脚暴露给在 Linux 环境中运行的代码中。  

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

    尊敬的 Tyler:

    感谢此更新、如果您需要任何进一步的帮助、请随时跟进 TT。

    谢谢、

    Neehar