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.

[参考译文] PROCESSOR-SDK-J722S:J722s vision-apps 使用 Sciclient_gpioIrqSet 请求 GPIO 组 IRQ 失败。

Guru**** 2422790 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1545047/processor-sdk-j722s-j722s-vision-apps-use-sciclient_gpioirqset-request-a-gpio-bank-irq-failed

器件型号:PROCESSOR-SDK-J722S


工具/软件:

尊敬的 TI 专家:
  1.我使用 J722s SDK v11 示例代码作为环境。 SDcard、spl 引导模式。

  2.我想在 mcub20 中产生 GPIO 组中断、代码 基于 vision_apps/platform/j722s/rtos/MCU2_0/

  3.   首先移植 mcu_plus_sdk_j722s_11_00_00_12/examples/drivers/gpio/gpio_input_interrupt 演示代码

  4.单个引脚 GPIO0_xx 正常、

  5. 但当需要 GPIO1_xx 或 GPIO0/1 组 IRQ 失败。   为什么会导致该问题。   我有许多 GPIO 引脚、必须使用组 IRQ 模式。


我的问题是:
1.  如何  在 vision_app mcu20 工程中申请 GPIO 组 IRQ 路由。

这是我的代码和日志。

static int Sciclient_gpioIrqSet(uint32_t srcId, uint32_t srcIdx, uint32_t dstId, uint32_t dstIdx)
{
    int32_t retVal;
    struct tisci_msg_rm_irq_set_req rmIrqReq;
    struct tisci_msg_rm_irq_set_resp rmIrqResp;

    rmIrqReq.valid_params = 0U;
    rmIrqReq.valid_params |= TISCI_MSG_VALUE_RM_DST_ID_VALID;
    rmIrqReq.valid_params |= TISCI_MSG_VALUE_RM_DST_HOST_IRQ_VALID;
    rmIrqReq.global_event = 0U;

    // rmIrqReq.src_id                 = TISCI_DEV_GPIO0;
    // rmIrqReq.src_index              = CSLR_MAIN_GPIOMUX_INTROUTER0_IN_GPIO0_GPIO_35;
    // rmIrqReq.dst_id                 = TISCI_DEV_R5FSS0_CORE0;
    // rmIrqReq.dst_host_irq           = CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_16;

    rmIrqReq.src_id = srcId;
    rmIrqReq.src_index = srcIdx;

    rmIrqReq.dst_id = dstId;
    rmIrqReq.dst_host_irq = dstIdx;

    rmIrqReq.ia_id = 0U;
    rmIrqReq.vint = 0U;
    rmIrqReq.vint_status_bit_index = 0U;
    rmIrqReq.secondary_host = TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST;

    retVal = Sciclient_rmIrqSet(&rmIrqReq, &rmIrqResp, SystemP_WAIT_FOREVER);

    appLogPrintf("Sciclient event config %d-%d, %d-%d:  %d\r\n", srcId, srcIdx, dstId, dstIdx, retVal);

    return retVal;
}


Sciclient_gpioIrqSet(TISCI_DEV_GPIO1, CSLR_MAIN_GPIOMUX_INTROUTER0_IN_GPIO1_GPIO_12, TISCI_DEV_R5FSS0_CORE0, CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_16);
Sciclient_gpioIrqSet(TISCI_DEV_GPIO1, CSLR_MAIN_GPIOMUX_INTROUTER0_IN_GPIO1_GPIO_BANK_0, TISCI_DEV_R5FSS0_CORE0, CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_16);
Sciclient_gpioIrqSet(TISCI_DEV_GPIO0, CSLR_MAIN_GPIOMUX_INTROUTER0_IN_GPIO0_GPIO_BANK_0, TISCI_DEV_R5FSS0_CORE0, CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_16);
Sciclient_gpioIrqSet(TISCI_DEV_GPIO0, CSLR_MAIN_GPIOMUX_INTROUTER0_IN_GPIO0_GPIO_36, TISCI_DEV_R5FSS0_CORE0, CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_16);
 

日志:  GPIO1、GPIO0/1 组请求全部失败。 只有最后一个 GPIO0 单个引脚正常。

[MCU2_0] 717.901302 s:Sciclient 事件配置 78-102,262-104:–1
[MCU2_0] 717.901324 s:Sciclient 事件配置 78-180,262-104:–1
[MCU2_0] 717.901343 s:Sciclient 事件配置 77-190,262-104:–1
[MCU2_0] 717.901477 s:Sciclient 事件配置 77-36,262-104:0
[MCU2_0] 717.901517s:启用组 IRQ:601000、12、0

e2e.ti.com/.../mcu20.c

谢谢

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

    您好、

    感谢您在通话过程中提供的深入说明。

    首先、我们可以重点关注 GPIO1 中断注册。 您是否可以尝试从 GPIO1_49 中使用以下配置示例:

        /* Source ID */
        #define MAIN_GPIO0_DEVICE_ID     (TISCI_DEV_GPIO1)
        /* Destination ID */
        #define MAIN_R5_CORE_DEVICE_ID   (TISCI_DEV_R5FSS0_CORE0)
        /* Source Index */
        #define MAIN_GPIO0_INDEX         (CSLR_MAIN_GPIOMUX_INTROUTER0_IN_GPIO1_GPIO_49)
        /* Destination Index */
        #define MAIN_R5_HSOT_IRQ_INDEX   (CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_16)
        
        struct tisci_msg_rm_irq_set_req     rmIrqReq;
        struct tisci_msg_rm_irq_set_resp    rmIrqResp;
    
        rmIrqReq.valid_params           = 0U;
        rmIrqReq.valid_params          |= TISCI_MSG_VALUE_RM_DST_ID_VALID;
        rmIrqReq.valid_params          |= TISCI_MSG_VALUE_RM_DST_HOST_IRQ_VALID;
        rmIrqReq.global_event           = 0U;
        rmIrqReq.src_id                 = MAIN_GPIO0_DEVICE_ID;
        rmIrqReq.src_index              = MAIN_GPIO0_INDEX;
        rmIrqReq.dst_id                 = MAIN_R5_CORE_DEVICE_ID;
        rmIrqReq.dst_host_irq           = MAIN_R5_HSOT_IRQ_INDEX;
        rmIrqReq.ia_id                  = 0U;
        rmIrqReq.vint                   = 0U;
        rmIrqReq.vint_status_bit_index  = 0U;
        rmIrqReq.secondary_host         = TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST;
    
        retVal = Sciclient_rmIrqSet(&rmIrqReq, &rmIrqResp, SystemP_WAIT_FOREVER);
        if(0 != retVal)
        {
            DebugP_log("[Error] Sciclient event config failed!!!\r\n");
            DebugP_assert(FALSE);
        }

    此外、您能否测试 CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_16 至 CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_21 的所有输出 ?

    谢谢、

    Neehar

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

    更新: 我发现对于引脚中断 GPIO1_49、 src_index 应该为 49、而不是 Marco 值 139。    但对于 GPIO 组中断、这仍然不起作用。 这是我的日志。 所有组中断请求都失败。


    [MCU2_0] 20.655983 s:Sciclient 事件配置 2 78-73,262-104:–1
    [MCU2_0] 20.656019 s:Sciclient 事件配置 2 78-74,262-104:–1
    [MCU2_0] 20.656049 s:Sciclient 事件配置 2 78-75,262-104:–1
    [MCU2_0] 20.656078 s:Sciclient 事件配置 2 78-76,262-104:–1
    [MCU2_0] 20.656206 s:Sciclient 事件配置 2 78-77,262-104:0
    [MCU2_0] 20.656236 s:Sciclient 事件配置 2 77-92,262-105:–1
    [MCU2_0] 20.656264 s:Sciclient 事件配置 2 77-93,262-105:–1
    [MCU2_0] 20.656292 s:Sciclient 事件配置 2 77-94,262-105:–1
    [MCU2_0] 20.656320 s:Sciclient 事件配置 2 77-95,262-105:–1
    [MCU2_0] 20.656349 s:Sciclient 事件配置 2 77-96,262-105:–1
    [MCU2_0] 20.656377 s:Sciclient 事件配置 2 77-97,262-105:–1

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

    您好、

    感谢您对此的更新。 您现在是否能够注册所有 GPIO1 中断而不会出现问题?

    我将协助在新创建的线程中进行 GPIO 分组中断注册

    谢谢、

    Neehar