4892|7

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于linux下DMA驱动的问题 [复制链接]

在linux下怎样应用DMA呢?是要先写驱动吗?系统目录linux/arch/arm/mach-s3c2410/dma.c下的这个文件make后直接insmod行吗?谢谢!
此帖出自Linux开发论坛

最新回复

谢谢大家,学习了,结贴去  详情 回复 发表于 2009-8-6 10:08
点赞 关注

回复
举报

90

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不行,他无法编译成一个单独的驱动。
此帖出自Linux开发论坛
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
那如何做一个简单得DMA驱动呢?
此帖出自Linux开发论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 

应该可以封装成一个单独的驱动,你得写代码,问题是,DMA controller does not know anything about MMU, so, how do you handle address maping if build it as an kernel module to export to application layer? Thus, in mose case, device driver code encapsulates DMA, please refer you hardware datasheet .
此帖出自Linux开发论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

5
 
主要是想用DMA方式读外部的一个FIFO,并将数据存到内存中,然后我只是在驱动程序里配置了一下DMA的特殊寄存器,运行的时候拿示波器看了下BANK的片选信号和写信号,感觉DMA操作还成功了,不知道这样做可不可以啊?
此帖出自Linux开发论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 hanhannina 的回复:
主要是想用DMA方式读外部的一个FIFO,并将数据存到内存中,然后我只是在驱动程序里配置了一下DMA的特殊寄存器,运行的时候拿示波器看了下BANK的片选信号和写信号,感觉DMA操作还成功了,不知道这样做可不可以啊?


如果没记错的话,在处理数据地址时候要注意。DMA只能处理连续的,不经过MMU MAPPING的地址。
此帖出自Linux开发论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

7
 
在linux驱动中使用DMA主要分为两个部分:
1. DMA控制器, a. 如果DMA控制器中一般ARM DMA而不是某个外设自已的DMA, 则必須使用request_dma等接口函数申请配置, linux/arch/arm/mach-s3c2410/dma.c就是为ARM DMA准备的接口, b. 如果是某个外设的独自的DMA,直接在驱动中配置就可以。
2. DMA使用的内存:
   a. 不使用缓存的, dma_alloc_coherent就以得到一块uncached的物理连续内存
   b. 带缓存的, 先用kmalloc,或get_free_pages得到一块物理连续的内存,在使用dma_map_single和dma_unmap_single去 flush或invalidate 缓存
此帖出自Linux开发论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢大家,学习了,结贴去
此帖出自Linux开发论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表