Flash
概述
容量大速度快成本低,但是必须先擦除后写入,擦写速度较慢,必须以Block方式写入。
主要Flash的区别
NOR Flash
Bootloader启动流程分析
Bootloader的作用:Bootloader的总目标就是正确地调用内核来执行。
大多数Bootloader分为stage1(汇编实现)和stage2(C语言实现)两大部分。
stage1
- 硬件初始化
- 关闭看门狗
- 关中断
- 设置CPU的速度和时钟频率
- 配置SDRAM存储控制器
- 为加载Bootloader的stage2代码准备RAM空间
- 复制Bootloader的stage2代码到RAM空间中
- 设置好堆栈
- 跳转到stage2的C函数入口点
stage1的主要任务是将stage2的代码复制到RAM空间中并执行。
stage2
- 初始化本阶段要使用到的硬件设备
- 检测系统内存映射
- 没有用户干预时将内核映像从Flash读到RAM空间中
- 为内核设置启动参数
- 调用内核
stage2的主要任务是将内核复制到RAM空间中并调用内核。
S5PV210启动流程分析
- 上电复位后从IROM处执行已固化的启动代码BL0
- 拷贝BL1到IRAM处,并对BL1进行校验,校验通过后转入BL1进行执行。BL1继续初始化,并拷贝BL2到IRAM中并对其校验,随后转入BL2
- BL2完成一些比较复杂的初始化,包括DRAM的初始化,完成后将OS代码拷贝到DRAM中,并跳转到OS中执行并完成启动引导
BL0固化代码的初始化
- 关闭看门狗
- 初始化icache
- 初始化栈
- 初始化堆
- 初始化块设备拷贝功能
- 设置系统时钟
- 拷贝BL1到iRAM
- 检查BL1的校验和,如果失败则第二启动模式,校验成功则跳到0xD0020000(IRAM)处执行。

