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.

[参考译文] AM2434:UART DMA 配置错误

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1497769/am2434-uart-dma-configuration-error

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

工具/软件:

您好、

客户正在评估 AM2434 的 UART。 在 SysConfig 上、他们添加了 2 个 UART 通道、并选择 DMA 模式作为传输模式、如下所示。

编译成功、但执行 System_init () 时、在断言处发生了以下错误(“RetVal = UDMA_chOpen (drvHandle、rxChHandle、chType、&chPrms“)。

 

MAIN_Cortex_R5_0_0:断言:0.3700s:UART/V0/LLD/DMA/UART_DMA_UDMA.c:UART_udmaInitRxCh:96:UDMA_Sok == RetVal Failed!!!

 

你能给他们任何建议来解决这个问题吗?

 

谢谢。此致、

英明

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

    Hello Hideaki 

    此问题已在下面的链接中修复。

    请参阅以下链接的最后一点、了解配置多个 PKTDMA DMA 通道的补丁详细信息。

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

    尊敬的 Anil:

     

    感谢您的建议。 根据您提供的 E2E 主题的 URL、客户能够为 UART 分配最多两个 DMA、并确认它可以半双工发送和接收。

    但是、向 UART 分配两个以上的 DMA 导致了与之前相同的错误。 它们需要 6 次与 UART 的 DMA 传输。

     

    对 SDK 中的 uart_echo_dma 工程应用了相同的修复、但导致了与之前相同的错误。

    UART/V0/LLD/DMA/UDMA/UART_DMA_UDMA.c:UART_udmaInitRxCh:96:UDMA_Sok == RetVal 失败! ! !

     

    除了您提供的 E2E 主题之外、使 UART 能够使用六次 DMA 传输还需要什么原因和权变措施?

    您能否帮助提供任何其他解决方案?

     

    谢谢。此致、

    英明

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

    Hello Hideaki、

    在上面的 e2e 中、我们固定了两个通道的 DMA 通道配置、过程需要适用于 6 个通道。

    需要对 6 个通道执行以下步骤。 例如、检查生成的文件的 dma ch config、然后复制它并按以下 init 所示进行操作。

    gUartUdmaChConfig[1].drvHandle =&gUdmaDrvObj[0];

    gUartUdmaChConfig[2].drvHandle =&gUdmaDrvObj[0];

    gUartUdmaChConfig[3].drvHandle =&gUdmaDrvObj[0];

    gUartUdmaChConfig[4].drvHandle =&gUdmaDrvObj[0];

    gUartUdmaChConfig[5].drvHandle =&gUdmaDrvObj[0];

    此致、

    Anil.

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

    尊敬的 Anil:

    感谢您的答复。 客户已经尝试对 6 个通道应用相同的过程、但发生了相同的错误。

    您是否能够确认 6 个信道在上述配置下工作正常?

    请帮助解决这个问题。

    谢谢。此致、

    英明

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

    Hello Hideaki 

    请在客户端确认 DMA 在哪个 DMA 通道初始化处抛出错误?

    像 DMA 初始化发生在第 4 个或第 5 个信道或任何其他信道编号?

    此致、

    Anil.

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

    尊敬的 Anil:

    该错误在 2 通道、3 通道、4 通道和 5 通道上发生、在 0 通道和 1 通道上不会发生。

    请帮助他们尽快解决此问题。

    您是否能够确认 6 个信道正常工作?

    谢谢。此致、

    英明

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

    Hello Hideaki、

    我可以在我这边查看、下周让您了解星期二的状态。

    此致、

    Anil.

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

    谢谢、Anil。

    我期待下一个星期二为您提供反馈。

    谢谢。此致、

    英明

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

    Hello Hideaki、

    我今天在休假,将在星期一上重现上述问题..

    此致、

    Anil

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

    Anil、

    进展如何? 请分享解决方案。

    此致、

    英明

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

    Hello Hideaki 

    请在下面找到分析报告。

    根本原因:

    客户已启用 6 个 UART、这需要 6 个 TX 和 6 个 RX DMA 通道(共 12 个通道)。
    但是、在当前 MCU+ SDK 配置中、只有 3 个 TX 和 3 个 RX 数据包 DMA 通道被分配给 R5F0_0 内核。
    因此、当客户尝试配置第 4 个 UART 时、由于额外的 DMA 通道不可用、将触发调试置为有效。

    建议的修复:

    向 R5F0_0 内核分配 6 个 TX 和 6 个 RX 数据包 DMA 通道、以支持所有 6 个 UART。

    实施步骤:


    1.打开对讲机管理 SYSCFG 文件:
    •导航到工程中的 Resource Management (RM).syscfg 文件。

    命令 :  
    game -s -C tools/sysfw/boardcfg configure SOC=am64x
    gmake -s -C tools/sysfw/boardcfg configure-gen SOC = am64x

    2.更新 DMA 通道分配:
    •修改配置、将 6 个 TX 和 6 个 RX 数据包 DMA 通道分配给 R5F0_0。


    3.重新编译对讲机管理配置:
    •重新构建 rm_cfg.c 文件以应用更新后的通道配置。

    命令  :  
    gmake -s -C tools/sysfw/boardcfg sciclient_boardcfg SOC=am64x


    4.重建 SBL :
    •如果客户使用 SBL OSPI、请在释放模式下编译。


    刷写更新后的 SBL:
    •将新编译的 SBL 二进制文件刷写到电路板中。


    6、使用 UART 进行测试示例:
    •从 CCS 加载 UART 示例、验证问题是否仍然存在。

    此更改的影响:
    •将所有 6 个 TX 和 6 个 RX 数据包 DMA 通道分配给 R5F0_0 可能会限制其他内核将数据包 DMA 用于通用外设、因为没有可用的通道可供使用。

    示例代码和文件:  

    SBL:  

    /cfs-file/__key/communityserver-discussions-components-files/908/sbl_5F00_null_5F00_am64x_2D00_evm_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang.zip

    应用示例:  

    /cfs-file/__key/communityserver-discussions-components-files/908/gpio_5F00_led_5F00_blink_5F00_am64x_2D00_evm_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang.zip

    rm_cfg.c:  

    /cfs-file/__key/communityserver-discussions-components-files/908/3652.sciclient_5F00_defaultBoardcfg_5F00_rm.c

    rm_cfg 文件:

    /cfs-file/__key/communityserver-discussions-components-files/908/am64x_2D00_evm.syscfg

    修改资源分配的链接:

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

    备注:

    我还没有按功能进行验证、仅验证调试置为有效是否正在抛出。

    如果您在功能运行期间遇到任何错误、请告诉我。

    此致、

    Anil.

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

    尊敬的 Anil:

    感谢您分享解决方案。 他们尝试了这个解决方案,但...

    [报价 userid=“525901" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1497769/am2434-uart-dma-configuration-error/5855887 #5855887“]

    1.打开对讲机管理 SYSCFG 文件:
    •导航到工程中的 Resource Management (RM).syscfg 文件。

    命令 :  
    game -s -C tools/sysfw/boardcfg configure SOC=am64x
    gmake -s -C tools/sysfw/boardcfg configure-gen SOC = am64x

    2.更新 DMA 通道分配:

    [/报价]

    他们认为上述“游戏“应该是“gmake",“,正确吗?

    他们执行了两个 gmake 命令、但错误发生如下所示。

    game -s -C tools/sysfw/boardcfg configure SOC=am64x

    执行上述 gmake 命令时、会发生以下错误。

    gmake -s -C tools/sysfw/boardcfg configure-gen SOC=am64x

    此外、当执行上述 gmake 命令时也会发生以下错误。

    只有 C:\ti\motor_control_sdk_am243x_09_02_00_11\mcu_plus_sdk\tools\sysfw\boardcfg\respart\am243x、不包括 am64x。

    您能帮助他们继续吗?

    谢谢。此致、

    英明

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

    Hello Hideaki、

    请尝试使用 SOC 命令是 am243x 而不是 am64x、看看这是否起作用。

    GAMKE 是正确的命令。

    此致、

    Anil.

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

    尊敬的 Anil:  

    我还使用 am243x 输入进行了此尝试。 也尝试了将 SOC 更改为器件、但未成功。 (虽然它显示 make 是我正在使用的 gmake 的等价物)

    您这边是否成功?

    此致、

    Mari Tunnoda

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

    你好、Mari、

    我可以使用以下命令打开 syscfg  

    此致、

    Anil.

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

    尊敬的 Anil:

    感谢您支持该主题。 是否可以使用 MCU+ SDK 9.2 验证相同的过程?

    似乎您使用的是 10.01、但最新的 Motor Control SDK 支持 MCU+ SDK 9.2。

    谢谢。此致、

    英明

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

    尊敬的 Anil:

    实际上、我们在 E2E 上得到了使用 CCS 的建议、因此客户一直在使用此工具进行开发。

    它们还使用 Matsumoto-San 提到的电机控制 SDK v9.2、并使用 MCU+SDK 文件夹中的 gmake 命令  差异 电机控制 SDK。  

    我已尝试对 imports.mak 文件进行更改以匹配 ccstheia、但这会导致错误。 我还尝试使用 CCS eclipse、它似乎效果更好、但我在弹出 SysConfig 菜单后遇到一个错误。  

    您是否知道这是否适用于以下组合? 您能在您的环境中检查吗?

    CCS Theia:v1.5.1

    Motor Control SDK v9.2 中的 MCU+SDK 文件夹  

    此致、

    Mari Tunnoda

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

    你好、Mari、

    我们仅提供对 MCU+ SDK 的支持、而不是对  电机控制 SDK 的支持。

    但是、我将与内部工业 SDK 团队讨论上述问题、然后返回给您提供更新。

    此致、

    Anil.

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

    尊敬的 Anil:

    在您向工业 SDK 团队确认时、您还能检查在使用 CCS 时是否有显著差异  进行重新编程 对比 CCS Eclipse 以使用这个 gmake 命令? 我在电机控制 SDK 上对两者进行比较时、发现了一些差异。 能否确认在 MCU+SDK v9.2 上使用 CCS 时它是否与您相同?

    此致、

    Mari

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

    尊敬的 Anil:  

    您能告诉我打开 rmcfg 文件的两个命令之间的区别吗?

    我实际上能够运行第一个 configure 命令并使用 MCU+SDK 10.1 打开了 rmcfg 文件、但第二个命令导致了错误。

    Game -s -C tools/sysfw/boardcfg 配置 SOC=am64x243x
    gmake -s -C tools/sysfw/boardcfg configure-gen SOC=am64x243x

    所以我的问题是:是否有必要同时运行这两个命令或任何一个正常的命令?

    此致、

    Mari

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

    你好、Mari、

    我也检查了工业 SDK、命令没有问题、并且它们正在正常运行。

    如果您仍然遇到该问题,那么您可以使用适用于 CCS 和 syscfg 的 MCU+SDK 推荐工具。

    我使用的是基于食。

    此 命令用于打开文件。

    [引述 userid=“499871" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1497769/am2434-uart-dma-configuration-error/5891029 #5891029“]
    Game -s -C tools/sysfw/boardcfg 配置 SOC=am64x243x
    [/报价]

    此命令用于在更改文件并将同一文件复制到以下文件夹后执行。  

    C:\ti\mcu_plus_sdk_am243x_10_01_00_32\source\drivers\sciclient\sciclient_default_boardcfg\am243x

    [引述 userid=“499871" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1497769/am2434-uart-dma-configuration-error/5891029 #5891029“]
    gmake -s -C tools/sysfw/boardcfg configure-gen SOC=am64x243x

    [/报价]

    此命令用于编译代码。

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

    请查看文档。

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/11_00_00_15/exports/docs/api_guide_am243x/RESOURCE_ALLOCATION_GUIDE.html

    此致、

    Anil.

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

    尊敬的 Anil:

    感谢聊天。 如前所述、我将要求他们下载导入文件中引用的正确 SysConfig 和 CCS Eclipse 版本、并让他们尝试。 (另外更改为 SOC=am243x)剩余步骤、在编译 gmake 命令时、它们应该能够执行。

    此致、

    Mari Tunnoda

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

    尊敬的 Anil:

    我们昨天与客户进行了核实、但他们询问我们是否完全无法使用 CCS Theia 重新编译这些文件和库。  

    他们根据 E2E 上的询问、决定使用 CCS Theia、因此我认为我们需要进行尽职调查、以便 针对 CCS Theia 调整库构建。  

    正在使用 CCS、可能是针对此操作或 CCS Eclipse 是这样 是否必要?

    此致、

    Mari  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    他们根据 E2E 上询问的建议决定使用 CCS Theia、因此我认为我们需要尽职调查、使 库构建适合 CCS 环境。  [/报价]

    你好、Mari、

    您能否分享针对 CCS Theia 的 E2E 建议?

    此致、

    Anil.

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

    尊敬的 Anil:

    在这个 E2E 主题中、我们收到了在其开发周期开始时使用 CCS Theia 的建议。

    AM2434:适用于 AM243x 的 CCS Theia — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    此致、

    Mari