Chinaunix首页 | 论坛 | 博客
  • 博客访问: 343585
  • 博文数量: 61
  • 博客积分: 2816
  • 博客等级: 少校
  • 技术积分: 880
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-18 23:38
文章存档

2012年(1)

2011年(19)

2010年(41)

分类: LINUX

2010-11-14 11:09:52

S3C2440--存储控制器
1.什么是存储控制器
    存储控制器说白了就是创建和控制其他存储设备的一种设备.在S3C2440中存储控制器的起始地址为0x48000000结束地址为0x48000030.通过配置存储控制器提供的13个寄存器的具体数值来达到访问外围设备的目的.
2.如何得到外围设备的访问地址
    在说明得到外围设备地址之前不得不先说明一下什么是片选信号.
    在S3C2440中共分为nGCS0~nGCS7共8个片选信号分别对应了BANK0~BANK7,当需要访问外围设备的空间时(即访问BANKX时),nGCSX引脚输出低电平信号,这样选择相对应的BANKx外围设备来访问.
(注:nGCS0~nGCS7在S3C2440手册中可以查找地址分配表)
BANK访问地址=BANK起始地址+地址线地址.
3.存储控制器寄存器使用:
    3.1存储控制器提供了那些寄存器:
          BWSCON,  BANKCONx(x=0~7), REFRESH, BANKSIZE, MRSRB6, MRSRB7共13个寄存器. 在这些寄存器中配置中当配置BANK0~BANK5的时候只需要配置BWSCON,  BANKCONx(x=0~5)即可,由于BANK6,BANK7,多用于外接SDRAM 所以配置的时候除配置BWSCON,  BANKCONx(x=6~7)外还需要配置REFRESH, BANKSIZE, MRSRB6, MRSRB7等4个寄存器信息.
     3.1.1BWSCON--位宽和等待寄存器:
             BWSCON共32位(貌似是废话),BWSCON高4位对应了外设的BANK7,然而BWSCON是每4位对应一个BANK所以一次类推可以得到其余BANK6~BANK0的对应位数.
             STx(x= 0~7):启动/禁止SDRAM数据掩码引脚,对伊SDRAM此位为0,对于SRAM此位为1;
             WSx(x= 0~7):是否使用存储器的WAIT信号,通常设为0.   /*0 = WAIT disable*/
             DWx(x= 0~7):用2为来对应相应的BANK位宽,00 = 8-bit 01 = 16-bit, 10 = 32-bit 11 = reserved
比较特殊的是BANK0 他没有ST0,WS0  且DW0[2:1]为只读--由硬件电路跳线决定01 = 16-bit, 10 = 32-bit。
            BANKCONx(x= 0~5): 用来控制外接设备的访问时序,默认设置0X0700可以满足使用需求.
/*****************************************************************************/
            BANKCONx(x= 6~7): 在8个BANK中只有BANK6和BANK7可以用来外接SRAM或SDRAM 所以在配置BANK6~BANK7会有所不同.
            MT[16:15]位:用来标识外接的设备是ROM/SRAM还是SDRAM, /*00 = ROM or SRAM 01 = Reserved (Do not use) 10 = Reserved (Do not use) 11 = Sync. DRAM*/
            当MT=0b00时(即外接ROM)此时设置与BANK0~BANK5并无多大差异.
            当MT=0b11时(即外接SDRAM).
                      Trcd[3:2]: RAS to CAS delay(内存行地址传输到列地址的延迟时间)  /*00 = 2 clocks 01 = 3 clocks 10 = 4 clocks*/
                      SCAN[1:0]:表示SDRAM列的地址为 可根据具体芯片情况设置 /*00 = 8-bit 01 = 9-bit 10= 10-bit*/
            REFRESH:刷新控制寄存器.
                      REFEN[23]:  控制SDRAM刷新功能    /*0 = Disable 1 = Enable (self or CBR/auto refresh)*/
                      TREFMD[22]:SDRAM刷新模式 /*0 = CBR/Auto Refresh 1 = Self Refresh (休眠模式)*/
                      Trp[21:20]: SDRAM RAS pre-charge Time  /*00 = 2 clocks 01 = 3 clocks 10 = 4 clocks 11 = Not support*/
                       Tsrc[19:18]:SDRAM Semi Row cycle time /*00 = 4 clocks 01 = 5 clocks 10 = 6 clocks 11 = 7 clocks*/
                       Refresh Counter[10:0]:SDRAM refresh count value.
            BANKSIZE:
                       BURST_EN[7]: ARM core burst operation enable /*0 = Disable burst operation. 1 = Enable burst operation.*/
                       SCKE_EN[5]:  SDRAM power down mode enable control by SCKE  /*0 = SDRAM power down mode disable. 1 = SDRAM power down mode enable*/
                       SCLK_EN[4]:  SCLK is enabled only during SDRAM access cycle for reducing power consumption. When SDRAM is not accessed SCLK becomes 'L' level.
                       /*0 = SCLK is always active.  1 = SCLK is active only during the access (recommended).*/
            BK76MAP[2:0]: 设置BANK6~BANK7的大小,
                       /*  010 = 128MB/128MB 001 = 64MB/64MB
                            000 = 32M/32M 111 = 16M/16M
                            110 = 8M/8M 101 = 4M/4M
                            100 = 2M/2M
                       */
            MRSRBx(x= 6~7):SDRAM模式设置寄存器:
                          能做修改的只有CL[6:4]:这位代表的是SDRAM时序的一些参数.  /*000 = 1 clock, 010 = 2 clocks, 011=3 clocks
Others: reserved*/
 
 
阅读(2436) | 评论(0) | 转发(0) |
0

上一篇:ARM映像文件

下一篇:我的小本本

给主人留下些什么吧!~~