滥用 DMA 设备

问题描述 投票:0回答:1

我正在寻找 DMA(直接内存访问)卡来快速将数据从我的台式电脑发送到 CM4 树莓派。但目前,我的目标是首先让它在运行 Windows 10 的笔记本电脑上运行。这样我就可以弄清楚要发送到 DMA 的内容以获得我想要的结果,而不必在我的操作系统上开发它。我不舒服。目标是不让我的 CPU 执行这些传输。

上下文:我误读为数据传输设备,但我现在明白它是一个在我的主板上添加两个 USB 端口的设备(我是一个愚蠢的 18 岁孩子)。

我的想法是,所有设备都只是向 PCIE 插槽发送 1(高电压)和 0(低电压),而这些一系列 1 和 0 与速度相结合,使设备成为某种类型的设备。例如,如果我让微控制器向我的计算机上的 USB 端口发送与鼠标相同的电压,那么它就会在我的计算机上显示为鼠标。同样,如果我像 DMA 控制器一样向 PCIE 总线发送正确的电压,我就可以拥有一个 DMA 设备(即使它的速度低于我在网上看到的 6,000 美元的设备)。这是假设我购买的 PCIE 卡是双向的(确实如此)

我向社区提出的问题:这可能吗,还是我遗漏了一个主要概念?如果是这样,我在哪里可以找到对我有帮助的开源项目?

我还没有尝试任何东西,我不知道从哪里开始,寻求社区帮助。

usb dma low-level pci-e bus
1个回答
0
投票

USB 控制器上的 PHY(物理接口)仅设计用于发送 USB 信号,因此即使您将其连接到某些 PCIe 通道,也无法与 PCIe 控制器通信。 电压电平和编码之类的东西被融入到硬件逻辑中,而不是完全受软件控制。

如果您购买的 USB 卡支持 Thunderbolt,并且您有合适的电缆,它实际上可以传输 PCIe 数据。 但即便如此,它也将其封装在数据包中(就像 IP 如何承载 TCP 数据包,而 TCP 数据包又可以由以太网数据包承载)。 它需要与另一端的 Thunderbolt 设备通信,而不是与原始 PCIe 插槽通信。

现代USB 3本身是一个有点合理的协议和物理层,用于发送高速数据,并且可以使用DMA。 但请参阅https://superuser.com/questions/1681119/pc-to-pc-file-transfer-with-usb-c-%E2%86%94-usb-c-or-usb-c-%E2 %86%94-usb-ordinary-cables-is-it#comment2581858_1681132 - 除非其中一台计算机具有硬件如果它的一个 USB 端口可以使其充当“设备”而不是主机,那么您就不走运了。 除非两个系统都有 USB4:

“大多数计算机通常没有允许它们充当设备的软件”——这是一个深刻的误解。要充当 USB 设备,计算机必须具有专用硬件块以及控制主机设备数据流/多路复用器的方法。大多数/所有桌面上都没有。 “仅仅软件”无法使USB主机控制器成为“设备控制器”,硬件功能有根本的不同。 USB3 及更早版本中没有主机到主机连接的逻辑模型。这个概念仅在 USB4 中引入。

霹雳:

以太网、USB 和 PCIe 之类的物理层必须权衡延迟和带宽、功耗、实现复杂性以及许多其他因素,即使它们都使用差分对(因此接收器通过一对差分对来测量电流)引脚,而不是使用共享接地的电压作为多个引脚的参考。)。 请参阅https:// electronics.stackexchange.com/questions/644300/how-is-usb-3-2-still-serial-when-there-are-so-many-data-cables/644426#644426https:// electronics.stackexchange.com/questions/393462/why-is-digital-serial-transmission-used-everywhere-i-e-sata-pcie-usb回复:为什么串行是 USB 之类的首选。 (我不知道其中任何一个对你来说是正确的技术细节水平;我在谷歌上搜索了一些,但没有看到任何我想链接的好文章,该文章详细介绍了内部总线(如 PCIe)的权衡,这些总线在主板上路由了走线与必须通过长柔性电缆工作的东西相比)

© www.soinside.com 2019 - 2024. All rights reserved.