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