【ARM学习笔记】三、S3C2440A的存储控制器及启动过程
扫描二维码
随时随地手机看文章
存储控制器
S3C2440A是32位处理器,理论上拥有32根地址线,寻址空间0x00000000~0xFFFFFFFF,即4G
而实际上,S3C2440A只拥有27根地址线,实际物理寻址空间为0x00000000~0x07FFFFFF,即128MB
除了这27根地址线,S3C2440A还对外引出了8根片选信号线,这样组合起来就能达到1G的物理寻址空间,即0x00000000~0x3FFFFFFF每一块称为一个BANK,每一块都有128MB,共有BANK0~BANK7,其中BANK0、BANK6、BANK7比较特殊。
为了便于使用,S3C2440A拥有独立的存储控制器,这样,CPU只要将地址发送给存储控制器,由存储控制器自动选择相对应的外部存储设备,上图就是S3C2440A的寻址空间图
同时,S3C2440A中也内置了一个4K大小的SRAM内存,称为“Steppingstone”。另外S3C2440的寄存器也占用总线地址的,例如GPxCON,USB Host等等
上图左边表示不使用Nand Flash作为启动ROM时的映射图,一般情况指的是使用Nor Flash作为启动ROM,这时,Nor Flash使用BANK0,使用的总线地址空间为0x00000000~0x08000000,片内内存“Steppingstone”使用的总线地址空间为0x40000000~0x40000FFF
上图右边表示使用Nand Flash作为启动ROM,这时,片内内存“Steppingstone”占用总线地址空间为0x00000000~0x00000FFF,Nor Flash将无法使用(至于原因,看完下面就知道了)
启动方式
S3C2440A在上电后,将开始从总线地址0x00000000读取指令执行,而S3C2440A的启动方式由其两个引脚OM0和OM1控制,请看下图
由上图可知,S3C2440A支持两种启动模式:Nand和非Nand(一般是Nor Flash),具体采用的方式取决于OM0、OM1两个引脚的状态。
Nor Flash拥有与内存相同的接口,可以接在存储控制器上被CPU直接访问,但由于寿命低,容量小,价格贵,一般都使用Nand Flash作为首选启动方式
而根据Nand Flash的特性,其访问方式较Nor Flash复杂,只能接在Nand Flash控制器上被CPU间接访问
如果S3C2440被配置成从Nand Flash启动,在S3C2440上电后,Nand Flash控制器的会自动的把Nand Flash上的前4K数据复制到内部SRAM中,也就是所谓的“Steppingstone”,同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000)。系统会从这个内部SRAM中启动,程序员需要完成的工作,就是把最核心的启动程序放在Nand Flash的前4K中,也就是说,你需要编写一个长度小于4K的引导程序,作用是将主程序拷贝到外部RAM (一般是SDRAM)中运行。
而在Nand Flash方式启动的情况下,系统是“看不到”Nor Flash的,因为Nor Flash也是挂在nGCS0(nGCSx指的是片选引脚,nGCS0对应BANK0)上的,而nGCS0的地址空间已经被占用了。
当选择从Nor Flash启动时,需要根据Nor Flash的位宽来配置OM1和OM0引脚,当位宽为16bit时,OM1和OM0应该分别是低电平和高电平;当位宽为32bit时,OM1和OM0应该分别是高电平和低电平。
此时,Nor Flash被映射到0x00000000地址(就是nGCS0,这里就不需要片内SRAM来辅助了,而片内SRAM的起始地址映射到了0x40000000)。 然后S3C2440A从0x00000000开始运行(也就是在Nor Flash中运行)。
从上面可知,CPU只能从总线地址0x00000000启动,所以在使用Nor Flash启动时,程序可以直接在Nor Flash执行,而无需片内SRAM辅助,Nor Flash占用总线地址0x00000000
如果使用Nand Flash启动时,需要片内SRAM辅助启动,片内SRAM占用总线地址0x00000000,Nor Flash无法使用(貌似Nor Flash只能接在BANK0上面)
<完结>