(一)s3c2440 地址分配讲解 (很难很纠结)
mini2440的地址怎么分配。mini2440处理器的地址怎么分配。
S3C2440处理器可以使用的物理地址空间可以达到4GB,其中前1GB的地址(也就是0x0000 0000--0x4000 0000)为外设地址空间,外设地址究竟怎么确定的呢??好烦??
还有一部分为CPU内部使用的特殊功能寄存器地址空间(地址范围为0x4800 0000--0x5FFF FFFF),其余的地址空间没有使用。
下面用两个表格说明外设地址空间好特殊功能寄存器地址空间
3FF FFFF 共 26根地址线,也就是 2^6=64 2^20=1M 那么就是 64M
内存概念:
内存是代码的执行空间,程序是以文件的形式保存在硬盘里面的,程序在运行之前需要由操作系统载入到内存中,
由于内存是RAM(可以随机访问),所以可以通过地址去定位一个字节的数据,CPU在执行程序时候把PC值也就是指针设为程序在内存的开始地址。按顺序进行取值译码工作。
s3c2440讲解
1、 S3C2440对外引出了27根地址线ADDR0~ADDR26 (也就是外设) ,它最多能够寻址128MB,
而S3C2440的寻址空间可以达到1GB,这是由于S3C2440将1GB的地址空间分成了8个BANKS(Bank0~Bank7),
其中每一个BANK对应一根片选信号线nGCS0~nGCS7(这是存储器自身的引脚口),
当访问BANKx的时候,nGCSx管脚电平拉低,用来选中外接设备, S3C2440通过8根选信号线和27根地址线,就可以访问1GB
27根地址线(可以看友善之臂的第一页原理图 ADDR0~ADDR26 )
S3C2440芯片性质决定了,SDRAM类型的内存条只能焊在 Bank6~Bank7上,最大支持内存 256M,即0x30000000--0x3FFFFFFF , 但是我们的只是 64M=32* 2,所以地址范围是 上图 第 6 列
0x3800 0000 11 1000 0000 0000 0000 0000 0000 0000 (看到后面,感觉这里理解不是很正确),因为 SDRAM 只有 13根地址线,
0x3000 0000 11 0000 0000 0000 0000 0000 0000 0000
0x2800 0000 10 1000 0000 0000 0000 0000 0000 0000
0x2000 0000 10 0000 0000 0000 0000 0000 0000 0000
显然我们发现了规律,
0---111..111(27根) = 128M
其中Bank0~Bank5可以焊接ROM或SRAM类型存储器,Bank6~Bank7可以焊接ROM,SRAM,SDRAM类型存储器,也就是说,S3C2440的SDRAM内存应该焊接在Bank6~Bank7上,最大支持内存256M,Bank0~Bank5通常焊接一些用于引导系统启动小容量ROM,具体焊接什么样存储器,多大容量,根据每个开发板生产商不同而不同,比如MINI2440开发板将2M的Norflash焊接在了Bank0上,用于存放系统引导程序Bootloader,将两片32M,16Bit位宽SDRAM内存焊接在Bank6和Bank7上,并联形成64M,32位内存。
你要知道 ARM 是 32位,芯片所以坑定 寻址空间不止上面一个G的大小,还有三个G 呢。
其中Bank0~Bank5可以焊接ROM或SRAM类型存储器,Bank6~Bank7可以焊接ROM,SRAM,SDRAM类型存储器,也就是说,S3C2440的SDRAM内存应该焊接在Bank6~Bank7上,最大支持内存256M,
Bank0~Bank5通常焊接一些用于引导系统启动小容量ROM,具体焊接什么样存储器,多大容量,根据每个开发板生产商不同而不同,比如MINI2440开发板将2M的Norflash焊接在了Bank0上,用于存放系统引导程序Bootloader,
将两片32M,16Bit位宽SDRAM内存焊接在Bank6和Bank7上,并联形成64M,
__________________________________________________________________________________________________________________________________________________________________________________________
由于S3C2440是32位芯片,理论上讲可以达到4GB的寻址范围,除去上述8个BANK用于连接外部设备,还有一部分的地址空间是用于设备特殊功能寄存器,其余地址没有被使用。
表2-14 S3C2440设备寄存器地址空间