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

系统进阶 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系统移植、驱动编写、应用开发
相关推荐
Apipi*5 小时前
30天速通Linux 第六章信号及信号处理
linux·运维·信号处理
天启HTTP6 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
广州浮点FLOATLIC9 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
BLUcoding9 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
AIgorithmGEEK9 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Nil2089 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)9 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter6259 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器
xh didida11 小时前
Linux -- 基础IO
linux·服务器·开发语言·c++
奋斗的阿狸_198611 小时前
ESP32-S3 + ES7210 四通道麦克风录音上传方案
c语言·开发语言·fpga开发