niosii spi 外部_基于Nios_II的DMA传输总结
最近练了一段时间的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传输总结相关推荐
- niosii spi 外部_转载:NIOS II spi详解
NIOS II spi详解 1.说明 本文是依据笔者阅读<Embedded Peripherals (ver 9.0, Mar 2009, 4 MB).pdf>参考文档所作的个人理解,可以 ...
- scp 命令 路径_基于SSH的文件传输:scp命令
日常开发中,经常需要在服务器和本地之间进行文件传输.这里来介绍一种基于SSH的文件传输方法--scp命令 命令格式 scp(secure copy,remote file copy program), ...
- niosii spi 外部_NIOS II SPI详解 如何使用SPI方式传输
NIOS II SPI 详解 如何使用 SPI 方式传输 1 .说明 本文是依据笔者阅读< Embedded Peripherals (ver 9.0, Mar 2009, 4 MB).pdf ...
- 鸿蒙开发板Hi3861模拟SPI驱动JLX12864_LCD(UC1701X)_基于code-2.0
鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码-C文档类资源-CSDN下载鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码博文介绍https://t更多下载资 ...
- pcie总线连接两台电脑_基于PCIe总线的多路复用DMA高速传输系统的设计
摘要:文章针对双处理器设备问的数据通信提出了基于PCIe非透明桥的高速传输系统的设计方法.该方法应用于视频转码设备,实验结果表明当转码设备作为外设与PC主机进行通信时,采用多路虚拟DMA方法的数据传输 ...
- 【开源项目介绍】STC32基于u8g2库DMA驱动IIC or SPI OLED屏幕显示
[开源项目介绍]STC32基于u8g2库DMA驱动IIC or SPI OLED屏幕显示
- 【基于 STM32CubeMX + PWM + DMA驱动SW2812b全彩RGB灯】
基于 STM32CubeMX + PWM + DMA驱动SW2812b全彩RGB灯 STM32CubeMX配置: 工程源码: END 以上就是相关配置,最需要注意的就是时钟以及pre数值以及芯片时钟频 ...
- 计算机网络实验_三层架构企业网络_基于Cisco Packet Tracer模拟器
三层架构企业网络_基于Cisco Packet Tracer模拟器 一.实验目的 1.了解一般企业网络的三层架构模型: 2.了解三层架构企业网络内部的通信流程: 3.理解双核心路由的热备份和负载均衡. ...
- stm32芯片休眠模式_基于STM32单片机低功耗模式机制详细解析
相关推荐 创新的 RXv3 核大幅提升了久经验证的瑞萨电子 RX CPU 核架构性能,实现了高达 5.8 Co... 发表于 2018-10-25 14:54 • 0次阅读 RXv3核实现了5.8 C ...
最新文章
- python serial_Python代码爬取3000+ 上市公司的信息!能上市的都有这样一个特点
- 自动修改linux下/etc/sysconfig/network-scripts/ifcfg-ethX网卡文件的脚本
- bzoj 1008: [HNOI2008]越狱
- vbs 窗体文字获取文档_MDI类型窗体设置背景图片
- openstack手动部署简单记录
- 怎么调用html调色板,JS实现仿PS的调色板效果完整实例
- Robotics 机器人运动学 DH参数建模
- 原生JS实现上传图片预览效果
- 计算机故障排除原则和方法
- 中西医结合儿科疾病 100249
- BI报表工具FineReport的使用2【帆软聚合报表设计,最常用功能】
- 关于跳转页面报404、500错误设置自定义图片和文字
- 【CS231n】斯坦福大学李飞飞视觉识别课程笔记(五):图像分类笔记(下)
- 仿微信的录制小视频功能
- ecshop支持mysql_ecshop安装不支持MySQL
- 多旋翼无人机建模之陀螺力矩
- 会喊麦的CTO:从外包仔到熊猫直播CTO的技术态度丨今晚直播
- 火狐 看网页注释_在Firefox内部(外部)创建注释
- 调整计算机启动顺序,电脑双硬盘双系统bios调整硬盘启动顺序的图文教程
- js 箭头函数的this详解