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.

[FAQ] [参考译文] [常见问题解答] LP-AM243:将 GPIO 中断路由到 PRU 内核

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1452411/faq-lp-am243-routing-gpio-interrupts-to-pru-core

器件型号:LP-AM243
主题中讨论的其他器件:SysConfig

工具与软件:

我正在尝试修改  GPIO_INPUT_INTERRUPT  R5F0-0内核将 GPIO 中断定向到 PRU 内核的示例。

要求:  GPIO1_0中断->  MAIN_GPIOMUX_INTROUTER0_OUTP_18  -> IEP0_CAP

SysConfig 似乎不允许配置 PRU 特定的 MAIN_GPIOMUX_INTROUTER_OUTP、因为中断路由器输出的唯一可见选项是 MAIN_GPIOMUX_INTROUTERS[0:7]。

解决方法是、我复制了从 syscfg 文件生成的文件、并尝试修改  rmIrqREQ.DST_HOST_IRQ  中的参数  Sciclient_gpioIrqSet  功能手动、但这也不起作用、并导致 Sciclient 错误。

如何解决此问题?

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

    尽管许多输出引脚可用于 GPIO 多路复用器中断路由器、但只有在电路板配置中分配的资源引脚才可在 SysConfig GUI 中使用、即  MAIN_GPIOMUX_INTROUTER0_OUTP_[0:7]。

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

    要实现上述用例、请执行以下步骤:

    步骤1:修改应用程序

    i.找到 调用的应用程序函数  Sciclient_gpioIrqSet  和  Sciclient_gpioIrqRelease (函数 Board_gpioInit ()和 Board_gpioDeinit ()),将这些函数的内容复制到新函数中,并进行以下更改

    rmIrqReq.dst_id = TISCI_DEV_PRU_ICSSG0;
    rmIrqReq.dst_host_irq = CSLR_PRU_ICSSG0_PR1_SLV_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_38;

    二. 将现有的函数调用替换 为新函数(Board_gpioInit ()/ Board_gpioDeinit ()(也将所需的#define 添加到应用程序中)。

    三、SysConfig 设置应如下所示:

    步骤2:修改电路板配置以进行资源分配  

    在找到 sciclient_defaultBoardcfg_rm.c 文件  \source\drivers\sciclient\sciclient_default_boardcfg\am243x

    对于上述用例、对 rm cfg 文件进行以下更改:

    i.添加一个条目 、用于开始资源为18的新 TISCI_DEV_MAIN_GPIOMUX_INTROUTER0 (PRU_ICSSG0_PR1_IEP0_CAP_INTR_REQ0中断输入行映射到源中断 MAIN_GPIOMUX_INTROUTER0_OUTP_18)

    {
        .num_resource = 1,
        .type = TISCI_RESASG_UTYPE (TISCI_DEV_MAIN_GPIOMUX_INTROUTER0, TISCI_RESASG_SUBTYPE_IR_OUTPUT),
        .start_resource = 18,
        .host_id = TISCI_HOST_ID_MAIN_0_R5_1,
    },

    二.将 resasg_entrys_size 增加1以反映新增加的资源。

    .resasg = {
        .subhdr = {
            .magic = TISCI_BOARDCFG_RM_RESASG_MAGIC_NUM,
            .size = (uint16_t) sizeof(struct tisci_boardcfg_rm_resasg),
        },
        .resasg_entries_size = 166 * sizeof(struct tisci_boardcfg_rm_resasg_entry), // increased from 165 to 166
    },

    SCI 客户端参数是根据以下文档配置的: https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/am64x/interrupt_cfg.html

    或者、也可使用 rm cfg 工具进行资源分配、请参阅 MCU+doc 以了解更多信息- https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/09_02_00_50/exports/docs/api_guide_am243x/RESOURCE_ALLOCATION_GUIDE.html

    第3步:重新编译电路板配置和 SBL

    导航到 SDK 根目录

     sciclient_ccs_init  通过运行以下命令来构建示例和 boardcfg 二进制文件 blob (这可确保为基于 Re 和 CCS 的引导流程更新 boardcfg)

    make -s -C tools/sysfw/boardcfg sciclient_boardcfg SOC=am243x

    通过运行以下命令来编译 Re:

    gmake -s sbl clean 
    gmake -s sbl 
    gmake -s sbl PROFILE=debug clean
    gmake -s sbl PROFILE=debug 


    步骤4:用更新后的 SBL 刷写电路板

    替换 中存在的 SBL 映像  /tools/boot/sbl_prebuilt/am243x-lp、 其中生成了新的  .release.hs_fs.tiimage  (在中)  \examples\drivers\boot\ \am243x-lp\r5fss0-0_nortos\ti-arm-clang

    使用新的 SBL 映像刷写电路板、步骤为 FLASH_SOC_init

    为电路板上电并从 CCS 加载示例。

    此致、

    Nitika