在ARM中37个通用寄存器和51中的寄存器不一样,并不是占用一部分RAM的地址。这些通用寄存器的地址我们并不知道,但是内核可以找到它们,它们是属于核内部的资源。
在芯片内部还集成了各种外设的特殊功能寄存器(sfr),这些寄存器都有各自的一个地址。这些地址和芯片外部接的存储器芯片的地址是统一编址的,都占用ARM32位地址空间,所以32位的ARM所支持的RAM空间的大小一定是小于4G的。不仅仅是芯片内部的SFR和外接的RAM,还有外接的Flash芯片以及内部集成的ROM和RAM等都是统一编址的,共同占用ARM的4G地址空间。通过查看芯片的数据手册就可以知道哪些地址被映射成外设的控制寄存器,哪些地址被映射成内存地址。不同的芯片有不同的内存映射,需要查看对应的数据手册。
内存映射图:
针对这个内存映射图,有几点需要注意的:
- 0x0地址处的iROM&iRAM只是一个镜像区域(Mirrored region),这个区域实际iROM&iRAM的镜像区域,也就是说当cpu访问这个区域的地址时,实际上是在访问iROM&iRAM区域。
- 内存映射中的NAND Flash空间只有256MB的大小(0xB000_0000---0xBFFF_FFFF),而实际外接的Flash芯片可能有4G甚至更大。所以虽然芯片外的Flash芯片也占用4G的寻址空间,但是flash和DRAM的接法是不同的,DRAM是采用总线型连接,内存映射上有多少空间是DRAM的,那么实际上就只能外接这么多大小的内存芯片,而flash(NandFlash)的连接方式和DRAM不同,其地址总线和数据总线是复用的,读写数据需要先发送命令,不能随机访问。内存映射上的大小并不是实际flash的大小。
所谓总线型连接就是指按照地址总线和数据总线分开的方式来进行cpu和存储器芯片的直接连接。除了DRAM可以进行总线型连接外,NorFlash也可以总线型连接,和DRAM一样直接占用cpu的地址空间。通常NorFlash连接在SROM(图中红色区域)区域中。
时间: 2024-10-25 08:10:48