当前位置:首页>Linux>【黑金云课堂】FPGA技术教程Linux开发:系统进阶-PS DMA

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

  • 2026-10-11 05:51:08
【黑金云课堂】FPGA技术教程Linux开发:系统进阶-PS DMA

Linux 开发第 4 章 32节 系统进阶-PS DMA,选自ALINX 黑金云课堂 FPGA 免费直播课。该课程由 ALINX 资深工程师团队倾力打造,从 0 到 1 系统化教学,帮助每位工程师跨过 FPGA 开发门槛。

🔍 ALINX:关注 ALINX,进入视频号即可查看完整黑金云课堂 FPGA 视频教程。配合笔记学习效果更佳。

系统进阶 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系统移植、驱动编写、应用开发

    最新文章

    随机文章