STM32 OTA Bootloader部分 demo流程学习

文章介绍了OTA(空中升级)的概念及其在嵌入式系统中的作用,特别是通过BootLoader实现MCU的固件更新。文中详细讨论了BootLoader的功能,包括初始化硬件、加载应用程序以及OTA升级流程。同时,文章提到了四种不同的内存分区方式,分析了各自的优缺点,并以STM32F103为例,展示了如何为128K内存的设备编写BootLoader,包括内存分区和固件搬运过程。最后,文章提供了BootLoader源码的解析,解释了启动、升级和状态管理的流程。

学习依据的源文链接:STM32 OTA应用开发——自制BootLoader

前言

什么是OTA?

OTA是“Over-the-Air”(空中升级)的缩写,指的是通过无线通信网络(如Wi-Fi、蓝牙、LoRa等)对嵌入式系统进行远程升级或更新。

在嵌入式系统中,OTA技术可以用于更新固件、软件或配置文件等。通过OTA技术,用户可以在不需要物理接触设备的情况下,对其进行升级和更新,从而提高系统的可靠性、安全性和灵活性。

----------我的理解:

所谓的OTA其实就是通过一些无线通信协议的方式,向嵌入式系统发送应用程序(以下简称APP)和升级指令,再由单片机设备上的BootLoader完成:接收新APP---擦除旧APP---写入新APP---跳转到新APP执行 的过程;

这个demo的实际上是通过USB的连接实现上述的APP升级过程,虽然有线连接不能严格称做OTA,但是二者的差异实际上只是不同(有线与无线)的通信传输过程,主要是学习程序升级的流程,故下文也将USB升级过程视为OTA升级;

什么是BootLoader?

BootLoader是一段程序,通常位于嵌入式系统的非易失性存储器(如Flash)中,用于在系统启动时加载和运行操作系统或其他应用程序。

在嵌入式系统中,BootLoader通常是一个小型的程序,主要负责以下几个方面的工作:

  1. 初始化硬件环境:BootLoader需要初始化硬件环境,包括CPU、存储器、外设、时钟等,以便系统能够正常运行。
  2. 加载操作系统或应用程序:BootLoader需要从存储器中加载操作系统或应用程序,并将控制权转交给操作系统或应用程序。
  3. 检查和修复系统错误:BootLoader需要检查系统的状态和完整性,以确保系统能够正常运行。如果发现系统错误,BootLoader需要尝试修复或恢复系统。
  4. 提供调试和测试功能:BootLoader可以提供调试和测试功能,例如单步执行、断点调试、查看寄存器状态等,以方便开发人员进行调试和测试。

而这个demo是通过自制bootloader,实现加载应用程序和OTA的功能;

BootLoader的OTA功能工作原理

MCU要实现OTA离不开Bootloader,它是一段引导程序,在OTA过程中,MCU启动时会先运行BootLoader,Bootloader会去判断是否需要升级,如果不需要升级就跳转到APP分区运行用户代码,如果需要升级则先通过一些硬件接口接收和搬运要升级的新固件,然后再跳转到APP分区运行新固件,从而实现OTA升级。

 

BootLoader的OTA功能常见分区介绍

在没有加入Bootloader之前,MCU内部的flash可以看作一整块分区,我们运行的整个裸机程序都在其中:

第一种分区方式——加入BootLoader,那么原本的Flash分区就可以划分为两个区域,Bootloader和Application,这种分区方式的好处在于既可以OTA升级,App又可以分到较大的空间,缺点是没有存放新固件的区域,需要从外部导入进来,而且一旦传输的过程被异常打断,那么原有的App代码也无法正常运行了:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值