嵌入式开发手记(一)嵌入式系统启动过程
2016-12-21 19:10
232 查看
S5pv210启动详解
soc详解。
1.cortex A8: arm(cpu)
2.BL1,BL2:为bootloder1,bootloder
2.1
(1)CPU上电后先从内部IROM(类似SRAM)中读取预先设置的代码(BL0),执行。这一段IROM代码首先做了一些基本的初始化(CPU时钟、关看门狗···)(这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来接的是什么样的DRAM,因此这一段IROM是不能负责初始化外接的DRAM的,因此这一段代码只能初始化SoC内部的东西);
注:然后这一段代码会判断我们选择的启动模式(我们通过硬件跳线可以更改板子的启动模式),
(2)然后从相应的外部存储器去读取第一部分启动代码(BL1,大小为16KB)到内部SRAM。
2.2从IRAM去运行刚上一步读取来的BL1(16KB),然后执行。BL1负责初始化NandFlash,然后将BL2读取到IRAM(剩余的80KB)然后运行
2.3从IRAM运行BL2,BL2初始化DRAM,然后将OS读取到DRAM中,然后启动OS,启动过程结束。
注:因为启动代码的大小是不定的,有些公司可能96kb就够了,有些公司可能1MB都不够。所以刚才说的2步的启动方式不合适。
三星的解决方案是:把启动代码分为2半(BL1和BL2),这两部分协同工作来完成启动。
内存知识点
内存:
1. SRAM 静态内存 特点就是容量小、价格高,优点是不需要软件初始化直接上电就能用
2. DRAM 动态内存 特点就是容量大、价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使用。
(1)单片机中:内存需求量小,而且希望开发尽量简单,适合全部用SRAM
(2)嵌入式系统:内存需求量大,而且没有NorFlash等可启动介质
(3)PC机: 内存需求量大,而且软件复杂,不在乎DRAM的初始化开销,适合全部用DRAM
外存:
1.NorFlash:特点是容量小,价格高,优点是可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质。
2.NandFlash(跟硬盘一样):特点是容量大,价格低,缺点是不能总线式访问,也就是说不能上电CPU直接读取,需要CPU先运行一些初始化软件,然后通过时序接口读写。
所以
(1)一般PC机都是:很小容量的BIOS(NorFlash)+很大容量的硬盘(类似于NandFlash)+大容量的DRAM
(2)一般的单片机: 很小容量的NorFlash +很小容量的SRAM
(3)嵌入式系统:因为NorFlash很贵,随意现在很多嵌入式系统倾向于不用NorFlash,
直接用:外接的大容量Nand +
外接大容量DRAM + SoC内置SRAM
soc详解。
1.cortex A8: arm(cpu)
2.BL1,BL2:为bootloder1,bootloder
2.1
(1)CPU上电后先从内部IROM(类似SRAM)中读取预先设置的代码(BL0),执行。这一段IROM代码首先做了一些基本的初始化(CPU时钟、关看门狗···)(这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来接的是什么样的DRAM,因此这一段IROM是不能负责初始化外接的DRAM的,因此这一段代码只能初始化SoC内部的东西);
注:然后这一段代码会判断我们选择的启动模式(我们通过硬件跳线可以更改板子的启动模式),
(2)然后从相应的外部存储器去读取第一部分启动代码(BL1,大小为16KB)到内部SRAM。
2.2从IRAM去运行刚上一步读取来的BL1(16KB),然后执行。BL1负责初始化NandFlash,然后将BL2读取到IRAM(剩余的80KB)然后运行
2.3从IRAM运行BL2,BL2初始化DRAM,然后将OS读取到DRAM中,然后启动OS,启动过程结束。
注:因为启动代码的大小是不定的,有些公司可能96kb就够了,有些公司可能1MB都不够。所以刚才说的2步的启动方式不合适。
三星的解决方案是:把启动代码分为2半(BL1和BL2),这两部分协同工作来完成启动。
内存知识点
内存:
1. SRAM 静态内存 特点就是容量小、价格高,优点是不需要软件初始化直接上电就能用
2. DRAM 动态内存 特点就是容量大、价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使用。
(1)单片机中:内存需求量小,而且希望开发尽量简单,适合全部用SRAM
(2)嵌入式系统:内存需求量大,而且没有NorFlash等可启动介质
(3)PC机: 内存需求量大,而且软件复杂,不在乎DRAM的初始化开销,适合全部用DRAM
外存:
1.NorFlash:特点是容量小,价格高,优点是可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质。
2.NandFlash(跟硬盘一样):特点是容量大,价格低,缺点是不能总线式访问,也就是说不能上电CPU直接读取,需要CPU先运行一些初始化软件,然后通过时序接口读写。
所以
(1)一般PC机都是:很小容量的BIOS(NorFlash)+很大容量的硬盘(类似于NandFlash)+大容量的DRAM
(2)一般的单片机: 很小容量的NorFlash +很小容量的SRAM
(3)嵌入式系统:因为NorFlash很贵,随意现在很多嵌入式系统倾向于不用NorFlash,
直接用:外接的大容量Nand +
外接大容量DRAM + SoC内置SRAM
相关文章推荐
- 嵌入式开发手记(一)嵌入式系统启动过程 (S5pv210)
- 嵌入式开发笔记(二)嵌入式系统启动过程 (S5pv210)
- uClinux嵌入式系统开发过程控制
- 嵌入式Linux系统的启动过程
- 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南二——理解消息循环和窗口过程
- 台式微型计算机系统的组成-嵌入式项目开发过程
- ARM嵌入式系统开发之发送过程的实现
- 嵌入式Linux系统启动过程 u-boot
- 第15章 Android启动过程 [Android应用开发与系统改造实战]
- 嵌入式系统开发过程中的常见问题
- 嵌入式Linux系统启动过程
- 嵌入式系统的启动过程(转)
- 关于嵌入式Linux系统的启动(很好的嵌入式linux启动过程分析)
- Linux嵌入式系统设计开发过程
- 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二) 理解消息循环和窗口过程
- 嵌入式系统开发过程中遇到的——volatile
- android系统开发小问题-启动过程中android字符没有显示出来
- 嵌入式系统启动过程
- 嵌入式Linux系统启动过程简介
- 浅析嵌入式Linux系统的构成和启动过程