天天看点

内存编址(地址总线上)

ARM下编址只有统一编址,IO端口跟内存空间统一进行编址,访问IO端口时,跟访问内存一样的方式进行访问,但是只是一个地址,并不会通过物理内存来访问外设的IO端口,所以不带操作系统时(MMU并未打开),芯片送到地址总线上的就是实际的物理地址,然后通过总线送给物理内存,ARM地址总线32位,所以一共可以访问4G的地址空间,但是因为内存跟IO端口统一编址,所以芯片能访问的实际物理内存并没有4G大小,实际大小是4G减去IO端口所占用的空间大小,物理内存一般在总线上分配低端地址,IO空间一般分配高端地址,所以访问外部设备时,其实只是一个基地址加偏移,偏移的数值才是实际访问外设的寄存器,而基地址只是为了总线可以识别外设,因为总线上外挂着很多外设,所以需要通过基地址来区分具体要访问哪个外设。

芯片在上电启动时,那时候ram还未初始化,所以总线上前4K地址用来映射ROM里的程序,作为启动程序,初始化ram等设备。后面才用来访问物理内存。