2440存储器管管理(六)

来源:互联网 发布:软件测试简历模板 编辑:程序博客网 时间:2024/06/06 12:35
The S3C2440A memory controller provides memorycontrol signals that are required for external memory access


Little/Big endian (selectable by a software)
— Address space: 128Mbytes per bank (total 1GB/8 banks)
Programmable access size (8/16/32-bit) for all banks exceptbank0 (16/32-bit)
— Total 8 memory banks
Six memory banks for ROM, SRAM, etc.
Remaining two memory banks for ROM, SRAM, SDRAM, etc .

— Seven fixed memory bank start address
— One flexible memory bank start address and programmable banksize
— Programmable access cycles for all memory banks
— External wait to extend the bus cycles
— Supporting self-refresh and power down mode in SDRAM




这里我们看到一共有1G的地址空间给memory芯片用,
但是S3C2440实际上只有27根数据线,也就是数据线只能寻址128M,所以引入了一个叫BANK的东西解决了这个问题。
S3C2440引出了8根BANK线(对应nGCS0~ nGCS7),通过这个8根线来选通和关闭不同的存储器,
这样S3C2440最多就可以连接8个128M的存储器,只要在某一时刻只选通一个BANK就可以实现1G的寻址空间每个BANK有个地址.

对该BANK地址的访问实际上就是选通该BANK,然后发送一个地址就可以了。
然后S3C2440的储存控制器只要把该地址解释成两部分:一部分是BANK地址一部分是连接到该BANK存储器内部的地址就可以访问了。
 
从这个启动图中我们也看到,实际上也是规定了地址的基址--结束地址的范围。【3位 +27位 =30位 --->1GB】

而作为32位的CPU,可以使用的地址范围理论上可以达到2的32次方等于4G,除去上述的1G地址空间,还有一部分是CPU内部寄存器的地址,剩下的地址空间没有使用。 


还是从上面的图看到,我们可以通过NandFlash启动或者是其他启动。

那么JZ2440的nor_flash和sdram自然是连接到nGCS0上了。通过开关来控制。这个开关芯片手册也有介绍。


应该就是OM1 0-->1的改变吧。猜测一下。

然后我们的目标是控制一个存储芯片玩一下,那么必然我们需要做一些配置。

韦大大的书上根我们介绍了一下硬件的连法:
我们需要配置的寄存器有

1.位宽和等待寄存器BWSCON
2.BANK控制寄存器【这里有两类】
3.刷新控制寄存器
4.bank大小控制寄存器
5.sdram模式设置寄存器

我们看到sdram似乎是最复杂的,那么我们就玩一下内存好了。

我们看到这么一句话:
Remaining two memory banks for ROM, SRAM, SDRAM, etc .
只有两个bank能挂sdram,我们的板挂在6,先知道这么多,我们看看寄存器具体什么用吧。





每个bank都有4位BWSCON寄存器
ST         使用UB/LB,这个不知道是什么东西
WS        是否等到WAIT状态
DW       设置位宽,我们看到DW0比较特是用OM控制的,所以重要的东西还是有些不一样的,毕竟用来BOOT



这个控制寄存器就分成了两类

bank6/7 MT==00 时候是和BANK0-5一样的

                    ==11的时候我们姐的就是DRAM,需要刷新的存储器



Trcd : RAS2CAS是指 ROW信号变为Clomn信号的延迟 
SCAN 列地址数


刷新寄存器
REFEN 开启关闭刷新功能
TREFMD 刷新模式 0=CBR/Auto 1=Self refresh 一般在系统休眠的时候用
TRP   0j即可
Tsrc   默认值0b11即可
Refresh Counter 刷新周期
     R_CNT = 2^11+1 -sdram时钟频率*刷新周期

// 8192 refresh cycles/64ms

在未使用PLL时,SDRAM的时钟频率为晶振的12M
2^11+1-12*64/8192 =1955


BURST_EN      支持/进制突发传输
SCKE_EN         使用/不使用SCKE信号令SDRAM进入省电模式
SCLK_EN         时刻/进在访问SDRAM期间发出SCLK信号
BK76MAP      设置BANK6/7大小

bank6/7大小是可以变的。以保持两个空间地址连续



前面提到BANK6/7必须相同的内存大小,虽然我们只有64M内存接在bank6上,我们还是选64/64


能修改的只有CL 是sdram 的时序,不支持1



0 0