引用第3楼kasim于2010-01-08 16:27发表的 :开发板上的Linux运行时开启了MMU,CPU所能接受的是虚拟地址。代码中所有#define r寄存器 (unsigned int *)(0x寄存器物理地址)这样的用法都是不能直接使用的。事实上,在Linux这样的OS环境下,用户空间的程序很少会直接access寄存器这种东西,那是内核空间的设备驱动应该做的事情。设备驱动在访问寄存器的时候也通过虚拟地址经过MMU映射到物理地址的。关于虚拟地址和物理地址的概念,参考"Linux设备驱动第三版"相关部分http://www.aiothome.net/read.php?tid-1859.html