当前位置: 技术问答>linux和unix
关于CPU寄存器的访问
来源: 互联网 发布时间:2016-01-12
本文导语: 在ARM中,我想访问一个寄存器,应该如何访问?假设寄存器的地址为0x87 | 看看你arm如果是32位寄存器,那么可以这么访问 #define READ_ARM(addr) *(volatile unsigned int*)addr 然后你就可以用READ_ARM...
在ARM中,我想访问一个寄存器,应该如何访问?假设寄存器的地址为0x87
|
看看你arm如果是32位寄存器,那么可以这么访问
#define READ_ARM(addr) *(volatile unsigned int*)addr
然后你就可以用READ_ARM函数去读写操作了。这是是代表取值,也可以用来赋值
#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
__raw_writew 16 bits reg
__raw_writeb 8 bit reg