一、CPU 可访问的物理地址空间
地址总线宽度决定CPU可以访问的物理地址空间。无论是单片机还是计算机中的CPU,都有自己的地址空间,CPU只能访问自己的地址空间(不是内存地址空间,内存地址空间只是CPU地址空间的一部分),而地址空间与存储器、外设控制器中寄存器存在一一对应的地址映射,当CPU访问某一个地址空间时,硬件上自动映射到对应的存储器存储单元或外设控制器中某个寄存器,从而实现CPU对存储器、外设的访问。
下面以IMX6ULL(32位的CPU)为例说明该ARM控制器中存储器地址和外设控制器地址空间分配:
起始地址 | 结束地址 | 大小 | 功能描述 |
---|---|---|---|
0x8000_0000 | 0xFFFF_FFFF | 2048 MB | MMDC-x16 DDR Controller |
… | … | … | … |
0x220_0000 | 0x22F_FFFF | 1 MB | AIPS-3 |
0x210_0000 | 0x21F_FFFF | 1 MB | AIPS-2 |
0x200_0000 | 0x20F_FFFF | 1 MB | AIPS-1 |
… | … | … | … |
上述只是摘抄IMX6ULL参考手册中的System memory map的一小部分,由于该CPU是32位的,所以其可以访问的地址空间大小为 2^32 Byte = 4096MB = 4GB,空间范围为0x0000_0000 ~ 0xFFFF_FFFF, 其中MMDC-x16 DDR Controller即为存储控制器;AIPS-x则是各种外设控制器所在的地址空间(如常见的UART、I2C、SPI、USB控制器等)。