【嵌入式Linux+ARM】存储控制器(操作SDRAM)
1.存储控制器介绍
s3c2440中的“存储管理器”提供了访问外部设备所需要的信号,有如下特性:
1.支持小字节序、大字节序(通过软件选择)
2.每个BANK为128M,一共有8个BANK,共1G
3.BANK0~BANK5可以支持外接ROM、SRAM等,BANK6~BANK7除可以支持ROM、SRAM外 还支持SDRAM
4.BANK0~BANK7的起始地址是固定的
5.外接SDRAM时,支持自刷新和省电模式
s3c2440上有ADDR0~ADDR26访问范围只有128M,如何达到上面的1G,通过对外引出的8跟片选信号nGCS0-nGCS7,对应于BANK0~BANK7。片选信号输出低电平可以选中相应的外接设备。
2.实验代码
本实验流程:
禁止看门狗—>nand flash中前4k字节复制到芯片内部SRAM中执行—>通过存储控制器初始化外接的SDRAM—>复制代码到SDRAM中—>跳转到SDRAM中执行。
下面是需要配置存储控制器的相关寄存器,需要看手册:
0x22011110, //BWSCON 0x00000700, //BANKCON0 0x00000700, //BANKCON1 0x00000700, //BANKCON2 0x00000700, //BANKCON3 0x00000700, //BANKCON4 0x00000700, //BANKCON5 0x00018005, //BANKCON6 0x00018005, //BANKCON7 0x008C07A3, //REFRESH 0x000000B1, //BANKSIZE 0x00000030, //MRSRB6 0x00000030, //MRSRB7
head.S
.equ MEM_CTL_BASE, 0x48000000 //.euq A B 就是A=B 等价于c语言的宏定义 .equ SDRAM_BASE, 0x30000000 .text .global _start _start: bl disable_watch_dog bl memsetup //设置存储控制器 bl copy_steppingstone_to_sdram //复制代码到SDRAM中 ldr pc, =on_sdram //跳到SDRAM中执行 on_sdram: ldr sp, =0x34000000 //设置栈 bl main halt_loop: b halt_loop disable_watch_dog: mov r1, #0x53000000 mov r2, #0x0 str r2, [r1] //关闭看门狗 mov pc, lr //返回 copy_steppingstone_to_sdram: mov r1, #0x0 ldr r2, =SDRAM_BASE mov r3, #4*1024 1: ldr r4, [r1], #4 str r4, [r2], #4 cmp r1, r3 bne 1b //bne b跳转 ne是not equal 表示如果不相等,跳到1出继续执行 注意1不是l。。。 mov pc, lr memsetup: mov r1, #MEM_CTL_BASE adrl r2, mem_cfg_val add r3, r1, #52 1: ldr r4, [r2], #4 str r4, [r1], #4 cmp r1, r3 bne 1b mov pc, lr .align 4 mem_cfg_val: //存储控制器中13个寄存器的值 .long 0x22011110 .long 0x00000700 .long 0x00000700 .long 0x00000700 .long 0x00000700 .long 0x00000700 .long 0x00000700 .long 0x00018005 .long 0x00018005 .long 0x008C07A3 .long 0x000000B1 .long 0x00000030 .long 0x00000030Makefile
sdram.bin:head.S led.c arm-linux-gcc -c head.S -o head.o arm-linux-gcc -c led.c -o led.o arm-linux-ld -Ttext 0x30000000 head.o led.o -o sdram_elf arm-linux-objcopy -O binary -S sdram_elf sdram.bin arm-linux-objdump -D -m arm sdram_elf > sdram.dis clean: rm -rf *.o *.bin *.dis *elf
测试时用的led.c,随意选择前面文章中的led点灯程序即可。
注:原创文章,转载请著名出处:http://blog.csdn.net/scottly1/article/details/38960751
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。