Knowledge / 揭秘

定制 DMA 采集固件制作揭秘

揭秘市面上定制 DMA 采集固件的制作过程,帮助你了解其中原理。

一、背景:PCILeech-WiFi 项目

"网卡固件"之所以一度成为主流,是因为 GitHub 上曾公开过一个名为 PCILeech-WiFi 的项目。该项目将 PCILeech 的控制通道改为 WiFi(基于 UART → ESP8266/WiFi 串口桥),使主机与 DMA 板卡之间不再依赖有线连接,实现了初步的无线远控能力。

特性原版 PCILeechPCILeech-WiFi 改造
控制通道USB 有线连接WiFi 无线桥接
桥接芯片FT601ESP8266 / ESP32
距离限制USB 线长(~5m)WiFi 覆盖范围
开源程度完整开源基于开源二次修改

二、从开源到"定制"的演化

早期源码被多个卖家、小组复制并演化成所谓"网卡固件"。由于 PCILeech-WiFi 提供了现成的 UART-to-WiFi 桥接逻辑、控制指令解析模块、简化 DMA 读写接口,许多开发者在此基础上稍作修改即包装为"网卡定制固件""私有定制固件"等,形成了大量低成本、高利润的固件销售行为。

  1. 原始阶段:直接使用 PCILeech 开源代码,USB 有线连接。
  2. WiFi 改造:加入 ESP8266 桥接模块,实现无线控制。
  3. 固件伪装:修改 PCIe 配置空间(Device ID、Vendor ID),伪装成网卡设备。
  4. 包装销售:稍作修改后冠以"定制固件""私有固件"名义出售。
⚠️

注意:所谓"定制"固件大多只是在开源项目上做了配置空间替换,核心逻辑(DMA 读写、数据解析)并未重写。真正的独立开发需要完整的 PCIe IP 核设计和固件逻辑编写能力。

三、如何辨别固件真伪

四、真正的开发门槛

想从零开发自己的 DMA 固件,需要掌握以下技能:

技能领域具体内容
FPGA 开发Verilog / VHDL、Vivado 工程管理、Bitstream 生成
PCIe 协议PCIe 配置空间、BAR 区域、TLP 数据包格式
系统结构内存分页(CR3/DTB)、页表遍历、ntoskrnl 内存布局
工具链Teledyne TLScan、PCILeech 源码结构、配置空间提取与转换
💡

想从零开发自己的 DMA 固件?参考 零基础 FPGA 开发 DMA 固件系列 →,从工具准备到 Vivado 编译完整流程。

↑