学习目标

  • 理解两阶段启动
  • 掌握数据搬运
  • 学习地址重定位

4.1 为什么需要 Bootloader

真实的嵌入式系统:

  • 程序存储在 Flash(只读、慢)
  • 程序运行在 SRAM(可读写、快)
  • Bootloader 负责将程序从 Flash 搬到 SRAM

4.2 两阶段启动

Stage 1: Bootloader (Flash)
  ↓ 拷贝代码和数据
Stage 2: Application (SRAM)

4.3 内存布局

Flash (0x80000000):
  ├── Bootloader
  ├── App .text
  ├── App .rodata
  └── App .data (初始值)

SRAM (0x80100000):
  ├── .text (从 Flash 拷贝)
  ├── .rodata (从 Flash 拷贝)
  ├── .data (从 Flash 拷贝)
  ├── .bss (清零)
  └── 栈

4.4 Bootloader 任务

  1. 拷贝 .text 段
  2. 拷贝 .data 段
  3. 清零 .bss 段
  4. 跳转到应用程序入口

下一步

启动代码编写

更新时间: