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.

[参考译文] AM6421:当 Linux 在 A53 内核上运行时在 R5F 内核 (AM64xx) 上集成 IPC 和 GPIO 中断时出现问题 — Board_gpioInit 失败

Guru**** 2427780 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1542361/am6421-issue-integrating-ipc-and-gpio-interrupt-on-r5f-core-am64xx-while-linux-is-running-on-a53-core-board_gpioinit-fails

器件型号:AM6421
主题:SysConfig 中讨论的其他器件

工具/软件:

尊敬的 TI 专家:

我使用的是基于 AM64xx 的平台、其中 A53 内核运行 Linux、R5F 内核运行 RTOS 应用程序。 我当前正在尝试在 R5F 内核上将 IPC 示例与 GPIO 中断示例集成。

以下是设置:

  • A53 内核运行 Linux。

  • R5F 运行 IPC + GPIO 中断代码。

  • 使用的 GPIO 引脚是 GPIO0_38 (GPMC_WAIT0、焊球 Y18)。

  • 在 R5F 上为 IPC 和 GPIO 正确完成了 SysConfig 设置。

  • 仅 IPC 代码运行正常。

不过、一旦我将 GPIO 中断部分集成到 IPC 代码中、即应用 失败 BoardGpio_init()R5F 上运行。 我在下面附上了一个屏幕截图、其中显示了来自 R5F 内核的错误日志:


我已经尝试过的:

  • 已禁用 Linux 器件树中的 GPIO 节点、以确保 Linux 不会接触 GPIO0_38。

  • 已尝试使用不同的 GPIO 引脚。

  • 尝试改用 MCU 域 GPIO。

  • 已验证 GPIO 中断的 SysConfig 设置是否正确。

这些更改均不能解决问题。 GPIO 中断示例独立工作、IPC 示例也是如此、但集成会导致 GPIO 初始化时出现故障。

请提供以下建议:

  1. BoardGpio_init()在这种情况下、什么可能导致失败?

  2. 混合 IPC 和 GPIO 中断是否有限制?

  3. Linux DT 或 R5F 固件中是否需要进行任何其他更改来访问共享外设?

提前感谢!

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

    Yogesh 您好

    通常、我们不支持控制同一外设实例的 Linux 和 MCU+内核。 因此在本示例中、如果 R5F 内核或内核使用 GPIO0、则应在 Linux 器件树中禁用 GPIO0、而 Linux 只应使用 GPIO1 或 MCU_GPIO0。

    您是否已经按照我在 AM64x Academy 中介绍的所有步骤来获取与 Linux 一起运行的 R5F 示例?
    多核>远程内核上的应用开发
    https://dev.ti.com/tirex/explore/node?node=A__AfSHr0vWbFdGCnmoPeMXzg__AM64-ACADEMY__WI1KRXP__LATEST

    另一个需要注意的是 K3 资源分区工具中的 GPIO 中断分配。 根据引导流程中的默认电路板配置设置、除非您修改设置、否则中断可能不会进入正确的内核。

    1) 您使用的引导流程是什么? (SPL 与 SBL)、请参阅 AM64x Academy:
    多核>引导和禁用处理器内核>引导流程:SPL 与 SBL
    https://dev.ti.com/tirex/explore/node?node=A__AXfgOBMVhJy5K0DPeNFSPQ__AM64-ACADEMY__WI1KRXP__LATEST 

    2) 您使用的是哪个版本的 SDK?

    此致、

    Nick

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

    您好、Nick、

    感谢您的详细答复和建议!

    要回答您的问题:

    1. 启动流程 :我正在使用 Linux SDK 版本 11.00.09.04 通信 SPL 引导流程 (不是 SBL)。

    2. MCU+ SDK 版本 :我正在使用 MCU_PLUS_SDK_am64x_11_00_15

    ​主控制器

    我需要为使用 3 个 GPIO 引脚 互操作性中断 在 R5F 内核上:

    • GPIO0_38(焊球 Y18)

    • GPIO1_12(焊球 Aa3)

    • GPIO1_68(焊球 D18)

    不过、 GPIO0 和 GPIO1 组上的其他 GPIO 中也使用了这种技术 这些工作 正常输出/输入(非中断)引脚一样。 因此、在 Linux 器件树中完全禁用 GPIO0 或 GPIO1 组会破坏 Linux 端功能。

    问题:

    是否可以继续在 Linux 中使用 GPIO0 和 GPIO1 组来正常使用 GPIO、并仅配置特定的 GPIO 引脚(如上面的三个引脚)以在 R5F 内核上使用中断?
    换句话说、如果我们正确协调访问、我是否可以在 Linux(适用于基本 GPIO)和 R5F(仅适用于中断)之间共享 GPIO 组?

    关于 K3 资源分区工具

    我看到您关于中断路由的注释可能需要更改。 我提到过以下 TI 常见问题解答:

    常见问题解答:AM64x:如何在 Linux 在 A53 上运行的情况下为 r5fss0-0 运行 MCU_SDK GPIO_INPUT_INTERRUPT 示例

    但当尝试遵循这种方法并对电路板配置应用更改时、我会在重建时遇到构建问题boardcfg。 该错误不是很具描述性的、但在使用更新的中断分配进行编译时编译失败。

    您能否帮助我们:

    • 确认是否 共享 GPIO 组使用 正式支持 Linux(非 IRQ)和 R5F (IRQ) 之间的通信。

    • 工作参考或更新的配置指南 使用 K3 资源分区工具进行 GPIO 中断路由 (尤其是对于 Linux + R5F 共存用例)。

    再次感谢您的支持。

    此致、
    Yogesh

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

    Yogesh 您好

    Linux 和 R5F 之间共享 GPIO 组使用?  

    简短答案:
    软件不支持

    较长答案:
    绝对不支持 Linux 和 R5F 写入同一 GPIO 组。 但是、您可能能够让此用例正常工作:Linux 控制 GPIO、R5F 接收 GPIO 中断、而无需向 GPIO 模块写入任何内容。

    由于 TI 尚未设计、编写或测试任何类似代码、因此我们在为该 “不支持“用例提供的支持方面仍然受到限制。 但是、如果您对自己进行测试和开发感兴趣、我和我的团队成员可以尝试提供一些指导。 如果您有兴趣更深入地研究该选项、第一步是将您发送给更熟悉 RTOS 开发的团队成员、从他们这边评论可行性。

    第一个问题是、您是否可以在没有配置中断源(例如 GPIO 模块)的情况下为任意中断轻松创建回调函数。

    使用 K3 资源分区工具配置 GPIO 中断路由有没有更新?  

    关于您找到的常见问题、需要注意以下几个事项:

    1) 该常见问题解答针对的是 MCU+ SDK SBL 引导流程使用的电路板配置设置、而不是 SPL 引导流程

    2) AM64x MCU+ SDK SBL 的默认电路板配置设置与 AM64x Linux SDK SPL 引导流程不同

    大多数差异都在于哪个内核获取 PRU 以太网端口的 DMA FIFO。 在这些器件上使用 AM62x / AM62Ax / AM62Px 的未来读者被告知、SBL 和 SPL 的默认电路板配置设置是相同的。

    我能否让您向我展示您在 K3 资源分区工具中围绕 GPIO 中断分配所做的更改? 使用 SysConfig GUI 界面而不是直接修改文本文件会更容易。

    是否有关于使用 K3 资源分区工具的常见问题解答?  

    此常见问题解答针对更新、但这是我认为最好的一个问题:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1308689/faq-how-to-use-k3-resource-partitioning-tool-with-processor-sdk-v9-0-or-v9-1

    我希望大部分信息仍然准确。 如果 SDK 11.0 中有任何内容不再适用、请告知我。 我将记下一个更新后的常见问题解答。

     我知道的最大变化是捆绑到 Linux SDK 11.0 中的 K3 资源分区工具版本应该是固定的。 因此无需从常见问题解答中下载 zip 文件。

    此致、

    Nick