您的位置:首页 > 娱乐 > 八卦 > 初识BootLoader(二)

初识BootLoader(二)

2024/12/23 15:05:09 来源:https://blog.csdn.net/Anghuikeji/article/details/139530967  浏览:    关键词:初识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空间起始地址。

来源:综合自网络

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com