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.

[参考译文] TMS570LC4357:DMA 当前目标地址

Guru**** 2481465 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/887085/tms570lc4357-dma-current-destination-address

器件型号:TMS570LC4357

您好!

我知道、从 CDADDR 寄存 器(TRM SPNU563a 中的第20.3.2.8节)可以读取 DMA 的当前目标地址、前提是更高优先级的 DMA 传输已从优先级队列中中断了数据传输。

是否有方法可以查找当前的目标地址,而不会在通道之间产生这样的冲突?

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

    您好 Tanay、

    该寄存器仅在满足中的条件后更新。  

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

    感谢您的快速响应,王!

    关于 DMA 的相关问题,如果在没有仲裁的情况下无法确定当前目标地址,那么如果 CPU 从 DMA 当前写入的同一存储器位置读取数据,会发生什么情况?

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

    CPU 将等待 DMA 传输完成。

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

    Tanay、

    Hercules 器件架构旨在最大限度地减少这些仲裁条件。 CPU SRAM 互连被设计成只有当 CPU 和 DMA 在同一周期内访问同一个64位地址时、一个仲裁条件才存在。 在极少数情况下、CPU 和 DMA (或其他总线主控)在同一周期内访问相同的64位 SRAM 位置、读取访问将被一个 CPU 时钟周期延迟、以允许写入访问首先完成。

    通常情况下、对可用 SRAM 进行分区、这样就不会发生类似的仲裁条件。 DMA 控制器确实提供了几个中断条件、CPU 可以使用这些中断条件来避免运行在您描述的情况下:帧传输完成、最后一帧传输开始、半块传输完成、块传输完成。