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-EP:DMA 内部:DMA 的工作原理

Guru**** 2478765 points
Other Parts Discussed in Thread: TMS570LC4357, TMS570LS3137

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/962789/tms570lc4357-ep-dma-internal-how-the-dma-works

器件型号:TMS570LC4357-EP
主题中讨论的其他器件:TMS570LC4357TMS570LS3137

我计划在 TMS570LC4357上利用 DMA 相当多的时间来传输数据。 TMS570LC4357技术参考手册讨论了 DMA 的功能和配置、但并未讨论 DMA 的工作原理。 是否有一个文档解释了 DMA 的内部以及数据如何从一种类型的存储器传输到另一种类型的存储器? 基本上 、我 会尝试找到以下问题的答案:

DMA 传输时序。
     a. DMA 通道传输一帧数据需要多长时间?
     b. 是否有公式根据元素数量和读取和写入元素的大小来计算时间?


DMA 争用和优先级。 根据 ARM 架构参考手册、DMA 使用 CPU AXI 从器件和 TCM 端口访问 RAM 或闪存。 由于 LSU (加载/存储单元)和 PFU 使用 TCM 端口访问闪存和 RAM、因此 CPU 和 DMA 之间会发生争用、CPU 具有更高的优先级。
     a: 我们是否有办法量化 CPU 访问闪存或 RAM 导致的 DMA 停转时间?
     B. 确保对 RAM/Flash 的 DMA 访问请求不会被标出的机制是什么?
     c. 是否有办法更改优先级、以便 DMA 具有更高的优先级?


3、TCM 有三个端口(ATCM、B0TCM 和 B1TCM)。
     A. 是否可以使用 ATCM 和 B0TCM 或 B1TCM 之一同时访问 RAM 和闪存?

4.在每个 DMA 帧被传输后是否有一个总线释放时间? 换言之、DMA 控制器是否需要在每次帧传输后的特定时间内释放总线? 如果是、时间有多长?

此致、

Pouya

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

    [引用 user="Pouya Sabouriazad"]1. DMA 传输时序。
         a. DMA 通道传输一帧数据需要多长时间?
         b. 是否有公式根据元素数量和读取和写入元素的大小来计算时间?[/引用]

    遗憾的是、我们没有在任何文档中写入此类数据。  显然、传输一个数据帧所需的时间将取决于一个帧的大小、如您配置的帧中的元素数量。 由于 DMA 需要在通道之间进行仲裁、它还取决于待处理通道的数量。 当多个主器件访问同一资源时、互连中也会发生仲裁(例如、CPU 和 DMA 同时访问 RAM、仲裁将在互连中发生)。 DMA 读取和写入的资源也在所涉及的周期数中起着作用。 例如、与读取外设寄存器和 RAM 相比、从闪存读取所需的周期更多。 读取外设寄存器的周期也多于从 RAM 中读取的周期。  涉及的变量太多了、我想这是没有收集此类数据的原因。 我知道这可能不是您正在寻找的答案、但这些信息只是不可用的。  

    [引用用户="Pouya Sabouriazad"]

    DMA 争用和优先级。 根据 ARM 架构参考手册、DMA 使用 CPU AXI 从器件和 TCM 端口访问 RAM 或闪存。 由于 LSU (加载/存储单元)和 PFU 使用 TCM 端口访问闪存和 RAM、因此 CPU 和 DMA 之间会发生争用、CPU 具有更高的优先级。
         a: 我们是否有办法量化 CPU 访问闪存或 RAM 导致的 DMA 停转时间?
         B. 确保对 RAM/Flash 的 DMA 访问请求不会被标出的机制是什么?
         c. 是否有办法更改优先级、以便 DMA 具有更高的优先级?

    [/报价]

    您对架构有一些误解。 LC4357中的闪存和 RAM 是处理器的2级存储器。 1级内存是高速缓存内存。 LC4357架构中根本没有 ATCM、BTCM。 我想您指的是其他 Hercules MCU、例如 TMS570LS3137类型的器件。 这些器件确实将 ATCM 连接到闪存、将 BTCM 连接到 RAM。  

    处理器读取的所有指令提取和数据都是通过 AXI-M (2级)接口进行的。 AXI-M 和 CPU 被路由至 CPU 互连、在该互连中仲裁以访问闪存和 RAM。 CPU 互连使用循环仲裁、因此没有主器件无法启动。 无法更改 CPU 互连仲裁。 由于使用了循环仲裁、因此没有理由更改 DMA 的优先级、这与固定优先级不同。

    处理器的外设访问使用专用 PP_AXI 总线连接到外设互连。 我想、如果您看架构图、更明显的是可以查看不同总线的数据流。  

    [引用 user="Pouya Sabouriazad"]3. TCM 有三个端口(ATCM、B0TCM 和 B1TCM)。
         A. 是否可以使用 ATCM 和 B0TCM 或 B1TCM 之一同时访问 RAM 和闪存?[/QUERP]

    如上所述、LC4357器件中没有 ATCM / BTCM。  

    [引用 user="Pouya Sabouriazad"]4. 每个 DMA 帧传输完成后是否有总线释放时间? 换言之、DMA 控制器是否需要在每次帧传输后的特定时间内释放总线? 如果是、时间有多长?[/报价]

     您是否将某些模拟交流时序称为总线释放时间? 如果这是问题、那么不需要这样的时间。  当一个通道完成时、状态机将切换到下一个优先级最高的待处理通道。  在状态机在下一个通道上启动之前、您可能会谈论两个问题。 状态机需要首先读取控制数据包(存储通道信息的存储器)。 存储器是 DMA 的本地存储器、读取通道信息需要两个周期。 读取通道信息后、状态机启动传输。