S3C6410 NAND启动流程
2015-03-17 18:46
127 查看
S3C6410 NAND启动流程
分类: 嵌入式ARM-Linux2013-01-3023:40 861人阅读 评论(4) 收藏 举报
nand启动s3c6410
S3C6410和2440的NAND启动流程大体一样,也有一些区别。这篇文章主要目的是梳理下S3C6410 NAND启动流程,也给这几天的学习来个总结。
S3C6410主存的地址范围为 0x0000_0000~0x6FFF_FFFF。主存部分分成四个区域:引导镜像区,内部存储去,静态存储区和动态存储区。
引导镜像区的地址范围是从0x0000_0000~0x07FFF_FFFF,但是没有实际的映射内存,引导镜像区反映一个镜像,这个镜像指向内存的一部分区域或者静态存储区。引导镜像的开始地址是0x0000_0000。
内部存储区用于启动代码访问内部ROM和内部SRAM,也被称为Steppingstone。内部ROM地址范围为0x0800_0000~0x0bff_ffff,为只读,当内部ROM启动被选中时,该区域能映射到引导镜像区。内部RAM地址范围为0x0c00_0000~0x0fff_ffff,可读写,当NAND启动被选择时,能映射到引导镜像区。
(图中steppingstone 4K是错误的,不知道为什么,有的芯片资料说是4K,有的说是8K,我请教过别人都是说8K,并且在内部SRAM设置sp为8*1024程序能正常跑,说明8K没有超出范围)
启动流程:
给板子上电之后,硬件会将nand前8K代码拷贝到steppingstone中,steppingstone会映射到引导镜像区,代码从0x0地址开始执行。可以通过这段启动代码将uboot等加载进SDRAM,实现更多功能。
这里有个小问题困扰了很久,因为这点跟2440不同,就是为什么nand里8K拷贝进steppigstone后程序从0地址开始跑,而不是0x0c00_0000(steppingstone 地址0x0c00_0000),后来又看了芯片资料,steppingstone会映射到引导镜像区,引导镜像区在映射之前是不指向实际内存地址的。我做了个测试,当8K拷贝完后,我将PC指针分别指向0x0,和0x0c00_0000去执行,发现执行的代码是一样的。所以以0x0,和0x0c00_0000为起始地址的8K代码其实是一样的,都是指向物理地址为0x0c00_0000的这段代码。
相关文章推荐
- S3C6410 NAND启动流程
- S3C6410 NAND启动流程
- S3C6410 NAND启动流程
- ARM处理器启动流程———S3C2440、S3C6410、S5PV210
- s3c6410 完全由SD卡启动Linux流程
- 关于ARM启动流程的分析(NandFlash Or NorFlash)
- ARM处理器启动流程———S3C2440、S3C6410、S5PV210
- ARM处理器启动流程———S3C2440、S3C6410、S5PV210
- S3C6410启动方式及启动流程
- s3c6410 完全由SD卡启动Linux流程
- COCOS2D-X 的启动流程
- 8.0源码解析:Activity启动流程
- S3C6410启动模式介绍
- Activity启动流程
- Android系统启动流程三之android
- JStrom 入门(三) 上传jar文件并启动流程
- Linux系统启动流程分析
- Android启动流程
- STM32的启动流程分析
- android app启动流程解析