免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7133 | 回复: 16
打印 上一主题 下一主题

求助:驱动程序如何操作寄存器的那 比如知道它的地址了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-23 21:22 |只看该作者 |倒序浏览
rtrtrtrt

论坛徽章:
0
2 [报告]
发表于 2009-10-23 22:26 |只看该作者
都已经知道地址了,直接那指针往上写东西,那不就是改变寄存器的内容了吗?不也就是控制寄存器了吗?

论坛徽章:
0
3 [报告]
发表于 2009-10-24 09:34 |只看该作者
谢谢啊 比如地址为0x12345678
我想赋值为0x12
就是*(0x12345678)=0x12  ???

那么下面这句什么意思那
#define MYREG   _reg( 0x12345678 )

[ 本帖最后由 ruiyunzhon 于 2009-10-24 09:40 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-10-24 12:16 |只看该作者
操作一般都是用inb,outb指令,高级一点的有readb,writeb之类的函数。

论坛徽章:
0
5 [报告]
发表于 2009-10-24 15:56 |只看该作者
翻手册,看寄存器类型io还是memory;

看见io、port用in,out;
看见memory,address用read,write;

对地址,通常取得的是物理地址,还要加个PAGE_OFFSET之类转换为虚拟地址。
某些情况下取得的地址后面几位是标志位,记得清0。

PS:想知道寄存器具体如何操作,方法1:啃手册,方法2:啃手册、方法三:啃手册

[ 本帖最后由 zyr-linux 于 2009-10-24 16:08 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-10-24 16:19 |只看该作者

回复 #4 emmoblin 的帖子

linux 下驱动程序 好像没有outb吧
如何操作内部专用寄存器(比如完成ad转换的)

论坛徽章:
0
7 [报告]
发表于 2009-10-24 18:34 |只看该作者

回复 #5 zyr-linux 的帖子

同意这个。

论坛徽章:
0
8 [报告]
发表于 2009-10-25 16:06 |只看该作者

回复 #5 zyr-linux 的帖子

谢谢你 但是我说的是linux下驱动程序 应该没有所谓的read 之类的
但是你说的物理地址 转虚拟地址 我还是深受启发的
不过还是不懂 怎么转换的那
是不是与板子的物理连接有关 还是其他的?

论坛徽章:
0
9 [报告]
发表于 2009-10-25 20:18 |只看该作者
各种设备上的寄存器,要么作为IO端口操作(in、out);要么映射到虚拟地址空间中,和内存一样操作(read、write)。

你的Linux内核里面没有下面这些接口?
inb、outb;
readb,writeb、readw,writew、readl、writel、readq,writeq。

物理地址、线性地址、虚拟地址这些,还是找本深入理解Linux翻吧。

论坛徽章:
0
10 [报告]
发表于 2009-10-26 22:48 |只看该作者
如果是在arm linux下,先ioremap 返回一个虚拟地址, 再用readb, writeb等楼上提到的函数读写。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP