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.

[参考译文] UART-AM243X:UART_ECHO_DMA_LLD:缓冲区大小 MCU-PLUS-SDK MCU-PLUS-SDK

Guru**** 2265200 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/1476451/mcu-plus-sdk-am243x-mcu-plus-sdk-am243x-uart_echo_dma_lld-buffer-size

器件型号:MCU-PLUS-SDK AM243X
主题中讨论的其他器件:SysConfig

工具与软件:

尊敬的专家:

我正在使用 motor_control_sdk_am243x_09_02_00_09、CCS 12.6、SysConfig 1.21.1。

我正在尝试 uart_echo_dma_lld 示例、并添加了一些更多的变量来测量解决时间。 我注意到、这些变量有时会重置为零、没有明显的原因。 进一步研究了这些变量在 SysConfig 代码中实例化的两个缓冲区附近的链接:

/* UART UDMA 通道 HPD 存储器*/
静态 uint8_t gUart0UdmaTxHpdMem[UART_UDMA_TEST_DESC_SIZE]__ATTRIBUTY__(ALIGNED (UDMA_CACHELINE_ALIGN));
静态 uint8_t gUart0UdmaRxHpdMem[UART_UDMA_TEST_DESC_SIZE]__ATTRIBUTY__(ALIGNED (UDMA_CACHELINE_ALIGN));

 UART_UdmaChConfig gUartDmaChCfg[CONFIG_UART_NUM_DMA_LLD_EVENTS]=
{{
[...]
   .txHpdMem        =&G gUart0UdmaTxHpdMem、
   .rxHpdMem        =&G gUart0UdmaRxHpdMem、
[...]
};

使用以下解决方法后、问题就消失了:

uint8_t myUdmaTxHpdMem[UDMA_CACHELINE_alignment](对齐(UDMA_CACHELINE_ALIGN));
uint8_t myUdmaRxHpdMem[UDMA_CACHELINE_alignment](对齐(UDMA_CACHELINE_ALIGN));

 void uart_echo_dma_lld (void * args)

   gUartDmaChCfg[0].txHpdMem = myUdmaTxHpdMem;
   gUartDmaChCfg[0].rxHpdMem = myUdmaRxHpdMem;
 

   drivers_open();
   Board_driversOpen();
  [...]

这些缓冲区与 CacheP_inv ()和 CacheP_WB ()命令一起使用。 它们最初的缓冲区与一个缓存行对齐、但比一个缓存行短。 我想高速缓存命令总是会影响整个高速缓存行。 这是不是真的? 如果是、您是否会在将来的 SysConfig/SDK 中修复?

BR
Alexander

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

    您好、Alexander、

    我正在查看您的问题、您可能希望在一两天内得到回复。

    此致、

    Anil。