文章目录
- Bootloader 中 APP 的自我复制与启动机制解析
- 一、为什么要进行自我复制?
- 二、程序整体结构概述
- 三、汇编启动代码分析
- 重点解释:
- 四、C 语言部分分析
- 核心功能:
- 五、start\_app 函数:手动启动指定 APP
- 六、总结
- 七、适用场景
Bootloader 中 APP 的自我复制与启动机制解析
在嵌入式系统中,我们常常会使用 Bootloader 作为程序的引导入口,它负责初始化系统资源、判断是否需要升级程序,并最终跳转至应用程序(APP)运行。本文将讲解一种特殊但实用的技巧:Bootloader 在启动后将自身复制到 RAM 中运行,并在复制完成后,从 RAM 重新启动整个程序。
一、为什么要进行自我复制?
Flash 中执行程序是常规做法,那为何还需要将程序复制到 RAM 呢?主要原因有以下几点:
-
加快执行速度
Flash 的访问速度相较 RAM 要慢,而将代码复制到 RAM 后运行,能显著提升程序执行效率。 -
实现代码完整重定位(Position-independent)
某些平台在运行时对代码地址有特殊要求,比如要求代码在 RAM 的某一位置执行。 -
为程序热升级或 OTA 预留空间
通过 RAM 运行,可以在 Flash 中擦除/替换当前正在