微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > TQ2440国嵌学院gboot-内存初始化

TQ2440国嵌学院gboot-内存初始化

时间:11-26 来源:互联网 点击:
The S3C2440A memory controller provides memory control signals that are required for external memory access.

The S3C2440A has the following features:
— Little/Big endian ( selectable by a software)
— Address space: 128Mbytes per bank (total 1GB/8 banks)
— Programmable access size (8/16/32-bit) for all banks except bank0 (16/32-bit)
— Total 8 memory banks
Six memory banks for ROM, SRAM, etc.
Remaining two memory banks for ROM, SRAM, SDRAM, etc .
— Seven fixed memory bank start address
— One flexible memory bank start address and programmable bank size
— Programmable access cycles for all memory banks
— External wait to extend the bus cycles
— Supporting self-refresh and power down mode in SDRAM

翻译如下:

在S3C2440A存储器控制器提供所需要的外部存储器存取的存储器控制信号。
该S3C2440A具有以下特点:
- 小/大端(可选择由软件)默认是大端模式
-地址空间:每个bank128Mbytes(共1GB/8bank)
- 可编程访问的大小(8/16/32位),适用于所有银行,除了区0(16位/ 32位)
-共8个内存bank
六个内存bankROM,SRAM等。
剩余的两个存储体的ROM,SRAM,SDRAM,等等。
-七个固定内存区的起始地址
- 一个灵活的存储体的起始地址和可编程bank规模
-对所有存储体的可编程访问周期
- 外部等待延长总线周期
- 支持自刷新和掉电模式的SDRAM

S3C2440A Memory Map after Reset下图就是reset之后的map,PS:Bank 6 and 7 must have the same memory size.



左边的图可知,左边是从nor flash启动,也就是SDRAM,nor flash的地址0x30000000,这就是我们在之前所以只为什么卸载到0X30000000这个地址中

右边的图可知,右边是从nand flash启动

下面开始设定BANK0~5


从上图可以看出,BANKCON0~5保持默认0X0700,因为SDram是bank6,bank7中,因此不需要设定
开始设定BANK6~7


由于使用的是SDRAM,因此对应如下:


也就是0b 11 0000 0000 0000 0001=0x00180001

下一个寄存器是


得到0x008c04f5

下面是banksize寄存器
得到0x000000b1

最后一组


得到0x00000030,因为只需要设定CAS的潜伏期,在时序图中有介绍

代码如下:

#define mem_contrl 0x48000000//宏定义基地址
init_sdram://跳转到的函数
ldr r0, =mem_contrl//伪指令,r0指向基地址所指向的内存单元
add r3, r0, #4*13//因为是以循环的方式进行赋值,因此用来比对的尾地址r0+4*13,因为有13个寄存器
adrl r1, mem_data//将待设定的值放入R1中

0://进入循环
ldr r2, [r1], #4将r2指向R1指向的地址,然后R1+4
str r2, [r0], #4
cmp r0, r3//比较r0,r3的大小
bne 0b//判断是否相等,b判断,ne不相等,跳到0,然后b表示向前跳转
mov pc, lr

mem_data:
.long 0x22000000
.long 0x00000700
.long 0x00000700
.long 0x00000700
.long 0x00000700
.long 0x00000700
.long 0x00000700
.long 0x00018001
.long 0x00018001
.long 0x008c04f5
.long 0x000000b1
.long 0x00000030
.long 0x00000030

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top