Bootloader 原理
学习目标
- 理解两阶段启动
- 掌握数据搬运
- 学习地址重定位
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 任务
- 拷贝 .text 段
- 拷贝 .data 段
- 清零 .bss 段
- 跳转到应用程序入口