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.

[参考译文] AM2634-Q1:多个 UART DMA LLD 实例重新定义错误 — gUartDmaChCfg

Guru**** 2378650 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/1524470/am2634-q1-redefinition-error-with-multiple-uart-dma-lld-instances---guartdmachcfg

器件型号:AM2634-Q1
主题:SysConfig 中讨论的其他器件

工具/软件:

尊敬的 TI 团队:

我使用的是uart_echo_dma_lld正确运行的示例。 但是、当我尝试在同一个工程中添加使用 DMA LLD 的第二个 UART 实例时、我在编译期间遇到重新定义错误。

错误详细信息:
说明:重新定义“gUartDmaChCfg"</s>“
资源:ti_drivers_open_close.c
路径:/UART_Test/Release/syscfg
地点:152 号线
类型:C/C++ problem

根本原因: SysConfig 工具将生成名称相同的两个单独数组 gUartDmaChCfg

UART_EdmaChConfig gUartDmaChCfg[CONFIG_UART_NUM_DMA_LLD_Instances]=

  {
    .edmaRxChId = DMA_TRIG_XBAR_EDMA_MODULE_0、
    .edmaTxChId = DMA_TRIG_XBAR_EDMA_MODULE_1
  }、
};

UART_EdmaChConfig gUartDmaChCfg[CONFIG_UART_NUM_DMA_LLD_Instances]=

  {
    .edmaRxChId = DMA_TRIG_XBAR_EDMA_MODULE_2、
    .edmaTxChId = DMA_TRIG_XBAR_EDMA_MODULE_3
  }、
};


Questions:
1.为什么 SysConfig 生成两个同名数组而不是具有多个实例的单个数组?

2.如何将 SysConfig 配置为:

  • 为每个 UART 实例生成唯一的数组名称、或
  • 将两种配置组合成具有多个元素的单个数组?

您能否提供有关多个 UART DMA LLD 实例的正确 SysConfig 配置的指导?

感谢您的帮助。

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

    您好、

    我能够在我这边重现同样的问题 从以下文件自动生成代码: C:\ti\mcu_plus_sdk_am263x_10_02_00_13\source\sysconfig\drivers\.meta\uart\templates\uart_open_close_config_v2_lld.c.xdt

    我正在修复相同的问题、将与修复程序共享更新后的文件

    此致、
    Shaunak

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

    尊敬的 Rahul:

    您能否将以下位置的默认文件替换  为附加的文件:C:\ti\mcu_plus_sdk_am263x_10_02_00_13\source\sysconfig\drivers\.meta\uart\templates\uart_open_close_config_v2_lld.cndt、然后告诉我是否修复了您的问题:

    e2e.ti.com/.../uart_5F00_open_5F00_close_5F00_config_5F00_v2_5F00_lld.c.xdt

    生成的代码现在如下所示:

    此致
    Shaunak

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

    尊敬的 Shaunak:

    感谢您提供更新的模板文件。 我将文件替换为附件版本。

    状态更新: 汇编问题已经解决、但出现了新的问题:

    问题 1: 两个 UART 都在 LLD+DMA 模式下停止工作

      a.当两个 UART 实例都配置为 LLD 模式且启用 DMA 时
      b.两个 UART 最初只传输几个字节、然后完全停止运行
      C.任一 UART 上都不会发生进一步的数据传输

    问题 2: UART 功能相关性

      a.当 UART1 配置为 HLD 模式时、UART0 正常工作
      b.当我在没有 DMA 的情况下配置 UART1 LLD 模式时、我会遇到新的编译错误:

    “gUartDmaChCfg"的“的重新定义为不同类型:“UART_EdmaChConfig[1]"(“(又(又名“truct UART_EdmaChConfig_s[1]“)与“UART_EdmaChConfig[2]"(“(又(又名“truct UART_EdmaChConfig_s[2]“)“



    当两个 UART 同时在 LLD 模式下运行时、可能存在资源冲突或初始化问题。

    谢谢、
    Rahul

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

    尊敬的 Shaunak:

    1 更多更新-

    正确调用更新接收中断函数并正确调用其回调。 然而、在传输 DMA 操作期间、绝不会调用回调函数。 传输 DMA 仅成功运行一次。 在第二次尝试时、系统卡在“ try_lock_mutex “因为以前的传输回调从未被触发、妨碍了正确的完成处理、但当我在 UART 上发送任何数据时、接收回调触发(附了屏幕截图)。  


    谢谢、
    Rahul

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

    尊敬的 Rahul:

    仔细研究、需要一些时间进行正确的验证来修复此错误。

    此致、
    Shaunak

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

    用于内部跟踪目的的 JIRA 错误: jira.itg.ti.com/.../MCUSDK-14704 (外部无法访问链接)

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

    尊敬的 Rahul:

    您能告诉我解决此问题的紧迫性吗? 由于一些正在进行的调试,我无法完全研究它。

    此致、
    Shaunak

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

    尊敬的 Shaunak:

    没问题、请花时间 修复它、如果您需要任何其他日志、请随时告知我。 目前、这是一个较低的优先级、因为我目前正在使用基于中断的 API 来处理同一个工程中的 UART 数据发送和接收。 不过、我期望在 7 月中旬前解决这一问题。

    谢谢、
    Rahul

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

    尊敬的 Rahul:

    感谢您的确认。 我将尝试在 7 月中旬之前解决该问题、并在此主题中提供修补程序

    此致、
    Shaunak