(嵌入式)关于arm中的存储控制器(二)
来源:互联网 发布:安卓绘画软件知乎 编辑:程序博客网 时间:2024/06/02 02:16
接上一篇继续:
S3C2440芯片有Bank0~Bank7,8个块。存储控制器有13个寄存器,Bank0~Bank5只用BWSCON(BUS WIDTH & WAIT CONTROL REGISTER)和BANKCONx(BANK CONTROL REGISTER x为0~5)两个寄存器。
Bank6和Bank7外接SDRAM时,除上面两种寄存器,还需要用到REFRESH、BANKSIZE、MRSRB6、MRSRB7等四个寄存器。
13个寄存器如下:
BWSCON (Bus Width & Wait Control Register)
BANKCONx (Bank Control Register x=0~7)
REFRESH (Refresh Control Register刷新控制寄存器)
BANKSIZE (Banksize Register)
MRSRB6/7 (SDRAM Mode Register Set Register)
1.位宽和等待控制寄存器
BWSCON寄存器中每4位控制一个BANK,从高往低一次类推BANK7~BANK0。
STx:启动/禁止SDRAM的数据掩码引脚。对于SDRAM此位为0,对于SRAM此位为1。
WSx:是否使用存储器的WAIT信号,通常都设为0。
DWx:用来设置相应的BANK位宽。
2.BANK控制寄存器(BAN0~BANK5)。
BANK CONTROL REGISTER (BANKCONN: NGCS0-NGCS5)
这几个寄存器用来控制BANK0~BANK5外接设备的访问时序。设置的时候具体需要参考外接芯片的手册中时序图。针对我们这个开发板我们使用0x0700即可。
3.BANK控制寄存器(BAN6、BANK7)。
在8个BANK中只有BANK6和BANK7可以外接SRAM或SDRAM,因此这俩个BANK控制寄存器和上面的不太相同。
MT:确定这个BANK外接的设备是什么芯片,由于我们外接SDRAM,所以设置为0b11。
Trcd:推荐值0b01。
SCAN:列地址位数,我们这里是设置为9位,即0b01。
其它的和BANK0~BANK5一样设置。
4.刷新控制寄存器(REFRESH CONTROL REGISTER )。
REFEN:使能/禁止 SDRAM刷新功能
TREFMD:SDRAM刷新模式,我们这里使用0b0。Self Refresh(一般在系统休眠时使用)。
Trp:设置当SDRAM中RAS(列地址信号)需要重新寻址时,要隔多久时间才能开始下次的寻址动作。理论上越短越好,我们这里设置为0b00。
Tsrc:SDRAM半行周期时间,我们这里设置0b11。
Refresh Counter:SDRAM刷新的计数值。HCLK即为SDRAM时钟频率
刷新周期=(2^11-刷新计数值+1)/HCLK 所以 刷新计数值=2^11+1-刷新周期*HCLK
我们这里通过查阅SDRAM芯片手册知道 Refresh period=64ms/8192=7.8125us
设HCLK=12MHz,所以refresh_count=2^11+1-12*7.8125=1955。
综上:我们这里的这个寄存器设置为0x008C0000+1955(0x7A3)=0x008C07A3。
5.BANKSIZE寄存器
BURST_EN: 使能/禁止 ARM核的突发传输。
SCKE_EN: 禁止/使能 通过SCKE信号让SDRAM进入省电模式。
SCLK_EN: 0: 一直使能SCLK信号 1:只有当使用SDRAM时才使能SCLK信号(推荐)
BK76MAP:设置BANK6/7的大小。
BANK0~BANK5的地址空间大小都是固定不变的128MB,而BANK6/7的大小是可变的,以保持这两个空间的大小连续,即BANK7的起始地址会随它们的大小变化。我们用的SDRAM是64MB,所以设置为0b001。
6.SDRAM模式设置寄存器(MRSBx)
通过上面我们可以看到能修改的只有一个CL:CAS(列地址信号)延迟,我们这里设置为0x30。
》》》》》》》》 至此,关于本实验中所有的存储控制器相关的寄存器学习完毕,那么接下来。就是最后一步了。写代码《《《《《《《《
- (嵌入式)关于arm中的存储控制器(二)
- (嵌入式)关于arm中的存储控制器(一)
- (嵌入式)关于arm中的存储控制器(三)终!
- 【嵌入式Linux+ARM】存储控制器(操作SDRAM)
- ARM PL330 DMA控制器开发(二)
- ARM PL330 DMA控制器开发(二)
- ARM存储管理(二)
- 嵌入式ARM设计历程(二)
- 嵌入式arm学习总结(二)--arm相关知识
- ARM------ 存储控制器
- 嵌入式面试题——ARM面试题(二)
- arm存储控制器操作实例
- Qt/Embedded在嵌入式Linux系统中的应用(ARM)
- arm芯片中的浮点运算(二)
- 关于嵌入式ARM需知
- 嵌入式Linux ARM汇编(三)——ARM汇编指令(二)
- tiny4412-arm嵌入式开发裸板驱动 (二):arm基础GPIO操作
- 嵌入式Linux ARM汇编(二)——ARM异常处理
- 关于core.dao泛型的写法
- Android自定义View 之构造函数
- C++中mutable、volatile关键字
- 最小值和最大值(2n-2)
- js不刷新页面,改变url
- (嵌入式)关于arm中的存储控制器(二)
- 阿里云
- Java虚拟机工作原理详解
- DL学习笔记【23】修改caffemodel模型参数
- hibernate的配置
- 微信支付.NET版开发总结(JS API),公众号支付
- 内存对齐和位域
- 最小值和最大值(3n/2)
- python3 定制词云