Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75619
  • 博文数量: 33
  • 博客积分: 1422
  • 博客等级: 上尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-22 21:11
个人简介

学无止境

文章存档

2011年(13)

2010年(20)

我的朋友

分类: 嵌入式

2010-08-02 21:51:01

刚出生的小孩是要模仿别人才能成长的,本实验参照《2410完全开发流程》
和vivi代码。使用SDRAM需要设置13个寄存器,描述如下所示:
1、BWSCON:对应BANK0-BANK7,每个BANK使用4位。这四位表示:
a、STx:启动/禁止SDRAM的数据掩码引脚,对于SDRAM,此位为0;对于SRAM此位
为1。
b、WSx:是否使用存储器的WAIT信号,通常设置为0。
c、DWx:使用两位来设置存储器的位宽:00-8位,01-16位,10-32位。
d、比较特殊的是BANK0对应的4位,它们有硬件跳线决定的,只读。
所以对于mini2440开发板,SDRAM接在BANK6理论上只设置BANK6对应的四位
为0010就行了,《2410完全开发流程》上这么说的,不过他的代码不是那样
vivi的代码也不是当然vivi用到其他的BANK。我在这里就只设置那几位。
BWSCON=0x02000000
2、BANKCON0-BANKCON5:我们没用到所以设置默认0x00000700
3、BANKCON6-BANKCON7:在8个BANK中只有BANK6-BANK7可以使用SDRAM或
SRAM,所以BANKCON6-7与BANK0-5有点不同:
   a、MT【16:15】:用于设置本BANK外接式SRAM或SDRAM,00-SRAM
   11-SDRAM
   b、当MT=11时还要设置两个参数:
   Trcd【3:2】:RAS to CAS delay,设置为01
   SCAN【1:0】:SDRAM的列地址位数,00-8位,01-9位,10-10位
   这里设置为01
所以BANKCON7=BANKCON6=0x00018005
4、REFRESH:设置为0x008e000 + R_CNT,
其中R_CNT = 2^11+1-SDRAM时钟频率(MHZ)*SDRAM刷新周期(us)
查看vivi代码 REFRESH=0x008e0495
5、BANKSIZE=0xb2
6、MRSRB6=MRSB7=0x30
head.s代码如下:



.text
.global _start
_start:
            
            @关闭看门狗
            mov r0, #0x53000000
            mov r1, #0x0
            str r1, [r0]
    
            @初始化时钟
            ldr r1,=0x4c000000 @设置LOCKTIME
            mov r2,#0xffffffff
            str r2,[r1]
            
        
            ldr r1,=0x4c000014 @设置CLKDIVN
            mov r2,#0x5
            str r2,[r1]
            
            @CPU总线模式从Fast Bus Mode变为Asynchronous
            mrc p15, 0, r1, c1, c0,
            orr r1, r1, #0xc0000000 
            mcr p15, 0, r1, c1, c0,
             
            ldr r1,=0x4c000004 @设置MPLLCON
            ldr r2,=0x7f021
            str r2,[r1]
            
          @@@@@@时钟初始化结束    
     @@@@SDRAM初始化
      ldr r0,=SDRAMDATE
      ldmia r0,{r1 - r13}
      ldr r0,=0x48000000
      stmia r0,{r1 - r13}
     @@@@@@@@@@@@@@@@@@@@@
      @@@ copy2sdram 拷贝到SDRAM
      mov     r1,    #0
      ldr     r2,    =0x30000000
      mov     r3,    #4*1024
   1: ldr     r4,    [r1],#4
      str     r4,    [r2],#4
      cmp     r1,    r3
      bne     1b
      @@@@@@@@@@@@@@@
       ldr sp,=0x34000000 @设置堆栈    
       bl        main
halt_loop:
       b        halt_loop

.align 4
SDRAMDATE:
   .long 0x02000000
   .long 0x00000700    
   .long 0x00000700
   .long 0x00000700
   .long 0x00000700
   .long 0x00000700
   .long 0x00000700
   .long 0x00018005
   .long 0x00018005
   .long 0x008e0495
   .long 0x000000b2
   .long 0x00000030
   .long 0x00000030
   
 


编译下载后能运行,不过好像看不出有什么区别。不知道有没有其他错误。有待发现。
阅读(565) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-08-02 22:53:29

呵呵