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.

[参考译文] AM6442:AM6442 GPIO 会触发 R 内核中断并报告错误【错误】Sciclient 事件配置失败!!!

Guru**** 2950820 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1621299/am6442-am6442-gpio-triggers-r-core-interrupt-and-reports-an-error-error-sciclient-event-config-failed

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

要求在 R 内核中添加 GPIO 触发的中断、通过 Linux 引导 R 内核并进行 IPC 通信。 我首先将 TI 官方 GPIO_INPUT_INTERRUPT_am64x-evm_r5fss0-0_nortos_ti ARM CLANG 例程添加到 ipc_rpmsg_echo_linux_am64x-evm_r5fss0-0_freertos_ti ARM CLANG 例程中、并首先初始化 GPIO_INPUT_INTERRUPT_MAIN、如附件中的图 1 所示

img_v3_02vd_2205e275-0c7f-4933-924e-029cf5c3c72g.jpg

在 CCS 中单独调试 R CORE GPIO 中断是正常的。 当通过 A 内核上的 UART 端口调试 R 内核 GPIO 中断时、会报告以下错误:

root@AM64x-Tronlong :~# cat /sys/kernel/debug/remoteproc/remoteproc1/trace0

[r5f0-0]    0.000750s :【错误】Sciclient 事件配置失败!!!

[r5f0-0]    0.000799s:断言:0.796s:SYSCFG/ti_drivers_config.c:Sciclient_gpioIrqSet:120:false failed!!

root@AM64x-Tronlong :~# rpmsg_char_simple-r 2 -n 10.

rpmsg_char_find_ctrldev:找不到与 virtio1.rpmsg_chrdev.–1.14 匹配的 rpmsg_ctrl 设备

无法创建端点设备:成功

测试状态:失败

 

如附件图 2 所示、主域的 GPIO 已在 Linux 器件树文件中被禁用

img_v3_02vd_ac2b2056-a7da-4e56-ab08-765cf85ff76g.jpg

root@AM64x-Tronlong :~# ls /sys/class/gpio /

导出 gpiochip510 不导出

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid=“687358" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1621299/am6442-am6442-gpio-triggers-r-core-interrupt-and-reports-an-error-error-sciclient-event-config-failed

    [r5f0-0]    0.000750s :【错误】Sciclient 事件配置失败!!!

    [r5f0-0]    0.000799s:断言:0.796s:SYSCFG/ti_drivers_config.c:Sciclient_gpioIrqSet:120:false failed!!

    [/报价]

    您好 Liu、

    上述错误表示系统固件 (TIFS) 拒绝了 R5F 内核配置 GPIO 中断路由的请求。 在 AM64x 上、GPIO 中断通过主 GPIO 中断路由器 (MAIN_GPIOMUX_INTROUTER0) 进行路由。 当 R5F 固件调用 Sciclient_gpioIrqSet () 时,它会向 TIFS 发送 TISCI 消息,请求中断路由器输出。 TIFS 会检查电路板配置资源管理 (boardcfg_rm) 以验证是否允许 R5F 主机使用该资源、而在您的情况下则不允许使用该资源。
    其中
    因此、它在 CCS 中工作、但在由 Linux 加载时失败:

    • CCS/JTAG - R5F 独立运行、具有许可的资源访问权限。 TIFS 不强制执行严格分区。
    • Linux Remoteproc—TIFS 使用生产板配置、其中资源在内核之间进行了划分。 GPIO 中断路由器输出被分配给 A53 (Linux) 主机、因此 R5F 的请求被拒绝。
    [quote userid=“687358" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1621299/am6442-am6442-gpio-triggers-r-core-interrupt-and-reports-an-error-error-sciclient-event-config-failed

    root@AM64x-Tronlong :~# rpmsg_char_simple-r 2 -n 10.

    rpmsg_char_find_ctrldev:找不到与 virtio1.rpmsg_chrdev.–1.14 匹配的 rpmsg_ctrl 设备

    [/报价]

    rpmsg_char_simple 故障是次要影响—R5F 固件在 GPIO 中断设置期间崩溃、然后才能创建 RPMessage 端点。 IPC 本身未损坏;固件永远无法完成设置。

    有必要在 Linux 设备树中禁用&MAIN_GPIO0、但这并不足够。 它阻止 Linux 使用 GPIO 控制器、但不会在 boardcfg_rm.TIFS 中释放中断路由器输出、不会检查 Linux 器件树 — 它只检查 boardcfg_rm。

    将 MCU+应用程序从 CCS 迁移到 Linux Remoteproc 需要的不仅仅是添加资源表。 R5F 使用的每个外设(包括 GPIO 中断路由器输出)都必须在电路板配置中显式分配给 R5F。 我建议您从 修改 Linux Multicore Academy 模块要加载的远程内核应用开始、其中介绍了此分步操作。

    如需在 Linux 下开发远程内核应用的广泛指导、 请参阅完整多核 Academy 是一个很好的参考: 多核 Academy AM64x。

    此致、
    Harshith

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

    嗨、Harshith、

    感谢您的详细说明。 我现在明白问题是由 boardcfg_rm 资源分配引起的、而不是由 Linux 器件树引起的。

    我进一步研究了 SDK 路径、并发现了两个级别的根本原因:

    级别 1:生成的 boardcfg 文件 (sciclient_defaultBoardcfg_rm_linux.c)

    GPIO 中断路由器输出分配如下:

    ```μ s
    /* MAIN_GPIOMUX_INTROUTER0  
    分配 */
    {
        .num_resource = 12、
        start_resource = 0、
        .host_id =  
        TISCI_HOST_ID_A53_2、         
        // A53 (Linux) 获取 输出  
        0-11.
    }、
    {
        num_resource = 2、
        start_resource = 12、
        .host_id =  
        TISCI_HOST_ID_MAIN_1_R5_1、   
        // R5FSS1_CORE0 获得  
        产出 12-13
    }、
    {
        num_resource = 2、
        start_resource = 14、
        .host_id =  
        TISCI_HOST_ID_MAIN_1_R5_3   
        // R5FSS1_CORE1 获得  
        产出 14-15
    }、
    /* R5FSS0_CORE0  
    (TISCI_HOST_ID_MAIN_0_R5_0) 具有  
    无 分配!  */
    ```μ s
    R5FSS0_CORE0 未分配任何 GPIO 中断路由器输出。

    级别 2:资源分区源 (am64x-evm.syscfg)

    我在 SysConfig 资源分区文件中找到了根本原因:

    ```μ s
    // 只有 这些 R5F 模块   
    已配置:
    const MAIN_0_R5_1 = 脚本处理。
    AddModule(“/modules/am64x
    MAIN_0_R5_1“);
    const MAIN_0_R5_3 = 脚本编写。
    AddModule(“/modules/am64x
    MAIN_0_R5_3“);
    const MAIN_1_R5_1 = 脚本编写。
    AddModule(“/modules/am64x
    MAIN_1_R5_1“);
    const MAIN_1_R5_3 = 脚本编写。
    AddModule(“/modules/am64x
    MAIN_1_R5_3“);

    // MAIN_0_R5_1 共享 资源  
    使用 MAIN_0_R5_0:
    MAIN_0_R5_1.shareResource =  
    “MAIN_0_R5_0";“;
    ```μ s
    根本不添加或配置 MAIN_0_R5_0 模块! 这就是为什么 R5FSS0_CORE0 没有分配 GPIO 中断资源的原因。

    问题:

    1.我的理解是否正确、即需要将 MAIN_0_R5_0 模块添加到 syscfg 中并为其配置 Main_GPIO_.syscfg Interrupt_Router_?
    2.修改 syscfg 并重新生成 boardcfg 后、我是否需要:

    -重建 TIFS 固件?
    -还是只使用新的 boardcfg 重建 R5F 应用程序?
    3.如何更新目标器件上的 TIFS/boardcfg?
    我的 SDK 版本:

    - MCU_PLUS_SDK_AM64x:11.00.00.18
    - Linux 内核:5.10.168-v1.4
    感谢您的帮助!

    此致、
    刘文通

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

    您好 Liu、

    您能解释一下所使用的引导介质和引导流程吗? boardcfg_rm 保存在不同的文件中、并根据引导流程进行不同的重新编译过程、因此我想确保为您指定正确的步骤。

    此致
    Harshith

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

    嗨、Harshith、

    感谢您的答复。

    引导流程信息:

    -引导介质: eMMC
    -引导加载程序:U-Boot
    - R5F 固件由 Linux remoteproc 加载(不是由 SBL 加载)
    此问题的更新:

    我通过将 GPIO 中断代码迁移到 R5FSS1_CORE0(而不是 R5FSS0_CORE0)来解决了这个问题、它现在可以正常工作:

    ```μ s
    [r5F1-0]   102.000004s : 键 为  
    按 1 次
    [r5F1-0]   103.000005s : 键 为  
    按了 3 次
    [r5F1-0]   104.000004s : 键 为  
    按 5 次
    [r5F1-0]   104.000021s : GPIO  
    输入 中断 测试 通过!!
    [r5F1-0]   104.000040s : all  
    测试 已 通过!!
    [r5F1-0]   104.000170s : [IPC  
    RPMSG ECHO] 远程 内核 等待  
    对于 消息...
    ```μ s
    这证实了问题确实是 boardcfg_rm 中 R5FSS0_CORE0 缺少 GPIO 中断路由器分配。

    剩余问题:

    如果我将来需要在 R5FSS0_CORE0 上使用 GPIO 中断、能否请告诉我为 U-Boot + eMMC 引导流程修改和重建 boardcfg 的正确步骤?

    感谢您的帮助!

    此致、
    刘文通

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

    您好 Liu、

    很好、您有 R5FSS1_CORE0 的工作权变措施。

    要在将来修改 R5FSS0_CORE0 的 GPIO IR 分配、请参阅此常见问题解答、其中介绍了使用 K3 资源分区工具和 U-Boot SPL 流程修改和重建 boardcfg 的完整工作流程- 【常见问题解答】如何将 K3 资源分区工具与 Processor SDK 配合使用

    此致、
    Harshith