Chinaunix首页 | 论坛 | 博客
  • 博客访问: 405411
  • 博文数量: 83
  • 博客积分: 2011
  • 博客等级: 大尉
  • 技术积分: 741
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-04 22:51
文章分类

全部博文(83)

文章存档

2009年(83)

我的朋友

分类: LINUX

2009-08-03 23:11:02

s3c2440 有27根地址线 ADDR0- ADDR26,可寻址128M, 还有8根片选信号nGCS0 - nGCS7,对应BANK0 - BANK7, 当访问BANKx 的地址空间, nGCSx 引脚为低电平, 选中外设.
 
存储器所接外设.
BANK0---NOR Flash --0x00000000-0x001fffff-2M-16位.
 
BANK1---IDE接口命令块寄存器--0x08000000-0x0800000f
 
BANK2---IDE接口控制块寄存器
 
BANK3----10M网卡
BANK4----10/100M见网卡
BANK5----扩展串口A
BANK5----扩展串口B
BANK6---SDRAM --0x30000000-0x33ffffff
 
SDRAM----
SDRAM内部是一个存储阵列, 如同表格, 先指定一个行,再指定一个列,就可找到所需单元.此为SDRAM寻址的原理.此单元称为存储单元, 这个表格就是逻辑Bank(Logical Bank, L-Bank). SDRAM 一般含有4个L-Bank.
 
访问SDRAM一般步骤:
1.cpu发出片选信号nSCS0有效, 选中SDRAM芯片.
2.通过ADDR24,ADDR25选择L-Bank
3.对芯片进行统一的行/列寻址.
4.找到存储单元,进行统一的数据传输.
 
 @ 设置存储控制器以便使用SDRAM等外设
memsetup:
   
    mov r1,     #MEM_CTL_BASE       @ 存储控制器的13个寄存器的开始地址
    adrl    r2, mem_cfg_val         @ 这13个值的起始存储地址
    add r3,     r1, #52             @ 13*4 = 54
1: 
    ldr r4,     [r2], #4            @ 读取设置值,并让r2加4
    str r4,     [r1], #4            @ 将此值写入寄存器,并让r1加4
    cmp r1,     r3                  @ 判断是否设置完所有13个寄存器
    bne 1b                          @ 若没有写成,继续
    mov pc,     lr                  @ 返回

.align 4
mem_cfg_val:
    @ 存储控制器13个寄存器的设置值
    .long   0x22011110      @ BWSCON
    .long   0x00000700      @ BANKCON0
    .long   0x00000700      @ BANKCON1
    .long   0x00000700      @ BANKCON2
    .long   0x00000700      @ BANKCON3 
    .long   0x00000700      @ BANKCON4
    .long   0x00000700      @ BANKCON5
    .long   0x00018005      @ BANKCON6
    .long   0x00018005      @ BANKCON7
    .long   0x008C07A3      @ REFRESH
    .long   0x000000B1      @ BANKSIZE
    .long   0x00000030      @ MRSRB6
    .long   0x00000030      @ MRSRB7
阅读(1711) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~