历史上的今天
今天是:2025年04月07日(星期一)
2020年04月07日 | 【嵌入式Linux+ARM】存储控制器(操作SDRAM)
2020-04-07 来源:eefocus
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 0x00000030
Makefile
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点灯程序即可。
史海拾趣
|
今天,科学家们介绍了一种新型的电子电路。这种电路可以模仿人脑的运动,如果用在计算机上,计算机就能象人一样进行思维。人的大脑皮层是人的思维中心,是由神经元组成的复杂的网状结构,有灵敏的反应力。来自麻省理工学院(MIT)、新泽西朗讯公司 ...… 查看全部问答> |
|
老师安排的题目是数据恢复电路 用verilog编程的 自己上网查了也没搜到什么东西 哪位高手能给我解释解释这个电路啊 还有编程方面要注意些什么问题啊 先谢谢了!!! 对了 这是要求 数据恢复电路:半字节数据输入,不定长码流,MSB在前,起始位 ...… 查看全部问答> |
|
68013A端点EP6OUT的BULK写失败求助,急!! 易用专业的PCI、USB、LED方案正在对68013A采用slavefifo方式进行bulk读写操作 我用EP2做in端点,1024字节,2从缓冲 用EP6做OUT端点,512字节,4从缓冲 我写好了68013A的固件,用CYPRESS的开发工具 ...… 查看全部问答> |
|
1.昨天在公司电脑上配置的TFTP成功以后,下班回到家满心欢喜把家里的电脑也比葫芦画瓢来一遍,结果死活都启动不了。查了下端口UDP6协议下,后面占用是69端口,而不是udp。而且执行service tftpd-hpa restart ,他竟然停在那里,连命令行也不出来了 ...… 查看全部问答> |
|
我的新书《ARM Cortex-M0从这里开始》已经出版,即将上市,希望大家多多支持。在这里先谢谢大家了。。。。。。。。。。。。。 前言和目录: 已经上市 北航:http://www.buaapress.com.cn/bookdetai ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:10 编辑 器件型号:RDK_BLDC DRV8312-C2-KIT (电机控制评估套件) &nbs ...… 查看全部问答> |




