初识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空间起始地址。

来源:综合自网络

相关推荐
whaosoft-1431 小时前
大模型~合集3
人工智能
Dream-Y.ocean1 小时前
文心智能体平台AgenBuilder | 搭建智能体:情感顾问叶晴
人工智能·智能体
丶21361 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
春末的南方城市2 小时前
FLUX的ID保持项目也来了! 字节开源PuLID-FLUX-v0.9.0,开启一致性风格写真新纪元!
人工智能·计算机视觉·stable diffusion·aigc·图像生成
zmjia1112 小时前
AI大语言模型进阶应用及模型优化、本地化部署、从0-1搭建、智能体构建技术
人工智能·语言模型·自然语言处理
jndingxin2 小时前
OpenCV视频I/O(14)创建和写入视频文件的类:VideoWriter介绍
人工智能·opencv·音视频
AI完全体2 小时前
【AI知识点】偏差-方差权衡(Bias-Variance Tradeoff)
人工智能·深度学习·神经网络·机器学习·过拟合·模型复杂度·偏差-方差
GZ_TOGOGO2 小时前
【2024最新】华为HCIE认证考试流程
大数据·人工智能·网络协议·网络安全·华为
sp_fyf_20242 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02
人工智能·神经网络·算法·计算机视觉·语言模型·自然语言处理·数据挖掘
新缸中之脑2 小时前
Ollama 运行视觉语言模型LLaVA
人工智能·语言模型·自然语言处理