Hi3531 PCIe 控制器内含DMA 控制器,DMA 控制器包含有两个DMA 通道(一个

DMA 读通道和一个DMA 写通道)。PCIe 控制器内包含的DMA 控制器用于大数据量

的存储器读写事务,以提高数据传输的速率。

DMA 控制器可以实现如下的存储器读写事务:

DMA 控制寄存器

软件可通过DMA 控制寄存器来配置DMA 传输,也可以通过DMA 控制寄存器启动和

停止DMA 传输。DMA 控制寄存器位于PCIe 控制器的配置寄存器空间内,DMA 控制

寄存器的定义请参考本章的PCIe 寄存器描述。

注意中提到的部分DMA 控制寄存器包含:

 DMA_CH_CTRL 寄存器;

DMA_TRANS_SIZE 寄存器;

DMA_SAR_LOW 和DMA_SAR_HIGH 寄存器;

DMA_DAR_LOW 和DMA_DAR_HIGH 寄存器;

DMA_LINK_PT_LOW 和DMA_LINK_PT_HIGH 寄存器。

1. 软件设置DMA_CH_INDEX[ch_dir]=1,表明后续操作目标寄存器为读通道控制寄存

器。

2. 软件设置DMA_TRANS_SIZE=0x400,表明传输长度为1024Byte。

DMA 读/写通道使能

DMA 通道在系统复位后默认是没有使能的,要使用PCIe 的DMA 通道,需使能DMA

的读写通道。

通过设置DMA_RD_ENGINE_EN[dma_rd_engine_en]为1,使能DMA 读通道。

通过设置DMA_WR_ENGINE_EN[dma_wr_engine_en]为1,使能DMA 写通道。

DMA 源地址和目标地址

DMA 写:源地址(SAR)为本地内存空间,目标地址(DAR)为对端设备内存空间。

DMA 读:源地址(SAR)为对端设备内存空间,目标地址(DAR)为本地内存空间。

配置DMA 读或写通道的DMA_SAR_LOW 和DMA_SAR_HIGH 寄存器可以指定DMA

传输的源地址,配置DMA 读或写通道的DMA_DAR_LOW 和DMA_DAR_HIGH 寄存

器可以指定DMA 传输的目的地址。DMA 源地址和目的地址寄存器请参看PCIe DMA

控制寄存器定义。

DMA 传输过程中,源地址和目的地址寄存器随着传输过程而递增。可以通过读取源地

址和目的地址寄存器的值来确定DMA 当前传输所获取数据的源地址和当前所写数据

的目标地址。

DMA 源地址和DMA 目的地址都是双字节对齐的,因此最低两比特都必须设置为0。

在传输过程中此最低两比特也一直为0。

DMA 传输长度

DMA 读或写操作的传输长度由DMA 读或写通道的DMA_TRANS_SIZE 寄存器来指

定。该寄存器的值表示DMA 请求传输的数据的字节数。在DMA 传输过程,此寄存器

的值会随着传输过程递减,可以通过读取此寄存器确定当前还有多少字节未传输。传

输成功结束后此寄存器值应该为0。

DMA 传输长度取值范围为:最小为1 个字节,最大为4G 字节。

启动DMA 传输

在配置好DMA 读通道的控制寄存器之后,通过向

DMA_RD_DOORBELL[rd_doorbell_num]写入0 来启动DMA 读传输。

在配置好DMA 写通道的控制寄存器之后,通过向

DMA_WR_DOORBELL[wr_doorbell_num]写入0 来启动DMA 写传输。

停止DMA 传输

在DMA 传输过程中如果需要停止DMA 传输,可以通过如下寄存器控制来手动停止

DMA 读或者DMA 写传输:

 通过向DMA_RD_DOORBELL[dma_rd_stop]写入1 来停止DMA 读传输。

通过向DMA_RD_DOORBELL[dma_wr_stop]写入1 来停止DMA 读传输。

如果DMA 传输过程中没有发生错误,DMA 传输将在所有的数据传输完成后自动停

止。

HI_MPI_SYS_SetReg(0x20800A6C,0x00000000);//bit31 0 WRITE  DMA_CH_INDEX

    HI_MPI_SYS_SetReg(0x20800A78,0x00000010);//DMA_TRANS_SIZE 10

HI_MPI_SYS_SetReg(0x2080097c,0x00000001);//使能写操作

HI_MPI_SYS_SetReg(0x20800A7c,0xc0000000);// 源地址—低位

    HI_MPI_SYS_SetReg(0x20800A80,0x00000000);// 源地址—高位

HI_MPI_SYS_SetReg(0x20800A84,0x0544f000);// 目标地址—低位 PC机申请的物理地址

    HI_MPI_SYS_SetReg(0x20800A88,0x00000000);// 目标地址—高位

HI_MPI_SYS_SetReg(0x20800980,0x00000000);//启动写操作

HI3531由DMA 发起PCIe 事务的更多相关文章

  1. PCIe事务层包TLP Header详解

    1.事务层包的一般格式: 包的header为3DW(double word)或者4DW(一个DW代表4字节),数据负载为1~1024DW(即4~4096byte,最大4M),TLP Digest可选, ...

  2. PCIe事务层の详解(一)

    PCIe总线的通信机制:当一个设备要想另一个设备进行读取通信时,请求方requester需要向另一个设备发送请求request,靶向方作为事件完成方completer,以complete Packet ...

  3. hi3531的pcie控制器使能

    1. 关闭PCIe 控制器: 通过向系统控制寄存器PERIPHCTRL30[pcie0_app_ltssm_enabl]写入0 关闭PCIe0 控制 器. 通过向系统控制寄存器PERIPHCTRL77 ...

  4. FPGA与PCI-E

    从并行到串行: PCI Express(又称PCIe)是一种高性能.高带宽串行通讯互连标准,取代了基于总线的通信架构,如:PCI.PCI Extended (PCI-X) 以及加速图形端口(AGP). ...

  5. 转载 大话pcie

    原文https://blog.csdn.net/abcamus/article/details/76167747 一.PCIe DMA机制 PCIe控制器也提供DMA(Direct Memory ac ...

  6. 图解PCIE原理(从软件角度)

    1  PCIE基本概念 1.1   PCIE拓扑架构图 1.2 PCIE Switch内部结构图 1.3  PCIE协议结构图 2 PCIE枚举原理 2.1 Type0&Type1配置头空间 ...

  7. Xilinx DMA的几种方式与架构

    DMA是direct memory access,在FPGA系统中,常用的几种DMA需求: 1. 在PL内部无PS(CPU这里统一称为PS)持续干预搬移数据,常见的接口形态为AXIS与AXI,AXI与 ...

  8. [WCF编程]12.事务:事务传播

    一.事务传播概述 WCF可以跨越服务边界传递事务.这可以让服务参与到客户端事务里,客户端还可以在同一个事务里调用多个服务.客户端本身不一定是WCF服务.客户端事务是否传播到服务端可以通过绑定和操作契约 ...

  9. (6)redis 事务

    redis对事务的支持目前还比较简单.redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令. 由于redis是单线程来处理所有client的请求的所 ...

随机推荐

  1. 细说Django的admin

    在admin.py中只需要将地Model中某个类注册,即可在Admin中进行增删查改的功能,例如: admin.site.register(models.UserInfo) 这种方式比较简单,如果想要 ...

  2. Sonar 常用代码规则整理(二)

    摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ============ ...

  3. ElasticSearch安装中遇到的一些问题

    前段时间部署ElasticSearch,现把安装中遇到的一些问题和注意细节与大家分享一下. 系统:CentOS7.2 0.安装JDK 8,配置环境变量 官网下载地址:http://www.oracle ...

  4. S5PV210时钟,看门狗定时器

    晶振:时钟源(操作主要有两个,倍频,分频) A8的时钟源: 时钟域,每个时钟域(不同的最高频率和最低频率)管理着不同的电路模块: 不同的时钟域对应不同电路模块表 时钟电路:懂得看时钟电路(时钟源选择开 ...

  5. 快速构建一个简单的单页vue应用

    技术栈 vue-cli webpack vux,vux-loader less,less-loader vue-jsonp vue-scroller ES6 vue-cli:一个vue脚手架工具,利用 ...

  6. 关于webconsole报../website/console.go:35: undefined: ssh.InsecureIgnoreHostkey 错误解决方案

    1.首先,进入webconsole目录删除/opt/webconsole/src/golang.org/x/目录下 crypto文件夹 2.然后,在/opt/webconsole/src/golang ...

  7. PHPStorm 常用 设置配置 和快捷键大全 Win/Mac

    [转自 http://blog.csdn.net/fenglailea/article/details/53350080] PHPStorm 下载及主题样式下载 http://www.lanmps.c ...

  8. 【HTTP协议】---HTTPS协议

    HTTPS协议 一.为什么需要https 1.HTTP是明文传输的,也就意味着,介于发送端.接收端中间的任意节点都可以知道你们传输的内容是什么.这些节点可能是路由器.代理等. 举个最常见的例子,用户登 ...

  9. JavaScript 知识点

    JS基础 页面由三部分组成: html:超文本标记语言,负责页面结构 css:层叠样式表,负责页面样式 js:轻量级的脚本语言,负责页面的动效和数据交互 小总结:结构,样式和行为,三者相分离 在htm ...

  10. Android -传统蓝牙通信聊天

    概述 Android 传统蓝牙的使用,包括开关蓝牙.搜索设备.蓝牙连接.通信等. 详细 代码下载:http://www.demodashi.com/demo/10676.html 原文地址: Andr ...