ISA DMA驱动源地址和目的地址设置的问题

NKLoveRene 2009-12-21 10:26:31
	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是哪里设置的呢?
谢谢~
...全文
279 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
codesnail 2009-12-25
  • 打赏
  • 举报
回复
应该是某个外围器件的端口
beyondma 2009-12-21
  • 打赏
  • 举报
回复
这块不熟感觉原地址是IO里面定的。
NKLoveRene 2009-12-21
  • 打赏
  • 举报
回复
“IO里面定的”
那这个代码应该怎么写呢
还是应该有什么方法之类的?
谢谢

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧