Flash

概述

容量大速度快成本低,但是必须先擦除后写入,擦写速度较慢,必须以Block方式写入。

主要Flash的区别

NOR Flash

  • 读快写慢
  • 支持随机读取,应用程序可以直接在Flash内运行

    NAND Flash

  • 读慢写快

  • 成本低

image.png

Bootloader启动流程分析

Bootloader的作用:Bootloader的总目标就是正确地调用内核来执行。
大多数Bootloader分为stage1(汇编实现)和stage2(C语言实现)两大部分。

stage1

  1. 硬件初始化
    1. 关闭看门狗
    2. 关中断
    3. 设置CPU的速度和时钟频率
    4. 配置SDRAM存储控制器
  2. 为加载Bootloader的stage2代码准备RAM空间
  3. 复制Bootloader的stage2代码到RAM空间中
  4. 设置好堆栈
  5. 跳转到stage2的C函数入口点

stage1的主要任务是将stage2的代码复制到RAM空间中并执行。

stage2

  1. 初始化本阶段要使用到的硬件设备
  2. 检测系统内存映射
  3. 没有用户干预时将内核映像从Flash读到RAM空间中
  4. 为内核设置启动参数
  5. 调用内核

stage2的主要任务是将内核复制到RAM空间中并调用内核。

S5PV210启动流程分析

  1. 上电复位后从IROM处执行已固化的启动代码BL0
  2. 拷贝BL1到IRAM处,并对BL1进行校验,校验通过后转入BL1进行执行。BL1继续初始化,并拷贝BL2到IRAM中并对其校验,随后转入BL2
  3. BL2完成一些比较复杂的初始化,包括DRAM的初始化,完成后将OS代码拷贝到DRAM中,并跳转到OS中执行并完成启动引导

image.png
图与文字描述要对应得上。

BL0固化代码的初始化

  1. 关闭看门狗
  2. 初始化icache
  3. 初始化栈
  4. 初始化堆
  5. 初始化块设备拷贝功能
  6. 设置系统时钟
  7. 拷贝BL1到iRAM
  8. 检查BL1的校验和,如果失败则第二启动模式,校验成功则跳到0xD0020000(IRAM)处执行。