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
阅读(1719) | 评论(0) | 转发(0) |