S3C2440的SDRAM驱动
容量,根据每个开发板生产商不同而不同,比如MINI2440开发板将2M的Norflash焊接在了Bank0上,用于存放系统引导程序Bootloader,将两片32M,16Bit位宽SDRAM内存焊接在Bank6和Bank7上,并联形成64M,32位内存。
由于S3C2440是32位芯片,理论上讲可以达到4GB的寻址范围,除去上述8个BANK用于连接外部设备,还有一部分的地址空间是用于设备特殊功能寄存器,其余地址没有被使用。
表2-14 S3C2440设备寄存器地址空间
外接设备 | 起始地址 | 结束地址 |
存储控制器 | 0x48000000 | 0x48000030 |
USB Host控制器 | 0x49000000 | 0x49000058 |
中断控制器 | 0x4A000000 | 0x4A00001C |
DMA | 0x4B000000 | 0x4B0000E0 |
时钟和电源管理 | 0x4C000000 | 0x4C000014 |
LCD控制器 | 0x4D000000 | 0x4D000060 |
NAND FLASH控制器 | 0x4E000000 | 0x4E000014 |
摄像头接口 | 0x4F000000 | 0x4F0000A0 |
UART | 0x50000000 | 0x50008028 |
脉宽调制计时器 | 0x51000000 | 0x51000040 |
USB设备 | 0x52000140 | 0x5200026F |
WATCHDOG计时器 | 0x53000000 | 0x53000008 |
IIC控制器 | 0x54000000 | 0x5400000C |
IIS控制器 | 0x55000000 | 0x55000012 |
I/O端口 | 0x56000000 | 0x560000B0 |
实时时钟RTC | 0x57000040 | 0x5700008B |
A/D转换器 | 0x58000000 | 0x58000010 |
SPI | 0x59000000 | 0x59000034 |
SD接口 | 0x5A000000 | 0x5A000040 |
AC97音频编码接口 | 0x5B000000 | 0x5B00001C |
1.1.2SDRAM内存工作原理
SDRAM的内部是一个存储阵列。阵列就如同表格一样,将数据“填”进去。在数据读写时和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理,如图2-49所示。
图2-49内存行,列地址寻址示意图
这个单元格(存储阵列)就叫逻辑Bank(Logical Bank,下文简称L-Bank)。由于技术、成本等原因,不可能只做一个全容量的L-Bank,而且最重要的是,由于SDRAM的工作原理限制,单一的L-Ban k将会造成非常严重的寻址冲突,大幅降低内存效率。所以人们在SDRAM内部分割成多个L-Bank,目前基本都是4个(这也是SDRAM规范中的最高L-Bank数量),由此可见,在进行寻址时就要先确定是哪个L-Bank,然后在这个选定的L-Bank中选择相应的行与列进行寻址。因此对内存的访问,一次只能是一个L-Bank工作。如图2-50:
图2-50内存存储单元
当对内存进行操作时(见下图),先要确定操作L-Bank,因此要对L-Bank进行选择。在内存芯片的外部管脚上多出了两个管脚BA0, BA1,用来片选4个L-Bank。如前所述,32位的地址长度由于其存储结构特点,分成了行地址和列地址。通过下面的内存结构图可知,内存外接管脚地址线只有13根地址线A0~A12,它最多只能寻址8M内存空间,到底使用什么机制来实现对64M内存空间进行寻址的呢?SDRAM的行地址线和列地址线是分时复用的,即地址要分两次送出,先送出行地址(nSRAS行有效操作),再送出列地址(nSCAS列有效操作)。这样,可以大幅度减少地址线的数目,提高器件的性能和制作工艺复杂度。但寻址过程也会因此而变得复杂。实际上,现在的SDRAM一般都以L-Bank为基本寻址对象的。由L-Bank地址线BAn控制L-Bank间的选择,行地址线和列地址线贯穿连接所有的L-Bank,每个L-Bank的数据的宽度和整个存储器的宽度相同,这样,可以加快数据的存储速度。同时,BAn还可以使未被选中的L-Bank工作于低功耗的模式下,从而降低器件的功耗。
图2-51 HY57561620内部结构图
开发板内存控制器管脚接线(以MINI2440开发板为例):
(1)确定BA0、BA1的接线
表2-15 BA0、BA1接线
Bank Size:外接内存容量大小(HY57561620是4Mbit*16bit*4Bank*2Chips/8=64MB)
Bus Width:总线宽度 (两片16位HY57561620,并联成32位)
Base Component:单个芯片容量(bit)(256Mb)
Memory Configration:内存配置((4M*16*4banks)*2Chips )
由硬件手册Bank Address管脚连接配置表可知,使用A[25:24]两根地址线作为Bank片选信号,正好两根接线可以片选每个存储单元的4个BANKS。
(2)确定其它接线
SDRAM内存是焊接在BANK6~BANK7上的,其焊接管脚,如图2-52:
图2-52 S3C2440 16位宽内存芯片
上图是S3C2440提供的两片16位芯片并联连接示意图,An是CPU地址总线,其中A2~A14为内存芯片寻址总线,之所以地址寻址总线从A2开始是因为内存地址都是按字节对齐的,,A24,A25为L-Bank片选信号,Dn为CPU数据总线,其它为对应控制信号线。
表2-16内存芯片各管脚说明
外接管脚名 | 内接管脚名 | 全称 | 描述 |
A2~A14 | A0~A12 | Address | 地址线 |
D0 ~D31 | DQ0~DQ31 | Data Input/Output | 数据线 |
A24,A25 | BA0,BA1 | Bank Address | L-BANK片选信号 |
DQM0~DQM3 | LDQM, UDQM | Data Input/Output Mask | 高,低 |
S3C2440SDRAM驱 相关文章:
- S3C2440的SDRAM驱动 (11-10)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)