关于LINUX下的寄存器访问

[复制链接]
 楼主| lilyrr 发表于 2007-5-12 21:33 | 显示全部楼层 |阅读模式
同一个寄存器在ADT IDE环境下访问和在LINUX下访问时,是不是各自有不同的名称呀?
computer00 发表于 2007-5-12 22:00 | 显示全部楼层

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

  
 楼主| lilyrr 发表于 2007-5-13 09:58 | 显示全部楼层

我的编译器是gcc呢?

到哪里可以查找相关的资料呢?
computer00 发表于 2007-5-13 10:36 | 显示全部楼层

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

是R0,R1等这些工作寄存器还是实际芯片上控制各种功能的寄存器(例如IO口寄存器等)?<br /><br />如果是前者,应该是所有的编译器都一样的。如果是后者,则往往是通过指针来访问,<br />因此实际上是定义的一个指针而已,在头文件中定义。
 楼主| lilyrr 发表于 2007-5-13 12:50 | 显示全部楼层

我用的是AD控制的寄存器

如:ADCCON之类的。<br />在ADT中访问的是rADCCON,<br />在LINUX可以访问什么呢?<br />是不是寄存器的名称会改变呢?
computer00 发表于 2007-5-13 13:04 | 显示全部楼层

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

你完全可以自己定义一个这样的东西.<br /><br />例如<br /><br />#define&nbsp;rADCCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*(volatile&nbsp;unsigned&nbsp;*)0x1d40000)<br /><br /><br />然后你就可以使用它了。决定它是哪个寄存器的是后面的地址0x1d40000,而不是叫什么名字。<br /><br /><br />如果你使用的是虚拟地址的话,就会更麻烦一些.&nbsp;linux下应该会提供一些端口操作的系统函数,具体我也不清楚,没搞过。
ferry 发表于 2007-5-13 13:08 | 显示全部楼层

有可能不同

各外设控制寄存器的名字是linux内核定义的,所以要查内核的相应cpu体系或板子的定义头文件
 楼主| lilyrr 发表于 2007-5-13 13:19 | 显示全部楼层

刚接触ARM

有ADT&nbsp;IDT环境下的程序,<br />所以想从这个改编到LINUX下的程序。
computer00 发表于 2007-5-13 13:52 | 显示全部楼层

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

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

本版积分规则

10

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部