c - 如何使用 DMA 或不使用 DMA 在 ARM9 s3c2440 上访问以将数据从 io 传输到内存

标签 c embedded-linux dma arm9

我想将 8 位并行数据从 IO 传输到内存,数据以大约 5 Mhz 的速度非常快地传输,我正在通过使用 S3C2440(400Mhz)处理器的友好 arm 在基于 ARM9 的套件上使用嵌入式 linux任何 body 请告诉我从哪里开始,我的数据是来自 adc 的视频信号 我已经在互联网上读到我可以使用 DMA 执行此操作,但我需要一个开始...

最佳答案

忘掉这个设备上的 DMA。 ADC 不可用作 DMA 源。这样做的一个原因是 DMA 只对传输多个字节/字/任何东西有用——设置、启动 DMA 和处理 OnCompletion 中断的开销使得它对于偶尔传输一个项目毫无意义。您的 ADC 没有缓冲,只有一个带有 10 信号的输出寄存器。位。

使用 FIQ 处理程序提取 ADC 结果。如何缓冲输出并发出信号以进行进一步处理取决于您和 linux 驱动程序框架。

关于c - 如何使用 DMA 或不使用 DMA 在 ARM9 s3c2440 上访问以将数据从 io 传输到内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9432081/

相关文章:

linux - "Top"重定向到文件时输出被截断?

linux - 如何在 yocto 中将下载文件夹存储在我们的私有(private)仓库中

c - 在函数 2D DMA 中传递地址

c - 如何使用 C 以编程方式回溯 fork 子项的崩溃

c - 用于缩短 C 中结构成员引用的宏

c - XLib:全屏后如何返回窗口模式?

linux-kernel - 如何使用 linux 驱动程序读取/写入 USB 存储设备?

c++ - C++ 17 POSIX信号量或condition_variable?

linux - 机器上的两个 NIC,将它们绑定(bind)到 OS 分配的单独接口(interface)

c - 识别DMA内存在/proc/mtrr和/proc/iomem中?