IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【DMA SG】DMA SG 模式 -> 正文阅读

[嵌入式]【DMA SG】DMA SG 模式

DMA简介:

AXI 直接存储器访问 (AXI DMA) IP 提供高带宽直接存储器 AXI4 存储器映射和 AXI4-Stream IP 接口之间的访问。它SG模式还可以从中央处理中卸载数据移动任务 基于处理器的系统中的单元 (CPU)。初始化、状态和管理寄存器是 通过 AXI4-Lite 从接口访问。图说明了功能 核心的组成。

?

1、系统内存和stream目标之间的主要高速 DMA 数据移动是 通过 AXI4 Read Master 到 AXI MM2S Stream Master,以及 AXI S2MM Stream Slave 到 AXI4 写入主机。 AXI DMA 还支持多达 16 个多通道的数据移动 SG模式下的 MM2S 和 S2MM 路径。

2、MM2S 通道和 S2MM 通道独立运行。 AXI DMA 提供 4 KB 地址边界保护,自动突发分区,以及提供能力 使用几乎全部带宽功能将多个传输请求排队 AXI4-Stream 总线。此外,AXI DMA 提供字节级数据重新对齐 允许内存读写从字节偏移位置开始。

3、MM2S 通道支持 AXI 控制流,用于将用户应用程序数据发送到 目标 IP。对于 S2MM 通道,提供 AXI 状态流用于接收用户 来自目标 IP 的应用程序数据。

4、可选的 SG Engine 从系统中获取和更新缓冲区描述符 存储器通过 AXI4 SG 读/写主接口。可选描述符 提供排队以最大化主要数据吞吐量。

SG模式描述:

本节定义了 S2MM(接收)和 MM2S(传输)Scatter Gather 的字段 AXI DMA 何时配置为分散/聚集模式的描符。描述符 由 8 个 32 位基本字和 0 或 5 个用户应用程序字组成。描述符有 之后对 64 位地址的支持和对用户应用程序数据的支持。多种的 通过帧开始和帧结束标志支持每个数据包的描述符。 完成状态和完成时中断也包括在内。缓冲区长度可以 描述每个描述符最多 8 MB 的数据缓冲区。需要两个描述符链 两种数据传输方向,MM2S和S2MM。

AXI DMA框图

AXI DMA 结构框图

引脚描述:

0

0

补充重点描述:

  • s_axi_lite_*:上位机通过此接口配置AXI DMA的内部寄存器。
  • m_axi_mm2s_* :上位机到DMA的写通道,传输的是上位机需要写入到外设的数据。
  • m_axi_s2mm_*:上位机到DMA的读通道,传输的是外设写入上位机的数据:即上位机从外设读取的数据。
  • m_axis_mm2s_*:DMA到外设的写通道,DMA通过此通道将上位机的数据写入外设。
  • s_axis_s2mm_*:DMA到外设的读通道,DMA通过此通道读取外设需要传给上位机的数据。
  • m_axis_mm2s_cntrl_*:DMA配置外设的控制通道(未使用)
  • s_axis_s2mm_sts_*:DMA读取外设的状态通道(未使用)
  • m_axi_sg_*:SG模式下的读写内存映射的通道

AXI DMA寄存器内存地址映射

SG模式

0

Scatter Gather 描述符

0

SG模式下典型的系统连接结构

0

SG DMA使用流程

SG模式:

  • AXI DMA 操作需要一个内存驻留数据结构,其中包含 DMA 列表 要执行的操作。这个指令列表被组织成所谓的 一个描述符链。每个描述符都有一个指向下一个要处理的描述符的指针。这 链中的最后一个描述符然后指向链中的第一个描述符。
  • Scatter Gather 操作允许使用多个描述符来描述一个数据包。 此功能的典型用途是允许从以下位置存储或获取标头 来自另一个位置的内存和有效载荷数据。利用的软件应用程序 这可以提高吞吐量。为了描述缓冲区描述符链中的数据包,开始 帧位 (TXSOF) 和帧结束位 (TXEOF) 被利用。当 DMA 获取一个 TXSOF 位设置的描述符,则触发数据包的开始。包继续 获取后续描述符,直到它获取具有 TXEOF 位设置的描述符。
  • 在接收 (S2MM) 通道上,当开始接收数据包时,AXI DMA 标记 带有 RXSOF 的描述符,向软件表明与此关联的数据缓冲区 描述符包含数据包的开头。如果正在接收的数据包以字节为单位更长 计数超过描述符中指定的数量,下一个描述符缓冲区用于存储 接收数据包的剩余部分。这个获取和存储过程一直持续到 整个接收数据包已传输。结束时正在处理的描述符 接收到的数据包由 AXI DMA 标记,RXEOF=1。这表明 软件认为与此描述符相关的缓冲区包含数据包的结尾。
  • 每个描述符在状态字段中包含实际传输的字节数 那个特定的描述符。接收数据包传输的总字节数可以 由软件通过从 RXSOF 描述符到 描述符链到 RXEOF 描述符。 Scatter Gather 继续获取一个额外的 描述符和存储。这在很大程度上提高了 DMA 性能。
  • Scatter Gather 操作从设置控制寄存器和描述符指针开始。 以下按顺序列出了启动 AXI DMA 操作所需的最少步骤:

MM2S 通道:

  1. 在内存中开辟缓存空间,制作链表
  1. 通过 AXI4_LITE 总线将第一个 Descriptor 的地址写入 MM2S_CURDESC 寄存器
  1. 写寄存器 MM2S_DMACR.RS=1 启动 DMA,如果需要,打开 MM2S_DMACR.IOC_IrqEn 中断,结束后会发出中断
  1. 将最后一个 Descriptor 地址写入 MM2S_TAILDESC 寄存器,触发 DMA 开始通过 M_AXI_SG 总线抓取链表的 Descritptor,等 package 传输结束,读取下一个 Descriptor 信息,直到结束。

S2MM 通道:

  1. 在内存中开辟缓存空间,制作链表
  1. 通过 AXI4_LITE 总线将第一个 Descriptor 的地址写入 S2MM_CURDESC 寄存器
  1. 写寄存器 S2MM_DMACR.RS=1 启动 DMA,如果需要,打开 S2MM_DMACR.IOC_IrqEn 中断,结束后会发出中断
  1. 将最后一个 Descriptor 地址写入 S2MM_TAILDESC 寄存器,触发 DMA 开始通过 M_AXI_SG 总线抓取链表的 Descritptor,等 package 传输结束,读取下一个 Descriptor 信息,直到结束。
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-02-06 13:59:12  更:2022-02-06 13:59:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:27:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码