• 正文
  • 相关推荐
申请入驻 产业图谱

【黑金云课堂】FPGA技术教程Linux开发:系统进阶-PS DMA

4小时前
157
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

系统进阶 PS DMA 内容要点

DMA 基础

定义DMA(Direct Memory Access)允许外设直接读写内存,无需 CPU 介入。

传输类型

Memory‑to‑Memory(DDR buffer 复制、图像缓存整理)

Memory‑to‑Peripheral(发送 FIFO、PL 寄存器窗口)

Peripheral‑to‑Memory(采集数据写入 DDR)

Device‑to‑Device(特定硬件链路,较少见)

核心优势:解放 CPU,提高数据吞吐量

Zynq DMA 架构

两种方案

PS DMA(DMAC 硬核)

8 个通道

基地址:0xFD4F0000

PL DMA(AXI DMA IP 核)

适用场景

PS DMA → PS 外设间传输

PL DMA → PL 端数据传输

高级特性

支持 Scatter‑Gather 链式传输

支持 64 位地址

Linux 驱动

框架:内核通过 DMA Engine 框架统一管理(驱动文件:drivers/dma/xilinx/zynqmp_dma.c)。

核心 API

dma_request_channel() – 申请通道

dma_prep_memcpy() – 准备传输

dmaengine_submit() – 提交传输

dma_async_issue_pending() – 启动传输

用户空间访问:可通过 /dev/mem + mmap 访问 DMA 寄存器。

性能与优化

性能对比

小数据量(< 64 KB):DMA 不如 CPU memcpy(存在配置开销)

大数据量(> 64 KB):DMA 优势明显,4 MB 传输可达 4.6 倍加速

优化策略

Scatter‑Gather 链式传输 – 减少 CPU 干预

Cache Line 对齐(64 字节)

缓存一致性 – 使用 dma_alloc_coherent

双缓冲(Ping‑Pong) – 最大化带宽

💡 完整视频讲解可前往 ALINX 视频号进行直播回看

更多细节欢迎关注我们黑金云课堂全年免费直播课, 黑金云课堂七月直播日历 我们将在每周二、三、四,同步推进 Verilog开发、Vitis开发、Linux开发三大系列,带你从零开始,稳扎稳打掌握 FPGA 开发全流程!

系列 内容定位
Verilog开发 硬件描述语言基础、逻辑设计、仿真调试
Vitis开发 Zynq软硬件协同、外设驱动、网络协议
Linux开发 嵌入式Linux系统移植、驱动编写、应用开发

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

芯驿电子自 2012 年成立以来,旗下 AUMO 与 ALINX 两大品牌,在智能车载与 FPGA 行业解决方案领域持续深耕。 ALINX 聚焦 FPGA 解决方案高端产品市场,并积极参与 FPGA 国产化应用发展。至今已推出 100 多款 FPGA SoM 模组和配套板卡,基本完成对 AMD FPGA 产品、紫光同创 FPGA 产品的全系列覆盖,产品远销海外 40 多个国家。 AUMO 专注智能车载,为自动驾驶技术开发破题。至今已推出车载仿真测试系统、视频数据采集、视频数据旁路采集分流、视频数据注入、车载摄像头、车载后视镜等产品线,满足车企和汽车产业链的车载产品开发需求。

微信公众号