打印

关于LINUX下的寄存器访问

[复制链接]
4386|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lilyrr|  楼主 | 2007-5-12 21:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
computer00| | 2007-5-12 22:00 | 只看该作者

跟编译器有关,跟linux无关.

使用特权

评论回复
板凳
lilyrr|  楼主 | 2007-5-13 09:58 | 只看该作者

我的编译器是gcc呢?

到哪里可以查找相关的资料呢?

使用特权

评论回复
地板
computer00| | 2007-5-13 10:36 | 只看该作者

不知道你指的寄存器是什么样的寄存器?

是R0,R1等这些工作寄存器还是实际芯片上控制各种功能的寄存器(例如IO口寄存器等)?

如果是前者,应该是所有的编译器都一样的。如果是后者,则往往是通过指针来访问,
因此实际上是定义的一个指针而已,在头文件中定义。

使用特权

评论回复
5
lilyrr|  楼主 | 2007-5-13 12:50 | 只看该作者

我用的是AD控制的寄存器

如:ADCCON之类的。
在ADT中访问的是rADCCON,
在LINUX可以访问什么呢?
是不是寄存器的名称会改变呢?

使用特权

评论回复
6
computer00| | 2007-5-13 13:04 | 只看该作者

你要关心的不是名字,而是地址.它是被影射到内存中去的

你完全可以自己定义一个这样的东西.

例如

#define rADCCON        (*(volatile unsigned *)0x1d40000)


然后你就可以使用它了。决定它是哪个寄存器的是后面的地址0x1d40000,而不是叫什么名字。


如果你使用的是虚拟地址的话,就会更麻烦一些. linux下应该会提供一些端口操作的系统函数,具体我也不清楚,没搞过。

使用特权

评论回复
7
ferry| | 2007-5-13 13:08 | 只看该作者

有可能不同

各外设控制寄存器的名字是linux内核定义的,所以要查内核的相应cpu体系或板子的定义头文件

使用特权

评论回复
8
lilyrr|  楼主 | 2007-5-13 13:19 | 只看该作者

刚接触ARM

有ADT IDT环境下的程序,
所以想从这个改编到LINUX下的程序。

使用特权

评论回复
9
computer00| | 2007-5-13 13:52 | 只看该作者

也许你将头文件一并复制过去就可以了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

18

帖子

0

粉丝