问题标签 [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 回答
3689 浏览

c - 使用 STM32F103 微控制器 (Cortex-M3) 重新编程 DMA 起始地址

下面的 IRQ 处理程序耗尽了 USART3 传入的 32 个字节数据。第一个 IRQ TC 事件读取前 6 个字节,然后重新编程 DMA 引擎以读取最后 24 个字节。第二个 TC 重新绘制它以再次读取标头此方法将允许使用 DMA 的可变长度消息。但是我似乎无法更改 DMA 起始地址。我希望能够将每条消息存储在单独的缓冲区中,但是它只是在收到每条消息时将第一个缓冲区覆盖。我究竟做错了什么?微控制器是 STM32F103ze (Cortex-M3)。

0 投票
1 回答
264 浏览

dma - 当 DMA 控制器被选中时会发生什么?

我正在尝试了解 8237A-5 DMA 控制器的来龙去脉。我一直在阅读它,现在我已经开始在软件的门级设计它。CS 引脚低电平有效。如果它在这里得到一个高信号,会发生什么?所有其他引脚都只是高 Z 吗?当它收到低信号时会发生什么?

0 投票
6 回答
7646 浏览

java - 如何在 java 中使用 DMA 或 RDMA?

这里的“DMA”是指:直接内存访问,“RDMA”是:远程直接内存访问。

我使用 Java 创建了一个应用程序来传输股票数据,但我发现延迟比我预期的要大。听说有人开发同类型的应用程序使用“DMA/RDMA”,性能不错,不知道能不能在Java中使用“DMA/RDMA”?

如果没有,我应该使用什么语言,是否有任何好的库可以使用?

0 投票
0 回答
55 浏览

memory - 内存数据总线分解

假设我们有一个 32 位宽的内存总线连接到网络交换机中的共享内存。现在我想让数据包的存储最大化并行。我在每个输入端口后放置了一个 DMA,因此在一个数据包完全存储之前,交换机控制器不会被阻塞。假设每个输入端口的一个数据包为 8 位。那么是否可以将内存总线分解为4个8位的子内存总线,以使每个DMA可以将一个8位宽的数据包并行引导到相应的内存地址(暂时忽略冲突)?

很抱歉提出这样一个奇怪的问题,并且不太了解计算机的组织和架构。

0 投票
1 回答
3684 浏览

c - 在 Linux 中 DMA 传输到从 PCI 设备

我对使用 PCIe 设备进行 DMA 传输有点困惑。

例如,我有一个从属 PCIe 设备,我想使用 DMA 事务将数据块从设备传输到 RAM。请注意,该设备是从设备,并且上面没有 DMA“机器”。

我知道我需要首先在 RAM 中获得一个支持 DMA 的缓冲区(通过分配一个一致的缓冲区,或者通过映射一个页面)。

但接下来是什么?启动从地址 S 到地址 D 的 N 个字节的 DMA 传输的 API 是什么?

现代系统可以向/从从pci 设备发出 DMA 传输吗?如果是这样,那么 Linux API 是什么?


如此处所述:

[ISA] 在最初的 IBM PC 中,只有一个 Intel 8237 DMA 控制器 [...] PCI 架构没有中央 DMA 控制器,这与 ISA 不同。相反,任何 PCI 组件都可以请求控制总线(“成为总线主机”)并请求读取和写入系统内存

PCI 总线没有“中央”DMA 控制器——相反,每个设备都可以是一个 DMA“控制器”。

0 投票
1 回答
560 浏览

linux - Why splice with sockets cannot improve performance without DMA?

In Wikipedia's introduction to splice, I found:

When using splice() with sockets, the network controller (NIC) must support DMA.

When the NIC does not support DMA then splice() will not deliver any performance improvement. The reason for this is that each page of the pipe will just fill up to frame size (1460 bytes of the available 4096 bytes per page).

From what I understand, the splice improves performance because:

  • there's less context switching
  • it minimizes the number of copies (minimum two DMA copies)

If the NIC does not support DMA copy, we use CPU copy. This is still better than normal copies which have to go to the user space.

So, I don't understand why Wikipedia says there's no performance improvements without DMA support in NIC.

0 投票
2 回答
5273 浏览

memory - 如果 DMA 控制器会减慢系统速度,为什么还要使用它?

我在一本书中读到:

如果系统中的 DMA 控制器以 5 MHz 的最大速率运行,而我们仍然使用 100 ns 内存,则最大传输速率为 5 MHz,因为 DMA 控制器比内存慢。在许多情况下,DMA 控制器会在发生 DMA 传输时降低系统速度。

我认为 DMA 控制器的全部原因是加快速度,而不是减慢速度。那么,如果它减慢速度有什么帮助呢?为什么不让 DMA 控制器和内存一样快呢?

0 投票
2 回答
10538 浏览

dma - DMA 传输数据速率

我正在尝试了解 DMA 传输速率,但我不明白这个问题。我有答案,但不知道如何到达那里。

这个问题涉及使用 DMA 处理到达输入接口的数据的输入和存储在内存中,使用这种机制可以实现的可实现的数据速率,以及用于特定数据速率的总线带宽(容量)。您将获得有关每个 DMA 传输执行的时钟周期的详细信息,以及用于获取和释放总线的时钟周期。下面给出:DMA 设备在输入接口和内存之间传输单个数据项所需的时钟周期数,获取和释放系统总线的时钟周期数,每个数据的大小(以位为单位)项目和时钟频率。

每次数据传输的时钟周期数 8

获取和释放总线的时钟周期数 4

每个数据项的位数 = 8

时钟频率 = 20MHz

A) 以 Kbits/秒为单位的最大可实现数据速率是多少?

B) 如果数据速率为 267Kbits/sec,则 DMA 设备使用总线时钟的百分比是多少?

答案

A)20000.0

B)2.0

提前致谢。

0 投票
2 回答
2658 浏览

protocols - Fix Protocol Api 外汇访问 - 开发应用程序

有没有人有任何使用 Fix Api 协议(使用 FIX 4.4 协议)开发应用程序来通过这个进行外汇交易的经验?

我想知道如何以及何时开始?我在哪里可以获得测试环境?我在哪里可以获得一些编写代码/与外汇经纪商一起使用代码的示例?

0 投票
1 回答
344 浏览

opengl - VBO 不工作动态(内存分配)

我通过 DMA 尝试 VBO。但它不起作用。

我怀疑 glBufferData。(我可能错了 ArrayPointer)。请帮我。

对不起,我的英语太差了。。