S3C2440的寻址空间、存储控制器

来源:互联网 发布:java实现多线程同步 编辑:程序博客网 时间:2024/06/05 06:02

1、地址分配(27根线如何寻找1G空间)

查S3C2440的数据手册可知S3C2440可寻址1G的地址范围,但是S3C2440的地址线只有27根,理论上只能寻址2的27次方等于128M的地址范围。

那如何寻址1G的呢 ?

S3C2440通过把存储管理系统分成8个Bank解决了这个问题。S3C2440引出了8根 Bank 线(对应nGCS0~ nGCS7),通过这个8根线来选通和关闭

不同的存储器,这样S3C2440最多就可以连接8个128M的存储器,每一个BANK对应一根片选信号线nGCS0~nGCS7当访问BANKx的时候,

nGCSx管脚电平拉低,用来选中外接设备。S3C2440通过8根选信号线和27根地址线,就可以访问1GB。如图所示。




对S3C2440来说,SDRAM,即内存,程序运行时的地方。选择连接SDRAM的为bank6。


l每个 Bank 有个地址,对该 Bank 地址的访问实际上就是选通该Bank,于是ARM核只要发出一个地址,然后S3C2440的存储控制 器只要把该地址

解释成两部分:一部分是 Bank 地址,一部分是连接到该 Bank 存储器内部的地址就可以访问了。

l左侧图对应不使用Nandflash启动时(通过跳线设置),存储器Bank分布图,通常在这种启动方式里选择Norflash启动,将Norflash焊接在Bank0 系统上电后,CPUBank0的开始地址0x00000000开始取指运行。

l右侧是选择从Nandflash引导启动(通过跳线设置),系统上电后,CPU会自动将Nandflash里前4K的数据复制到S3C2440内部一个4K大小 SRAM类型存储器里(叫做Steppingstone),然后从Steppingstone取指启动。

ls3c2440支持两种启动模式:NAND和非NAND(这里是nor flash)。
具体采用的方式取决于OM0、OM1两个引脚
OM[1:0]所决定的启动方式
OM[1:0]=00时,处理器从NAND Flash启动
OM[1:0]=01时,处理器从16位宽度的ROM启动
OM[1:0]=10时,处理器从32位宽度的ROM启动。
OM[1:0]=11时,处理器从Test Mode启动。

2、

bank0 ~ bank5是ROM,SRAM 等类型存储器,通常焊接一些用于引导系统启动小容量ROM。
bank6 ~ bank7是可以作为ROM、SRAM、SDRAM 等存储器。

比如MINI2440开发板将2MNorflash焊接在了Bank0上,用于存放系统引导程序Bootloader,将两片32M16Bit位宽SDRAM内存焊接在Bank6Bank7上,并联形成64M32位内存。

3、

Bank0可以作为引导ROM。其数据线宽只能是16位和32位,其它存储器的数据线宽可以是8位、16位和32位;

Bank0~Bank5起始地址固定,bank7的开始地址与bank6的结束地址相连接(因为Bank6和Bank7是可编程访问的,故bank7的起始地址不确定,但是二者的容量必须相等);

4、

所有存储器bank的访问周期都是可编程的(可以8/16/32位,即可以以字/字节/双字为单位来访问Bank,假如挂载的是32为SDRAM,地址线的第二位A2与存储器的A0相连,这样存储器单元地址每次增加四,刚好对应相应的地指线A2增加1,同理,挂接的是8位的SRAM的话,则地址线A1和存储器的A0相连,挂载的是8位的话则地址线的A0和存储器的A0相连)。

5、

由于S3C2440是32位芯片,理论上讲可以达到4GB的寻址范围,除去上述8个BANK用于连接外部设备,还有一部分的地址空间是用于设备特殊功能寄存器,其余地址没有被使用。4G的地址解释成三部分:一部分是外接设备的地址,一部分是内部寄存器地址,还有一部分是未定义空间。

   

_________________________________________________________________________________________________________________

                                                                                                                                                                           


                        













0 0