问题标签 [dma]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1205 浏览

linux-kernel - 在X86平台中,DMA操作是否意味着在MMIO地址空间和系统内存地址空间之间移动数据?

在现代 X86/X86_64 平台上,由于 MMIO 机制,DMA 操作是在 MMIO 地址空间和内存地址空间之间移动数据吗?在Linux内核中,我看到有一个dma_addr_t定义。这种类型是否用于 MMIO 地址?

0 投票
1 回答
2087 浏览

x86 - 如何通过 DMA 控制器访问 RAM 内存?

我想将数据从闪存复制到 RAM。那么如何在 DMA 控制器中设置 RAM 的目标内存地址,以便它可以使用其通道将数据从源地址(在闪存中)复制到 RAM 内存。

我在 x86 架构上做它,它是一个 8237 DMA。

0 投票
1 回答
583 浏览

linux-kernel - 如何在 Linux 中访问 DMA

我正在 Linux 中编写一个需要实现的设备驱动程序DMA

很明显,DMA可以通过调用来分配缓冲区pci_alloc_consistent()。但是我们如何从用户级别向这些缓冲区写入命令呢?

任务包括将值写入特定寄存器,这些是如何使用DMA命令实现的?

0 投票
1 回答
3641 浏览

linux - PCIE linux内核驱动程序中的流式DMA

我正在为 Linux 内核开发 FPGA 驱动程序。代码似乎在 x86 上运行良好,但在 x86_64 上我遇到了一些问题。我实现了流式 DMA。所以它就像

pci_map_sg返回的地址如0xbd285800,未对齐PAGE_SIZE,所以我不能发送完整的第一页,因为 PCIE 规范说

“请求不得指定导致内存空间访问跨越 4 KB 边界的地址/长度组合。”

有没有办法获得对齐的地址,或者我只是错过了一些重要的事情?

DMA 的源代码

0 投票
2 回答
369 浏览

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

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

0 投票
2 回答
2092 浏览

linux - 如何分配 4-8 MB 对齐的 DMA Linux

我正在使用 Fedora 14,并且正在为 PCI 交换机构建驱动程序。对于那个开关,我需要分配 8MB 的 DMA 内存(我可以处理 2*4MB),但我需要它与内存大小对齐,例如,如果它是 8MB,那么基地址的前 23 位应该是 0。

我怎么做?

0 投票
1 回答
3466 浏览

network-programming - 多线程应用程序中的直接内存访问 (DMA) 调度

我想使用 DMA 来加速网络 I/O(通过 Internet 进行密集的磁盘读取和输出)。我想知道我是否有一个多线程应用程序,其中每个线程发出 DMA 传输 操作系统如何安排磁盘 I/O 和 DMA 传输?

据我了解,内核在没有用户程序的情况下将所需的数据部分从磁盘加载到 RAM 并发出 DMA 传输。因此,磁盘调度程序不会有太大帮助(只有一个内核进程总是访问磁盘)。我还可以希望在加载到内存中的数据时有任何内核设施来安排 DMA 传输吗?

0 投票
1 回答
1124 浏览

linux - 同时 DMA 到用户存储器

考虑这个

用户程序中的线程 1:

用户程序中的线程 2:

司机朗读:

请注意,两个传输都使用第 7 页,这是一个大问题,有时会导致错误数据(在一个 buf 的末尾找到 0xee)。为了清楚起见,两个读取在不同的 DMA 通道上运行,因此它们可以同时运行。

我的解决方案是在用户程序中对缓冲区进行页面对齐,以便 2 个驱动程序 DMA 永远不会共享同一页面的部分内容。

我想知道是否有另一种解决方案?我也想知道为什么这是一个大问题。

0 投票
3 回答
6106 浏览

caching - DMA 与 Cache 的区别

对于大多数了解 DMA 和缓存的人来说,这可能是一个愚蠢的问题……我只知道缓存将内存存储在更接近您可以访问的地方,这样您就不必花太多时间在 I/O 上。

但是DMA呢?它可以让您以更少的延迟访问该主内存?

有人可以解释两者之间的差异,或者为什么我只是感到困惑吗?

0 投票
3 回答
28435 浏览

c - 为什么 mmap() 比顺序 IO 快?

可能重复:
mmap() 与读取块

我听说(在互联网上某处阅读)mmap()比顺序 IO 更快。它是否正确?如果是,那么为什么它更快?

  • mmap()不是按顺序阅读。
  • mmap()必须像从磁盘本身获取read()一样
  • 映射区域不是连续的 - 所以没有 DMA (?)。

那么mmap()实际上应该比read()文件慢吗?我上面的哪个假设是错误的?