初识BootLoader(二)

news2024/11/28 18:47:20

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

来源:综合自网络

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1802437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个 buffer 使用的负反馈实例

端到端拥塞控制其实就是负反馈的实施。典型的做法是识别到一系列标志性事件,比如丢包,时延增加等,然后对这些事件做反应,进而形成负反馈,但 inflight 守恒是一种完全不同的做法,它将负反馈平铺到了整个传输…

所谓自律,就是去对抗那些廉价的快乐

所谓自律,就是去对抗那些廉价的快乐 以下文章来源于洞见 ,作者洞见 导语 打败内心那只及时享乐的猴子。 董宇辉说过这样一句话:“廉价的快乐是直接给你想要的东西,高等的快乐则会给你设置重重阻碍。” 廉价的快乐,就…

什么情况下需要配戴助听器

以下几种情况需要考虑配戴助听器: 1、听力无波动3个月以上的感音神经性听力障碍。如:先天性听力障碍、老年性听力障碍、噪声性听力障碍、突聋的稳定期等,均可选配合适的助听器。 2、年龄方面。使用助听器没有严格的年龄限制,从出生数周的婴…

【Ardiuno】ESP32单片机初试点亮LED小灯

之前用的Ardiuno的主板做过一些简单的开发实验,按照相关说明还是很容易进行操作的。最近看了ESP32可以有wifi的功能,也就买来实验一下。 ESP32的主板开发环境安装,按照说明的安装下载程序总是报错,又上网搜索半天最后按照CSDN上某…

LeetCode刷题之HOT100之颜色分类

下午好呀,大家!昨天估计是喝了假酒,现在没有胃口,喝酒真的没有任何好处。以后尽量避免此活动。今天几乎没睡觉,准备做完这题回宿舍,把电脑也带回去。 1、题目描述 2、逻辑分析 对颜色排序,要求…

SpeedyBee飞塔F405 V3 50A

遥控器常用的几种协议: 一文打尽PWM协议、PPM协议、PCM协议、SBUS协议、XBUS协议、DSM协议 | STM32的通用定时器TIM3实现PPM信号输出 - 蔡子CaiZi - 博客园 (cnblogs.com) SpeedyBee飞塔的官方教程: FlowUs 息流 - 新一代生产力工具 为8位电调刷写固…

【小白专用】C# Task 类异步操作-浅谈

注解 Task类表示不返回值并且通常以异步方式执行的单个操作。 Task 对象是在 .NET Framework 4 中首次引入的 基于任务的异步模式 的中心组件之一。 由于对象执行的工作 Task 通常在线程池线程上异步执行,而不是在主应用程序线程上同步执行,因此可以使用…

双网卡配置IP和路由总结

1.在网络适配器属性IPv4中设置默认网关(记网关地址为A),将会在本地路由表中新增一条记录: 网络号子网掩码网关地址0.0.0.00.0.0.0A 2.如果有两个网卡(假设一个连接内网,一个连接互联网)&#…

【C语言】冒泡排序(经典算法,干货满满!!!)

目录 前言1、原理2、冒泡排序的应用3、对冒泡排序的应用的优化4、冒泡排序适用于以下情况 前言 冒泡排序(Bubble Sort)是一种简单直观的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它…

扩散模型条件生成——Classifier Guidance和Classifier-free Guidance原理解析

1、前言 从讲扩散模型到现在。我们很少讲过条件生成(Stable DIffusion曾提到过一点),所以本篇内容。我们就来具体讲一下条件生成。这一部分的内容我就不给原论文了,因为那些论文并不只讲了条件生成,还有一些调参什么的…

【ARFoundation自学04】AR Tracked Image 图像追踪识别

图像识别是很常用的AR功能!AR foundation 可以帮助我们轻松实现! 1.安装插件 首先还是在资源包中导入ARfoundation 。然后搭建基本的AR ARFoundation框架! 2.创建AR session 和XR origin结构! 3.然后在XR Origin 物体身上添加A…

ubuntu22.04编译OpenCV4.9(带contrib-4.9.0)

操作系统:ubuntu22.04 OpenCV版本:4.9.0 opencv_contrib版本:4.9.0 源码下载 OPenCV4.9.0下载地址:https://github.com/opencv/opencv/releases/tag/4.9.0 如下图所示: 按箭头所指点击下载source code(tar.gz)文件到…

电机专用32位MCU PY32MD310,Arm® Cortex-M0+内核

PY32MD310是一颗专为电机控制设计的MCU,非常适合用做三相/单相 BLDC/PMSM 的主控芯片。芯片采用了高性能的 32 位 ARM Cortex-M0 内核,QFN32封装。内置最大 64 Kbytes flash 和 8 Kbytes SRAM 存储器,最高48 MHz工作频率,多达 16 …

Day51 动态规划part10+Day52 动态规划part11

LC121买卖股票的最佳时机(未掌握) 暴力:双层循环寻找最优间距,每一次都确定一个起点,遍历剩余节点当作终点 贪心:取最左最小值,不断遍历那么得到的差值最最大值就是最大利润。 动态规划 dp数组…

【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

0基础学习Elasticsearch-使用Java操作ES

文章目录 1 背景2 前言3 Java如何操作ES3.1 引入依赖3.2 依赖介绍3.3 隐藏依赖3.4 初始化客户端(获取ES连接)3.5 发送请求给ES 1 背景 上篇学习了0基础学习Elasticsearch-Quick start,随后本篇研究如何使用Java操作ES 2 前言 建议通篇阅读再回…

SpringBoot: 可执行jar的特殊逻辑

这一篇我们来看看Java代码怎么操作zip文件(jar文件),然后SpringBoot的特殊处理,文章分为2部分 Zip API解释,看看我们工具箱里有哪些工具能用SpringBoot的特殊处理,看看SpringBoot Jar和普通Jar的不同 1. Zip API解释 1. ZipFil…

NRF24L01(2.4G)模块的使用——SPI时序(软件)篇

一、SPI的简介: SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚…

R语言 | 使用最简单方法添加显著性ggpubr包

本期教程原文:使用最简单方法添加显著性ggsignif包 本期教程 获得本期教程代码和数据,在后台回复关键词:20240605 小杜的生信笔记,自2021年11月开始做的知识分享,主要内容是R语言绘图教程、转录组上游分析、转录组下游…