嵌入式学习笔记2—S3C2440的内存初始化
2014-09-25 20:41
253 查看
本文基于国嵌的视频教程,总结一下ARM内存体系架构。
由S3C2440的datasheet可以看出,该芯片具有27根地址总线,则2^27=134217728bits=131072Kb=128Mb。总共有8根片选总线,所以最大可扩展内存为8*128=1024Mb=1GB地址空间。从外部看即有8个memory banks。ARM核访问内存地址则主要是通过存储控制器去访问内存空间。
具体初始化代码如下:
关于寄存器的取值和地址详见S3C2440的datasheet或者参考国嵌的视频教程。
由S3C2440的datasheet可以看出,该芯片具有27根地址总线,则2^27=134217728bits=131072Kb=128Mb。总共有8根片选总线,所以最大可扩展内存为8*128=1024Mb=1GB地址空间。从外部看即有8个memory banks。ARM核访问内存地址则主要是通过存储控制器去访问内存空间。
具体初始化代码如下:
#define mem_contrl 0x48000000 init_sdram: ldr r0,=mem_contrl @first register address add r3,r0,#4*13 @final register address,every register's length is 4 byte, @total has 13 registers adrl r1,mem_data @"adrl" load long address,r1 save data list first address 0: ldr r2,[r1],#4 @"#4"(decimalism) next loop [r1]=[r1]+4 str r2,[r0],#4 cmp r0,r3 @r0 and r3 compare bne 0b @judge:if not equal,then turn to 0 . "b" means turn to before mov pc,lr mem_data: .long 0x22000000 @.long indicate it's length .long 0x00000700 .long 0x00000700 .long 0x00000700 .long 0x00000700 .long 0x00000700 .long 0x00000700 .long 0x00018001 .long 0x00018001 .long 0x008c04f5 .long 0x000000b1 .long 0x00000030 .long 0x00000030
关于寄存器的取值和地址详见S3C2440的datasheet或者参考国嵌的视频教程。
相关文章推荐
- 嵌入式学习笔记1—S3C2440的时钟体系
- cortex_m3_stm32嵌入式学习笔记(二十四):内存管理实验(动态内存)
- 嵌入式linux的学习笔记-共享内存(六)
- 嵌入式学习-uboot-lesson7-内存初始化
- 【学习笔记】嵌入式Linux之内存管理
- Objective-C 学习笔记 - part 3 - 为对象分配内存并初始化
- JAVA学习笔记之继承和父类子类实例变量的初始化内存分析图
- [linux内存]伙伴系统学习笔记(二)--内存系统初始化
- s3c2440硬件学习笔记----嵌入式Linux基础知识和开发环境的构建
- 嵌入式学习笔记4-C语言环境初始化
- 嵌入式学习笔记 一:内存分部
- 学习altas笔记[客户端JS和Altas环境初始化关系和DataTable返回数据的客户端处理]
- 转:C++动态内存创建与内存管理学习笔记[2]
- 嵌入式开发学习笔记(YL2440,一些需要注意的地方)
- 直接初始化与拷贝初始化学习笔记
- keni:CLR无用内存回收学习笔记(2)
- C++动态内存创建与内存管理学习笔记[1]
- 转:C++动态内存创建与内存管理学习笔记[1]
- 学习嵌入式Linux的笔记和体会
- C++动态内存创建与内存管理学习笔记[3]