0

DMA 的实际工作原理是我所知道的理论;-- http://en.wikipedia.org/wiki/Direct_memory_access

但是在编程中我们要如何管理呢?

我正在使用 RPI 并期待使用 DMA 实现以下操作。
假设我想使用 SPI 从 SD 卡读取数据 ---- TX 读取数据 --- 到 USART。

我是否必须编写数据传输例程并将它们提供给 dma 或者它是由 DMA tx 和 rx 通道处理的?

什么Linux内部用于它?

一些专家可以告诉在这方面要遵循哪些步骤。我是 DMA Programming.lin 的新手

4

1 回答 1

0

您可以查看 Raspberrypi SoC 硬件规格。 http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf

Broadcom DMA 支持 SPI TX/RX 和 SD 主机接口。这意味着它至少可以支持设备到内存(我不确定 Broadcom SoC 是否支持设备到设备 DMA)。

不同的 SoC 有不同的 DMA 配置方式。例如,它只需要在一些简单的 DMA 引擎上分配源地址、递增/递减(长度)、目标地址、递增/递减(长度)、计数器和中断。完成 DMA 传输后,将触发中断。

粗略回顾一下博通的SoC。它还有其他选项,例如:WAITS、PERMAP。我不是 Broadcom SoC 专家,也许你可以使用默认值来配置它。

于 2012-12-04T08:42:14.647 回答