裸板程序记录之sdram初始化-s3c2440

sdram初始化

1.主要是寄存器的设置

sdram相关的寄存器
  • 1.1 BWSCON
BWSCON

STx:网上资料说是什么启动/禁止SDRAM的数据掩码引脚,对于SDRAM,此位为0;对于SRAM,此位为1,也不知道对不对,不确定的情况就参考u-boot的设置

#define B6_BWSCON       (DW32)
#define B7_BWSCON       (DW32)

SMRDATA:
    .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))

所以bit[31:28] = 0010'b表示数据宽度为32bit,16位不够寻址64MByte,s6设置成同样的值

    例子里是这么设置的
p[0] = 0x22011110;     //BWSCON
但是你也可以设置成下面的值,sdram也能工作    
p[0] = 0x22000000;     //BWSCON

现在是把例子里的值改成了自己设置的,下载进去也能跑起来,并且通过openjtag读取寄存器,确实是自己设置的值
> mdw 0x48000000
0x48000000: 22000000
BWSCON
内存映射图
  • sdram的原理图
sdram的原理图
  • 1.2 BANKCON0-BANKCON7
寄存器示意图

这里我们只关心6和7,其他使用默认值即可,这里涉及到时序图需要参考cpu手册和sdram手册来进行设置
cpu手册nGCS时序图

cpu sdram读时序图
cpu sdram写时序图
  • MT
     选择sdram,也就是11
bit[16:15] = 11'b
  • Tacs:地址信号稳定稳定一段时间,发出片选信号,其实也叫地址建立时间.
    sdram时序图,从下图看,应该是可以同时发出来的,实际应用这些参数都是可以通过程序进行调节的,在确保程序正常工作时调到最小,这里我们先设为1,


    Tacs
Tacs = 0x1 [14:13] = 0x1
  • Tcos:在发出oe或者we信号之前,cs片选信号已经稳定的时间,从下面的时序图上看,两者也是可以同时发出的.这里先选为0x1好了
Tcos bit[12:11] = 0x1'b
sdramTcos
  • Tacc 读写信号脉冲肯定要保持一定的宽度才能正确被识别,这个就是脉冲应该维持多长时间,从图上看应该是TIS+TIH的值,参考sdram时间参考表那张图,图中的时间都是ns,从描述上看是建立时间加上保持时间,应该就是这个,我们用的是-6系列的芯片
Tacc bit[10:8] = 000'b,这里是1 个clock(周期是10ns),HCLK是100MHZ,应该够使用了
Tacc脉冲宽度
sdram时间参考表
  • Tcoh读写信号之后,片选信号还要维持多久,从Tacc脉冲宽度那张图,看着好像不需要预留这个时间
Tcoh bit[7:6] = 01'b这里预留1 个 clock吧
  • Tcah 这个是片选信号过后,地址线的数据还要维持多久,看起来好像也不需要,这里也预留1个clock好了
Tcah bit[5:4] = 01'b
  • Trcd RAS到CAS的延迟,这个时间应该是activitate一行后,隔多久sdram才准备好接受你的读写操作(也可以说列地址才能发出来,因为从时序上看,读写操作和列地址是在同一个时钟沿有效的,所以应该是同一时间发生的两件事情,采用哪一种说法应该都没问题),参考时间表那张图,应该最小是18ns,这里我们这是为0好了
Trcd [3:2] = 00'b  2个 clock
  • SCAN列地址的位宽 column address A0-A8
设为01
Trcd时间

最终这个寄存器的值就是

bankcon6 = 0x18851,设置成0x18005也是能够正常工作的,就是上面那些所有设置成预留一个clock的变成0.

2.3 REFRESH

REFRESH
  • REFEN 使能控制,使能设为1
  • TREFMD 刷新模式控制寄存器位
  • Trp [21:20] SDRAM RAS pre-charge Time,pre-charge需要多长时间,最小是18ns,这里选00,2个clock
Trp
  • Tsrc [19:18]: activate命令激活same bank最小的时间间隔是trc 而trp + tsrc = trc, trc参照手册 最小是60ns,我们取70ns吧!这样tsrc就是4 clock,取00

The minimum time interval between successive BankActivate commands to the same bank is defined by tRC(min.).

Trc
  • Refresh Counter [10:0] 刷新周期的控制
sdram:8192 refresh cycles/64ms刷新周期是8192行耗时64ms,周期就是64ms/8192,只能比这个周期快,不能慢,满了就要丢失数据了.
64ms/8192 >= (2048 + 1 - counter)/100MHZ
counter >= 2049 - 781.25 = 1267.75,
这里我们取1269好了,刚好周期是7.8us

最终该寄存器的值是 0x8004f5
Refresh Counter

2.4 BANKSIZE

  • BURST_EN [7] 使能突发操作
BURST_EN
  • SCKE_EN [5] 这一位使不使能都能正常工作,以防万一,使能上
  • BK76MAP [2:0] 这里映射成32M/和32M不能正常工作,只能映射64或128以上

2.5 MRSRB6和MRSRB7

  • WBL [9] Write burst length 这里我们选为0,设置成了1也是能够正常工作的
    0: Burst (Fixed)
    1: Reserved

  • TM [8:7] Test mode 设置为00,试了一下配置成01也能正常工作
    00: Mode register set (Fixed)
    01, 10 and 11: Reserved

8 Mode Register Set command (RAS# = "L", CAS# = "L", WE# = "L", A0-A12 = Register Data)
The mode register stores the data for controlling the various operating modes of SDRAM. The Mode Register Set command programs the values of CAS# latency, Addressing Mode and Burst Length in the Mode register to make SDRAM useful for a variety of different applications. The default values of the Mode Register after power-up are undefined;
-----mode寄存器配置sdram的地址模式,cas latency,和突发长度以适用不同的应用场景,默认值是不确定的
therefore this command must be issued at the power-up sequence.
-----因此上电的时候需要发出这个命令
The state of pins A0~A9 and A12 in the same cycle is the data written to the mode register. Two clock cycles are required to complete the write in the mode register (refer to the following figure). The contents of the mode register can be changed using the same command and the clock cycle requirements during operation as long as all banks are in the idle state.
-----a0-a9,a12引脚上的值就是写入该寄存器的值,上电之后也能进行更改,只要all bank是空闲的

  • CL [6:4] CAS latency这个值应该是根据sdram芯片支持的cas latency配置的
    000 = 1 clock, 010 = 2 clocks, 011=3 clocks

  • BT [3] Burst type 设为0
    0: Sequential (Fixed)
    1: Reserved

  • BL [2:0] Burst length 这里设为000
    000: 1 (Fixed)
    Others: Reserved

以下是例程提供的设置.

    p[0] = 0x22011110;     //BWSCON
    p[1] = 0x00000700;     //BANKCON0
    p[2] = 0x00000700;     //BANKCON1
    p[3] = 0x00000700;     //BANKCON2
    p[4] = 0x00000700;     //BANKCON3  
    p[5] = 0x00000700;     //BANKCON4
    p[6] = 0x00000700;     //BANKCON5
    p[7] = 0x00018005;     //BANKCON6
    p[8] = 0x00018005;     //BANKCON7
    
                                            /* REFRESH,
                                             * HCLK=12MHz:  0x008C07A3,
                                             * HCLK=100MHz: 0x008C04F4
                                             */ 
    p[9]  = 0x008C04F4;
    p[10] = 0x000000B1;     //BANKSIZE
    p[11] = 0x00000030;     //MRSRB6
    p[12] = 0x00000030;     //MRSRB7
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容

  • 时钟初始化 首先需要选择时钟源的来源,jz2440选择的是00,使用晶振的模式 时钟相关的寄存器设置 3.注意事项...
    sgy1993阅读 577评论 0 0
  • uboot-step 8 内存初始化 内存的初始化相比前面的那些步骤略微的麻烦了些,为了能够比较清楚地说明下内存的...
    2625K阅读 2,738评论 0 5
  • 以下三个是最经常被问到的,基本上属于介绍性的题目,无所谓正确答案,在我看来,这些不算真正的问题。 Discuss ...
    蜀湘情缘阅读 6,142评论 0 8
  • 押上全部,赌徒的心态,即使有偶尔的胜利,但最终都会受到现实给的惨痛教训,因为,没人会在得手之后停下来。要学习概率...
    妄_念阅读 188评论 0 0
  • 其实我是画在了一个快递盒子上啦,于是快递盒子就变成笔盒了(・ิϖ・ิ)っ
    盛行风阅读 357评论 3 2