文章目錄
- Bootloader 中 APP 的自我復制與啟動機制解析
- 一、為什么要進行自我復制?
- 二、程序整體結構概述
- 三、匯編啟動代碼分析
- 重點解釋:
- 四、C 語言部分分析
- 核心功能:
- 五、start\_app 函數:手動啟動指定 APP
- 六、總結
- 七、適用場景
Bootloader 中 APP 的自我復制與啟動機制解析
在嵌入式系統中,我們常常會使用 Bootloader 作為程序的引導入口,它負責初始化系統資源、判斷是否需要升級程序,并最終跳轉至應用程序(APP)運行。本文將講解一種特殊但實用的技巧:Bootloader 在啟動后將自身復制到 RAM 中運行,并在復制完成后,從 RAM 重新啟動整個程序。
一、為什么要進行自我復制?
Flash 中執行程序是常規做法,那為何還需要將程序復制到 RAM 呢?主要原因有以下幾點:
-
加快執行速度
Flash 的訪問速度相較 RAM 要慢,而將代碼復制到 RAM 后運行,能顯著提升程序執行效率。 -
實現代碼完整重定位(Position-independent)
某些平臺在運行時對代碼地址有特殊要求,比如要求代碼在 RAM 的某一位置執行。 -
為程序熱升級或 OTA 預留空間
通過 RAM 運行,可以在 Flash 中擦除/替換當前正在