单片机BootLoader是咋回事?

BootLoader的定义:

CPU进入APP之前运行的一小段程序代码就叫做BootLoader。它是由程序员编写的,作用是更新应用程序。这也就说明了只有BootLoader的单片机才可以升级。有的产品有升级的需要就需要BootLoader了。

单片机的启动过程可以这么叙述:start→stack→data→Vactor→main;

单片机一上电,PC指针指向0x00000000地址所在的一块内存,加载一个需要跳转的地址,这个地址可以是应用程序的地址,也可以是BootLoader的地址,是哪个地址根据开发阶段的不同有所不同。

一般来说一个完整的操作流程是,从初始地址开始跳转到boot里去检测需不需要升级,需要的话就会停在boot里,不需要的话就跳转到应用程序里。

看一下下图,右边两个hex文件分别是烧录到左图中的两个区域的,也就是单片机里,实际工程项目中这两个hex文件是在一起的,这里为了区分划分成了两个hex文件。

说明一下应用程序的首地址是这个应用程序的一个启动函数,启动函数是一个工程启动文件,相信学32单片机的时候都接触过有一个叫做启动文件的东西,有堆栈的建立,静态数据的存储,向量表的建立,这些基础工作做完,才会跳转到这个main函数,执行的才是用户自己的代码。

补充:如果需要升级的话,上面说到会停在boot里,然后根据诊断仪的引导,完成app黄色区域的擦除和写入,当app程序下载完成后,软件自动复位,此时程序就更新完成了,不再有升级需求,boot就会直接跳转到应用程序。

相关推荐
玩转单片机与嵌入式2 小时前
不会 Python、不会深度学习,也能在STM32上跑AI模型吗?
人工智能·单片机·嵌入式硬件·嵌入式ai
jghhh013 小时前
基于STM32的桌面Mini时钟设计
stm32·单片机·嵌入式硬件
电化学仪器白超3 小时前
小乌龟Git全程图形化操作指南:嵌入式本地版本管理与Gitee私有云备份实战
git·python·单片机·嵌入式硬件·物联网·gitee·自动化
yong99905 小时前
基于STM32 Nucleo板的彩色LED照明灯设计(纯CubeMX开发)
stm32·单片机·嵌入式硬件
独小乐5 小时前
019.ADC转换和子中断|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·驱动开发·笔记·嵌入式硬件·mcu·arm
lingzhilab6 小时前
零知派——STM32驱动INA219电流功率监测计实现高精度电源管理
stm32·单片机·嵌入式硬件
QH139292318808 小时前
KEYSIGHT N9030B PXA信号/频谱分析仪
科技·嵌入式硬件·集成测试
Shang180989357269 小时前
T31ZX 君正/INGENIC智能视频处理器T31ZX可提供软硬件资料T31Z采用先进的低功耗设计
嵌入式硬件·fpga开发·音视频·t31zx智能视频处理器
ahccqw9 小时前
CAN总线通信入门及实例代码(stm32f4系列)
stm32·单片机·嵌入式硬件
云栖梦泽10 小时前
Linux内核与驱动:13.从设备树到Platform平台总线
linux·运维·c++·嵌入式硬件