|
- unsigned long flags = claim_dma_lock();
- disable_dma(channel);
- // 清除dma触发器
- clear_dma_ff(channel);
- set_dma_mode(channel, mode);
- // 为DMA缓冲区分配地址。该函数将addr的最低24位存储到控制器中。addr参数必须是总线地址
- set_dma_addr(channel, virt_to_bus((void*)buf));
- // 给传输的字节数赋值
- set_dma_count(channel, count);
- release_dma_lock(flags);
复制代码
我要从某个硬件地址A开始的64k大小的区域循环读数,用DMA方式做
看LDD里面,有这么一段代码,是用来设置和启动DMA的
里面set_dma_addr()这个函数的第二个参数,我感觉应该是自己申请的dma缓冲区的地址,也就是目的地址,
那源地址在哪里设置呢?也就是说地址A是哪里设置的呢?
谢谢~
|
|