首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

关于CPU寄存器的访问解决方法

2012-02-26 
关于CPU寄存器的访问在ARM中,我想访问一个寄存器,应该如何访问?假设寄存器的地址为0x87[解决办法]看看你ar

关于CPU寄存器的访问
在ARM中,我想访问一个寄存器,应该如何访问?假设寄存器的地址为0x87

[解决办法]
看看你arm如果是32位寄存器,那么可以这么访问

#define READ_ARM(addr) *(volatile unsigned int*)addr

然后你就可以用READ_ARM函数去读写操作了。这是是代表取值,也可以用来赋值
[解决办法]
呵呵,,内存地址和寄存器地址是一回事,,现在比较流行的做法是将寄存器地址挂接到内存地址空间中,而不是挂接到IO空间中,在IO空间中软件要用专门的指令,不利于用高级语言开发。而在寄存器等在内存空间中就可以操作寄存器象操作内存一样,还能使用指针。但是注意要使用volatile,不然的话编译器可能对代码进行优化。寄存器毕竟和内存还是有点差别的,寄存器值可能不经过cpu控制而变化。
[解决办法]
__raw_writel 32 bits reg
__raw_writew 16 bits reg
__raw_writeb 8 bit reg

热点排行