- 10
- 0
- 约3.96千字
- 约 5页
- 2016-10-08 发布于江苏
- 举报
基于Nios II的DMA传输总结.doc
最近练了一段时间的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); //
原创力文档

文档评论(0)