在x86下,外设的i/o地址是独立的,即有专门的指令访问外设i/o,i/o地址就是所谓的“总线地址”。而“物理地址”就是ram地址。
在arm中,i/o和ram统一编址,但linux为了统一各个平台,仍然保留这个概念,其实就是物理地址。
linux 无论kernel还是user space,都是直接访问虚拟地址(uclinux除外),要访问i/o,必须把i/o地址转换成虚拟地址才能访问。
MMU启动前程序中的地址为物理地址,和硬件手册中规定的地址一致。MMU启动后程序中的地址为虚拟地址,参照MMU地址映射表