初识BootLoader(二)

BootLoader的功能

BootLoader,通常是驻留在ECU非易失性存储器(NVM,None Valitale Momory)中的一段程序加载代码,每次ECU复位后,都会运行bootloader。它会检查是否有来自通信总线的远程程序加载请求,如果有,则进入bootloader模式,建立与程序下载端(通常为PC上位机)的总线通信并接收通信总线下载的应用程序、解析其地址和数据代码,运行NVM驱动程序,将其编程到NVM中,并校验其完整性,从而完成应用程序更新。如果没有来自通信总线的远程程序加载请求,则直接跳转到应用程序复位入口函数,运行应用程序。 

BootLoader的作用

BootLoader软件实际包含了Boot和Loader两部分,Boot功能就是从BootLoader软件的起始地址开始运行,初始化嵌入式系统运行的最小配置,如时钟、中断、看门狗等功能。Loader功能就是在Boot软件运行起来后,将需要更新的应用程序加载刷写到指定的应用程序地址区间。嵌入式系统的软件都是运行在MCU中的,在软件开发和调试之初都是可以通过调试工具进行刷写更新软件。在嵌入式系统软件集成的产品中后,考虑到产品使用的场景,需要兼顾防水、防尘等相关要求,嵌入式系统的硬件都会密封的外壳之中。如果后续产品需要升级,优化嵌入式软件,这个时候就不能把产品外壳拆除使用调试工具进行刷写。此时就可以通过BootLoader,让嵌入式系统跳转运行在BootLoader中,然后通过BootLoader刷写新的软件。

BootLoader对MCU内存分配要求

BootLoader和应用软件是分配在MCU的不同区域的内存中,同时MCU在出厂的时候还可能自带BootLoader,在产品级软件开发时还有标定数据以及其他一些配置信息需要保存,也需要划分占用一定的内存空间。以STM32F103平台的MCU为例,根据使用需求,划分了一个用户定制开发BootLoader在MCU的内存分配如下:

在0x1FFFF7D6地址开始为MCU的自带BootLoader占用内存空间,所占用的内存为MCU的系统存储器,可以通过Boot配置选择是否激活该功能。如果不使用系统自带的BootLoader,程序默认会从0x8000000的地址开始运行,该地址为MCU的内部Flash起始地址,如果使用了用户定制BootLoader,此时会运行BootLoader的程序。0x8004000为用户程序起始地址,如果使用了标定数据,可以在内部Flash中划分一部分空间用于存储标定数据,该示例中0x800E000为标定数据的起始空间地址。0x20000000为MCU的SRAM空间起始地址。

来源:综合自网络

相关推荐
小雨下雨的雨3 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
我没胡说八道5 小时前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
秦亚伟5 小时前
AI浪潮重塑融资租赁行业新格局
人工智能
love530love5 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
元启数宇5 小时前
喷淋AI布点实战:8小时人工布点→20分钟自动出图
人工智能
哈哈,柳暗花明5 小时前
人工智能专业术语详解(H)
人工智能·专业术语
圣殿骑士-Khtangc5 小时前
AI 编程工具 2026 实战横评:Cursor 3 vs Claude Code vs Copilot,开发者选型完全指南
人工智能·copilot
云器科技5 小时前
云器Lakehouse 2026年5月版本发布:拥抱 AI Agent,重塑数据智能开发新范式
人工智能
小鹰-上海鹰谷-电子实验记录本5 小时前
第六届党建引领科创生态座谈会 | 邓光辉博士出席分享AI赋能创新药科研新范式
人工智能·ai·电子实验记录本·药企合规
极客老王说Agent5 小时前
2026电信IDC机房巡检深度报告:人工巡检频次和深度够吗?实在Agent重塑智慧运维新范式
人工智能·ai·chatgpt