最近练了一段时间的DMA传输,现做如下的总结,分享自己获得心得以及遇到的一些问题。

在系统运行时,当需要传输大量数据时,可以采用DMA的方式进行传输,以解脱出CPU来处理其他命令。

Nios II中的DMA传输有以下三种形式:

1、存储器到存储器

这种情况下需要同时打开发送通道和接收通道,而且源地址和目标地址都是自增的。

tx = alt_dma_txchan_open("/dev/dma_0");//打开发送通道

dma_res = alt_dma_txchan_send(tx, tx_buf, 32, NULL, NULL); // tx_buf 是源地址

rx = alt_dma_rxchan_open("/dev/dma_0");//打开接收通道

dma_res = alt_dma_rxchan_prepare(rx, rx_buf, 32, dma_done, NULL); // rx_buf是目标地址,dma_done()是DMA完成后被调用的回调函数。

2、存储器到外设

这种情况下只要打开发送通道,而且源地址是自增的,目标地址是固定的。

tx = alt_dma_txchan_open("/dev/dma_0"); // 打开发送通道

alt_dma_txchan_ioctl(tx, ALT_DMA_TX_ONLY_ON, (void *)dst_addr); // dst_addr是目标地址

dma_res = alt_dma_txchan_send(tx, tx_buf, 32, dma_done, NULL); // tx_buf是源地址

3、外设到存储器

这种情况下只要打开接收通道,而且源地址是固定的,目标地址是自增的。

rx = alt_dma_rxchan_open("/dev/dma_0"); // 打开接收通道

alt_dma_rxchan_ioctl(rx, ALT_DMA_RX_ONLY_ON, (void *)source_addr); // source_addr是源地址

dma_res = alt_dma_rxchan_prepare(rx, rx_buf, 32, dma_done, NULL); // rx_buf是目标地址

其中通过alt_dma_txchan_ioctl,alt_dma_rxchan_ioctl还可以设置每次发送和接收的字节数。

下面给出两个实例,说明DMA传输的过程。

1、存储器到存储器

下面程序为SDRAM到onchip-memory的数据传输。

硬件连接图示:

niosii spi 外部_基于Nios_II的DMA传输总结相关推荐

  1. niosii spi 外部_转载:NIOS II spi详解

    NIOS II spi详解 1.说明 本文是依据笔者阅读<Embedded Peripherals (ver 9.0, Mar 2009, 4 MB).pdf>参考文档所作的个人理解,可以 ...

  2. scp 命令 路径_基于SSH的文件传输:scp命令

    日常开发中,经常需要在服务器和本地之间进行文件传输.这里来介绍一种基于SSH的文件传输方法--scp命令 命令格式 scp(secure copy,remote file copy program), ...

  3. niosii spi 外部_NIOS II SPI详解 如何使用SPI方式传输

    NIOS II SPI 详解 如何使用 SPI 方式传输 1 .说明 本文是依据笔者阅读< Embedded Peripherals (ver 9.0, Mar 2009, 4 MB).pdf ...

  4. 鸿蒙开发板Hi3861模拟SPI驱动JLX12864_LCD(UC1701X)_基于code-2.0

    鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码-C文档类资源-CSDN下载鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码博文介绍https://t更多下载资 ...

  5. pcie总线连接两台电脑_基于PCIe总线的多路复用DMA高速传输系统的设计

    摘要:文章针对双处理器设备问的数据通信提出了基于PCIe非透明桥的高速传输系统的设计方法.该方法应用于视频转码设备,实验结果表明当转码设备作为外设与PC主机进行通信时,采用多路虚拟DMA方法的数据传输 ...

  6. 【开源项目介绍】STC32基于u8g2库DMA驱动IIC or SPI OLED屏幕显示

    [开源项目介绍]STC32基于u8g2库DMA驱动IIC or SPI OLED屏幕显示

  7. 【基于 STM32CubeMX + PWM + DMA驱动SW2812b全彩RGB灯】

    基于 STM32CubeMX + PWM + DMA驱动SW2812b全彩RGB灯 STM32CubeMX配置: 工程源码: END 以上就是相关配置,最需要注意的就是时钟以及pre数值以及芯片时钟频 ...

  8. 计算机网络实验_三层架构企业网络_基于Cisco Packet Tracer模拟器

    三层架构企业网络_基于Cisco Packet Tracer模拟器 一.实验目的 1.了解一般企业网络的三层架构模型: 2.了解三层架构企业网络内部的通信流程: 3.理解双核心路由的热备份和负载均衡. ...

  9. stm32芯片休眠模式_基于STM32单片机低功耗模式机制详细解析

    相关推荐 创新的 RXv3 核大幅提升了久经验证的瑞萨电子 RX CPU 核架构性能,实现了高达 5.8 Co... 发表于 2018-10-25 14:54 • 0次阅读 RXv3核实现了5.8 C ...

最新文章

  1. python serial_Python代码爬取3000+ 上市公司的信息!能上市的都有这样一个特点
  2. 自动修改linux下/etc/sysconfig/network-scripts/ifcfg-ethX网卡文件的脚本
  3. bzoj 1008: [HNOI2008]越狱
  4. vbs 窗体文字获取文档_MDI类型窗体设置背景图片
  5. openstack手动部署简单记录
  6. 怎么调用html调色板,JS实现仿PS的调色板效果完整实例
  7. Robotics 机器人运动学 DH参数建模
  8. 原生JS实现上传图片预览效果
  9. 计算机故障排除原则和方法
  10. 中西医结合儿科疾病 100249
  11. BI报表工具FineReport的使用2【帆软聚合报表设计,最常用功能】
  12. 关于跳转页面报404、500错误设置自定义图片和文字
  13. 【CS231n】斯坦福大学李飞飞视觉识别课程笔记(五):图像分类笔记(下)
  14. 仿微信的录制小视频功能
  15. ecshop支持mysql_ecshop安装不支持MySQL
  16. 多旋翼无人机建模之陀螺力矩
  17. 会喊麦的CTO:从外包仔到熊猫直播CTO的技术态度丨今晚直播
  18. 火狐 看网页注释_在Firefox内部(外部)创建注释
  19. 调整计算机启动顺序,电脑双硬盘双系统bios调整硬盘启动顺序的图文教程
  20. js 箭头函数的this详解

热门文章

  1. C++的四种强制类型转换
  2. matlab里插入行和列
  3. shell 脚本初步,启动可执行 jar 文件
  4. mongodb java id 查询数据_java 用 _id 查找 MongoDB 下的数据
  5. 程序员应该如何提问?
  6. js中split()和join()的用法
  7. CSS布局(二) 盒子模型属性
  8. mac中apache服务器及虚拟主机配置
  9. Webpack - 自学笔记
  10. DB 数据同步到数据仓库的架构与实践