历史上的今天
返回首页

历史上的今天

今天是:2025年07月22日(星期二)

正在发生

2018年07月22日 | S3C2440内存初始化

2018-07-22 来源:eefocus

分三部分说明: 
①2440地址空间 
②内存与芯片硬件连接 
③存储控制器寄存器

S3C2440地址空间

S3C2440对外提供27根地址线,单靠芯片上的27根引脚,它只能访问128M的外设空间。 
为了扩大外设的访问范围,S3c2440芯片又提供了8个片选信号nGCS0~nGCS7,对应Bank0-Bank7。当某个片选信号nGCSx有效时,则可以通过27根地址线去访问对应这个片选的128MB空间。当访问BANKx的地址空间时,nGCSx引脚输出低电平来选中外接设备。由于有8个片选,所以2440芯片能访问的外设空间总为8*128MB=1GB.而1G(0x40000000)以上的空间,则安排给了2440内部的寄存器,访问这些内部的寄存器,则是通过32位的处理器内部总线来完成的。

S3C2440外设地址空间图:

这里写图片描述

一共8个片选,其中nGCS6,nGCS7为内存。

内存与芯片的硬件连接

BANK0-BANK5的连接方式类似,BANK6连接SDRAM时复杂一些,SDRAM内部是一个存储阵列,指定一个行,再指定一个列,就可以准确找到所需要的单元格,而SDRAM有4个逻辑表格(L-BANK),那么SDRAM的访问步骤为: 
1)CPU发出片选信号nSCS0(与nGCS6是同一引脚)有效,选中SDRAM芯片

2)SDRAM有4个L-BANK,需要两个地址信号来选中其中一个,即ADDR24、ADDR25,如下图

这里写图片描述

3)对被选中的芯片进行同一的行/列(存储单元)寻址 
根据SDRAM芯片的列地址线数目设置CPU相关寄存器后,CPU会从32位地址中自动分出L-BANK选择信号、行地址信号、列地址信号,然后先后发出行地址信号、列地址信号。L-BANK选择信号在发出行地址信号的同时发出,并维持到列地址信号结束。 
如上图:行地址、列地址公用地址线ADDR2-ADDR14,使用nSRAS(R=Row)、nSCAS(C=Column)两个信号来区分它们,当nSRAS信号有效时,ADDR2-ADDR14发出的是行地址,对应地址空间bit[23:11],当nSCAS信号有效时,ADDR2-ADDR14发出的是列地址,对应地址空间bit[10:2]。

4)找到存储单元后,被选中的芯片就要进行统一的数据传输。 
开发板使用两片16bit的SDRAM芯片并联形成32位的位宽,与CPU的32根数据线DATA0-DATA31相连,BANK6的起始地址位0x30000000

存储控制器寄存器

存储控制器共有13个寄存器,BANK0-BANK5只需要设置BWSCON和BANKCONx两个寄存器,BANK6、BANK7外接SDRAM时,还要设置REFRESH,BANKSIZE,MRSRB6,MRSRB7,等4个寄存器,下面分别说明 
1)位宽和等待控制寄存器BWSCON 
BWSCON中每四位控制一个BANK,最高4位对应BANK7、接下来4位对应BANK6,依次类推。 
STx:启动/禁止SDRAM的数据掩码引脚 
WSx:是否使用存储器的WAIT信号 
DWx:设置对应BANK的位宽,0b00对应8位,0b01对应16位,0b10对应32位,0b11表示保留 
比较特殊的是BANK0,它没事ST0和WS0,DW0只读,由硬件跳线决定,0b01表示16位,0b10表示32位,BANK0只支持16、32两种位宽 
所以可以确定BWSCON寄存器值为:0x22000000

2)BANK控制寄存器BANKCONx(x为0-5) 
这些寄存器用来控制BANK0-BANK5外接设备的访问时序,使用默认0x0700即可

3)BANK控制寄存器BANKCONx(x为6-7) 
MT[16:15]:设置BANK外接ROM/SRAM还是SDRAM,00=ROM/SRAM,01=保留,10=保留,11=SDRAM 
MT=0b00时,与BANKCON0-BANKCON5类似 
MT=0b11时, 
Trcd[3:2]:RAS to CAS delay,从时序图可知为2 clocks,所以设为0b00 
SCAN[1:0]:SDRAM的列地址数,本开发板使用的SDRAM列地址数为9,0b00=8位,0b01=9位,0b10=10位 
所以本开发板,BANKCON6/7均设为0x00018001

4)刷新控制寄存器REFRESH 
REFEN[23]: 0=禁止SDRAM的刷新功能,1=开启SDRAM的刷新功能 
TREFMD[22]: SDRAM的刷新模式,0=CBR/Auto Refresh,1=SelfRefresh 
Trp[21:20]: SDRAM RAS预充电时间 00=2 clocks,01=3clocks,10=4clocks,11=不支持 
Tsrc[19:18]: SDRAM半行周期时间 00=4clocks,01=5clocks,10=6clocks,11=7clocks,SDRAM行周期时间Trc=Tsrc+Trp 
Refresh Counter[10:0]: SDRAM刷新计数,刷新时间=(2^11+1-refresh_count)/HCLK,使用PLL后时,HCLK=100MHz,刷新周期为7.8us 
refresh_count=2^11+1-100*7.8=1269 
REFRESH=0x008C0000+1269=0x008C04F5

5)BANKSIZE寄存器 
BURST_EN[7]: 0=ARM核禁止突发传输,1=ARM核支持突发传输 
SCKE_EN[5]: 0=不使用SCKE信号令SDRAM进入省电模式,1=使用SCKE信号令SDRAM进入省电模式 
SCLK_EN[4]: 0=时刻发出SCLK信号,1=仅在方位SDRAM期间发出SCLK信号 
BK76MAP[2:0]: 设置BANK6/7的大小,0b010=128MB/128MB,0b001=64MB/64MB,0b000=32M/32M,0b111=16M/16M,0b110=8M/8M,0b101=4M/4M,0b100=2M/2M 
本开发板外接64MB的SDRAM 
则本开发板BANKSIZE设为0xB1

6)SDRAM模式设置寄存器MRSRBx(x为6-7) 
CL[6:4]: 0b000=1clocks,0b010=2clocks,0b011=3clocks 
本开发板取0b011,所以MRSRB6/7取值为0x30

PS:Trcd,Trp的值可通过芯片手册的时序图查的;Tsrc通常取7个时钟。寄存器地址通过芯片手册查询。

汇编代码(利用循环来对寄存器赋值):

#define mem_contrl 0x48000000init_sdram:
    ldr r0, =mem_contrl 
    add r3, r0, #4*13
    adrl r1, mem_data0:
    ldr r2, [r1], #4
    str r2, [r0], #4
    cmp r0, r3
    bne 0b    mov pc, lrmem_data:
    .long 0x22000000 
    .long 0x00000700
    .long 0x00000700
    .long 0x00000700
    .long 0x00000700
    .long 0x00000700
    .long 0x00000700
    .long 0x00018001
    .long 0x00018001
    .long 0x008c04f5
    .long 0x000000b1
    .long 0x00000030
    .long 0x00000030123456789101112131415161718192021222324252627

ps:bne 0b表示不相等时跳回之前的0处。当标号为0~9的数字时,该标号是局部标号。局部标号可以重复出现,使用方法如下:

  • 标号f: 表示往前跳,顺序执行的话是没有运行过的程序 ,front的意思。

  • 标号b: 表示跳转到以前执行过的语句,第一个1标号处 ,back的意思。


推荐阅读

史海拾趣

Bipolar Integrated Technology Inc公司的发展小趣事

在市场竞争日益激烈的情况下,BIT意识到只有不断创新才能在行业中立足。于是,他们加大了在研发方面的投入,不断推出具有创新性的产品。其中,一款高性能、低功耗的双极型处理器成为了市场上的热销产品,引领了行业潮流。

Gold Peak Group公司的发展小趣事
在控制电路周围设置必要的安全防护措施,如防护罩、警示标志等,防止人员误操作或触电事故的发生。
汇顶科技(GOODiX)公司的发展小趣事
控制电路的布局应合理,避免元件之间的电磁干扰和机械碰撞。
Digilent公司的发展小趣事

作为电子行业的领军企业之一,DIALIGHT始终将技术创新作为公司发展的核心驱动力。公司拥有一支高素质的研发团队和先进的研发设施,不断推出具有创新性和竞争力的LED产品。同时,DIALIGHT还积极与高校、科研机构等合作,共同推动LED照明技术的进步和应用。

HN Electronic Components GmbH & Co Kg公司的发展小趣事

背景:2008年全球金融危机爆发,电子行业受到重创,市场需求大幅下降。

发展:面对严峻的市场环境,HN Electronics迅速调整战略,削减非核心业务,加强成本控制,并加大在研发领域的投入,以技术创新为突破口,寻找新的增长点。

关键事件:在金融危机期间,HN Electronics成功开发出具有更高性价比的物联网传感器芯片,满足了市场对智能家居、智慧城市等新兴领域的需求,从而实现了业绩的稳步增长。

广东华裕(GDHY)公司的发展小趣事

背景:随着公司实力的增强,HN Electronics开始考虑通过并购来扩大规模和市场份额。

发展:公司精心挑选了几家在电子元件制造和系统集成方面具有优势的中小企业进行并购,通过资源整合和优势互补,进一步巩固了市场地位。同时,HN Electronics还向产业链上下游延伸,涉足原材料供应和终端产品制造领域。

关键事件:2015年,HN Electronics成功并购了一家在被动元件领域具有领先地位的企业,这一并购极大地增强了公司的供应链整合能力和市场竞争力。

问答坊 | AI 解惑

DSP集成开发环境CCS开发指南

《DSP集成开发环境CCS开发指南》可以让初学者快速熟悉CCS集成开发环境,强烈推荐!…

查看全部问答>

基础问题:FPGA中寄存器的长度有限制吗?

FPGA 是硬件编程器件,器寄存器的长度理论上没有限制,受限与硬件容量,以及对寄存器的时钟速率要求。比如要实现一个256位的串并转换。只需如下编程即可:     din :  in   std_logic_vector(255 downto 0);   ...…

查看全部问答>

新型AB类功放设计

在AB类音频放大器设计中遇到的一十 要问题就是如何去设置偏置控制环路lbias—control Loop)。通常均使用互补井集电极输出级.且功率晶体管一般置于偏置控制环内。由于输出晶体管温差变动很^,这样做温度稳定性显然不佳使AB类控制环路中的所有二极管 ...…

查看全部问答>

windows mobile build waring

warning C4530: C++ exception handler used, but unwind semantics are not enable 这个警告是在编WINDWOS MOBILE工程时出现的,我查了一下,意思是说,使用了 try/catch 的异常处理结构。但编译器默认是不支持异常处理的。 请问怎样才可以加上 ...…

查看全部问答>

STM32能跑72M是真是假?

                                 有人说,ST 的FLASH最快24M,CPU 在72M时还要等上2个周期,那就是达不到72M了,如果说在SRAM里能跑就没 ...…

查看全部问答>

从万文数据库下载的一个关于Q格式应用的资料

从万文数据库下载的一个关于Q格式应用的资料 …

查看全部问答>

求解决啊·~~

用STM32的开发板 做一个无线光通信系统  STM32要完整的功能就是用串口中断方式接收PC机发送的数据 然后把接收到的数据进行OOK调制 去控制PWM的输出…

查看全部问答>

07年A题——音频分析仪

本帖最后由 paulhyde 于 2014-9-15 03:26 编辑 最近在做这个题目,07年A题。音频分析仪。有没有大神有资料的。求助。  …

查看全部问答>

【TI经典】LMK0480X holdover 功能分析

亲爱的朋友们,新的一周开始了,希望大家在工作学习生活中能有更多收获哦!今天小编为大家带来由德州仪器中国工程师团队所创作的《LMK0480X holdover 功能分析》。 本文首先主要介绍了TI 的新一代时钟产品LMK0480X 的holdover 功能和指标,以及在 ...…

查看全部问答>

没有软件上msp430目录选择

新手求教 :当初装ccsv5没装msp-430lower power mcu 。现在要写程序,怎么办 …

查看全部问答>