Arm DMA控制器特性和术语

Arm DMA控制器特性和术语,arm,dma,Arm,Dma,我正在阅读a的一些技术参考资料,但我不了解很多东西,似乎我遗漏了一些要点,我没有直接处理DMA的实际经验,但至少想了解理论 文件中提到: DMA控制器包含一个指令处理块,用于 使其能够处理控制DMA传输的程序代码 那么,指令处理块的用途是什么?谁把指令载入其中?我的意思是,如果我在我的设备上写一个驱动程序,那么为了从我的设备上传输一大块数据,我应该把指令加载到DMA上,这样做吗?如果没有DMA,我会给主处理器提供相同的指令吗 DMAC还包含一个ARM AMBA和AXI主接口单元,用于 将程序代码

我正在阅读a的一些技术参考资料,但我不了解很多东西,似乎我遗漏了一些要点,我没有直接处理DMA的实际经验,但至少想了解理论

文件中提到:

DMA控制器包含一个指令处理块,用于 使其能够处理控制DMA传输的程序代码

那么,指令处理块的用途是什么?谁把指令载入其中?我的意思是,如果我在我的设备上写一个驱动程序,那么为了从我的设备上传输一大块数据,我应该把指令加载到DMA上,这样做吗?如果没有DMA,我会给主处理器提供相同的指令吗

DMAC还包含一个ARM AMBA和AXI主接口单元,用于 将程序代码从系统内存提取到指令缓存中。DMA指令执行引擎从其指令缓存执行程序代码,并通过相应的指令队列调度读/写AXI指令

我知道什么是AMBA和AXI,但仍然是。和以前一样吗?程序代码是什么,它的用途是什么?如果DMA控制器本身具有先前的指令处理块,那么什么是指令缓存?什么是指令执行引擎?它像DMA的cpu吗

这些是主要的事情,我想在理解它们之后,其他事情也会更清楚


由于我没有找到太多关于该领域的好答案和参考资料,我将不胜感激。

我没有使用该DMA控制器的经验。然而,其他非专用DMA控制器有一个指令处理块,它可以做一些简单的事情,比如增加指针。即,写入FIFO寄存器与传统的基于阵列的内存相比。IPU可能能够计算不同的CRC并调度多个DMA传输。DMA IPU需要从某个地方获取其代码。例如,对于UART,您可以将SDLC/HDLC帧放在IPU内。通常情况下,DMA实际上是一个非常有限的RISC CPU,具有多个端口的加载/存储单元。IPU=指令处理单元?因此,DMA驱动程序基本上是通过将一组有限的RISC指令加载到DMA指令块来初始化DMA控制器的?是的,这是我快速阅读信息的猜测。DMA引擎是一个可能有多条总线的小型CPU。对于专用DMA以太网,USB接口通常没有这种灵活性。这是一个更通用的DMA引擎,因此您经常需要一些专门的重复数据CRC/校验和、分散/聚集,这些数据在传输数据时非常适合。允许对DMA引擎代码进行编程使引擎适合更多的用例。