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:R5F0_1 &amp 上的 BCDMA 通道编号限制;R5F1_1

Guru**** 2847400 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1632724/am6442-bcdma-channel-number-restriction-on-r5f0_1-r5f1_1

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

尊敬的 TI 专家:

客户正在使用 AM64 SDK11.0。

客户尝试在 R5F0_0、R5F1_0、R5F0_1 和 R5F1_1 上启用 BCDMA 的多个通道、以便更高效地读取/写入存储器。

客户使用 SysConfig 工具在每个内核上配置 DMA 通道。 下图仅展示了其中 1 个内核 (R5F0_1) 上的配置、其余内核使用相同的方法来配置 DMA、因此此处未显示。

 1aa.png.jpg

请查看以下实验结果:

  1. 所有四个 R5F 内核都具有相同的功能和相同的 SysConfig 配置。 通过注释掉 Drivers_udmaOpen () 函数,它确定当前 R5F 内核是否初始化 DMA。

  2. 最初、所有四个 R5F 内核都初始化了 DMA。 配置每个内核 2 个通道工作正常、 但是、每个内核配置 4 个通道无法初始化。  

  3. 稍后、当一次仅为一个内核初始化 DMA、而使其他内核保持未初始化状态时、发现只有 R5F0_1 和 R5F1_1 内核出现无法初始化的问题。 其他两个内核正常工作。 。 执行 UDMA_chOpen () 函数后出现问题,即“为块复制打开通道“ “ 。 函数返回值–5、代码注释显示:“在分配失败时返回错误的 API 调用。
  4. 对于 R5F0_1 和 R5F1_1 内核、 将允许正常初始化的通道数减少回 2 个。  
  5. 功能 监视 UDMA_rmAllocBlkCopyCh() 函数的内部 chNum 、可以查看已成功配置的通道。 当四个 R5F 内核中的每一个都配置了 4 个 DMA 通道时。 监控每个内核的通道分配:R5F0_0 分配了通道 12/13/14/15、 R5F0_1 仅分配了通道 18/19、 R5F1_0 分配了通道 20/21/22/23、和 R5F1_1 仅分配通道 24/25 。 值得注意的是、 R5F0_1 和 R5F1_1 仅成功分配了 2 个通道 。  

支持需求:

我们需要您的支持来进行调查、 如果 R5F0_1 和 R5F1_1 上确实存在 DMA 通道限制的数量

谢谢、

Kevin

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

    您好 Kevin、

    您的调试已正确识别所分配的确切通道编号、从而直接确认根本原因。

    简短回答:是的、R5F0_1 和 R5F1_1 上有通道限制—但这是软件配置限制、而不是硬件限制。 它是完全可调的。


    根本原因:  

    BCDMA 块复制通道分配由 SYSFW(系统固件)内的资源管理器 (RM) 板配置控制。 此配置定义了允许每台主机(CPU 内核)分配多少个 DMA 通道、以及从哪个通道索引。

    MCU+ SDK 11.0 中 AM64x 的默认 RM 板配置位于:

    source/drivers/sciclient/sciclient_default_boardcfg/am64x/sciclient_defaultBoardcfg_rm.c

    在此文件中、TISCI_RESASG_subtype_block_chan 条目定义每主机通道分配。 默认配置为:

    您观察到的通道分配 (R5F0_0:12/13/14/15、R5F0_1:18/19、R5F1_0:20/21/22/23、R5F1_1:24/25) 与该表完全匹配。

    R5F0_1 和 R5F1_1 在默认配置中只有 2 个通道、这就是请求 4 个通道返回错误–5(分配失败)的原因。


    修复:修改对讲机管理板配置

    您需要重新分配通道分配、以便为 R5F0_1 和 R5F1_1 提供更多通道。 AM64x 上的 BCDMA 块复制通道总数为 32 个(当前在默认配置中分配通道 0–27、这些主机未分配通道 0–11)。 您有扩展空间。

    建议的重新分配(每个 R5F 内核 4 个通道):

    总计:4+4+4+4=16 个可用池中使用的通道。 这适合 AM64x BCDMA 块复制通道数。

    重要提示:主机之间的信道范围不得重叠。 更改后验证完整的分配结果:R5F0_0 = 12–15、R5F0_1 = 16–19、R5F1_0 = 20–23、R5F1_1 = 24–27。 这些是连续的、 非重叠的、适合可用池。


    重建要求:  

    修改 sciclient_defaultBoardcfg_rm.c 后、您必须重新编译包含此电路板配置的 SBL(次级引导加载程序)。 RM 板配置由 SBL 在引导时传递给 SYSFW。 R5F 应用程序本身不嵌入此内容、SBL 负责在 SYSFW 初始化期间传递此内容。

    为您的电路板重新编译 SBL(例如,对于 AM64x EVM/SK、为 sbl_ospi 或 sbl_uart)并刷写新的 SBL。 R5F 应用程序固件无需更改。

    请按照以下链接中的所有步骤操作。

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/11_02_00_24/exports/docs/api_guide_am64x/RESOURCE_ALLOCATION_GUIDE.html

    此致、

    Anil.

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

    为了让后续读者易于理解并且无需打开 SDK 代码、请在此处引用相关代码:

    C:\ti\mcu_plus_sdk_am64x_11_00_00_15\source\drivers\sciclient\sciclient_default_boardcfg\am64x\sciclient_defaultBoardcfg_rm.c

           {
                .num_resource = 12,
                .type = TISCI_RESASG_UTYPE (TISCI_DEV_DMASS0_BCDMA_0, TISCI_RESASG_SUBTYPE_BCDMA_BLOCK_COPY_CHAN),
                .start_resource = 0,
                .host_id = TISCI_HOST_ID_A53_2,
            },
            {
                .num_resource = 6,
                .type = TISCI_RESASG_UTYPE (TISCI_DEV_DMASS0_BCDMA_0, TISCI_RESASG_SUBTYPE_BCDMA_BLOCK_COPY_CHAN),
                .start_resource = 12,
                .host_id = TISCI_HOST_ID_MAIN_0_R5_0,
            },
            {
                .num_resource = 6,
                .type = TISCI_RESASG_UTYPE (TISCI_DEV_DMASS0_BCDMA_0, TISCI_RESASG_SUBTYPE_BCDMA_BLOCK_COPY_CHAN),
                .start_resource = 12,
                .host_id = TISCI_HOST_ID_MAIN_0_R5_1,
            },
            {
                .num_resource = 2,
                .type = TISCI_RESASG_UTYPE (TISCI_DEV_DMASS0_BCDMA_0, TISCI_RESASG_SUBTYPE_BCDMA_BLOCK_COPY_CHAN),
                .start_resource = 18,
                .host_id = TISCI_HOST_ID_MAIN_0_R5_3,
            },
            {
                .num_resource = 4,
                .type = TISCI_RESASG_UTYPE (TISCI_DEV_DMASS0_BCDMA_0, TISCI_RESASG_SUBTYPE_BCDMA_BLOCK_COPY_CHAN),
                .start_resource = 20,
                .host_id = TISCI_HOST_ID_MAIN_1_R5_1,
            },
            {
                .num_resource = 2,
                .type = TISCI_RESASG_UTYPE (TISCI_DEV_DMASS0_BCDMA_0, TISCI_RESASG_SUBTYPE_BCDMA_BLOCK_COPY_CHAN),
                .start_resource = 24,
                .host_id = TISCI_HOST_ID_MAIN_1_R5_3,
            },
            {
                .num_resource = 1,
                .type = TISCI_RESASG_UTYPE (TISCI_DEV_DMASS0_BCDMA_0, TISCI_RESASG_SUBTYPE_BCDMA_BLOCK_COPY_CHAN),
                .start_resource = 26,
                .host_id = TISCI_HOST_ID_M4_0,
            },
            {
                .num_resource = 1,
                .type = TISCI_RESASG_UTYPE (TISCI_DEV_DMASS0_BCDMA_0, TISCI_RESASG_SUBTYPE_BCDMA_BLOCK_COPY_CHAN),
                .start_resource = 27,
                .host_id = TISCI_HOST_ID_ALL,
            },