NIOS2 DMA 传输模式
2011-04-06 13:36
190 查看
![](http://images.cnblogs.com/cnblogs_com/crazybingo/201104/201104061355022958.png)
![](http://images.cnblogs.com/cnblogs_com/crazybingo/201104/201104061355024561.png)
![](http://images.cnblogs.com/cnblogs_com/crazybingo/201104/201104061355035367.png)
![](http://images.cnblogs.com/cnblogs_com/crazybingo/201104/201104061355353569.png)
http://blog.ednchina.com/chactor/185802/message.aspx
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还可以设置每次发送和接收的字节数。
相关文章推荐
- 把硬盘传输模式从PIO改回DMA Mode 5 图解(付微软临时解决方案)
- STM32 DMA正常模式等待传输完成和开始下一次传输
- Android 7.0 SPI DMA模式下传输数据丢失问题
- STM32 DMA正常模式等待传输完成和开始下一次传输
- IDE 数据传输模式(PIO,DMA)
- USART1采用DMA的DMA_Mode_Normal模式进行多次数据的传输
- 硬盘从PIO转到DMA传输模式
- dsp28335的AD采样(单次模式、连续模式、DMA传输)
- TCP/IP协议和工业以太网传输控制方法 及通信模式比较1
- 设计模式学习—传输对象模式(Transfer Object Design Pattern)
- DriverStudio开发PCI设备DMA数据传输
- STM32 ADC DMA 中断模式多通道读取ADC转换值
- 第5章分布式系统模式 Data Transfer Object(数据传输对象)
- usb中的endpoint(端点)和传输模式
- WCF分布式安全开发实践(1):传输安全模式之匿名客户端:Transport_None_WSHttpBinding
- FTP文件乱码和传输模式解释
- WCF 内置绑定在不同的传输安全模式下的信道层
- 系统软件性能调优策略(二)异步网络传输模式
- Java传输对象模式
- [转载]usb中的endpoint(端点)和传输模式