为什么我们需要在微控制器中安装引导程序?

1.在没有JTAG/SWD探针的情况下编程

微控制器中需要引导加载程序有几个原因,包括主要原因:在不需要JTAG/SWD探针的情况下编程/更新用户应用程序,并具有应用程序所需的所需安全级别。在这篇文章中,我们概述了为什么需要它,以及如何利用所有STM32微控制器中提供的内置系统内存引导加载程序,或者根据我们广泛的产品创建一个自定义的引导加载程序。这段相对较小的代码允许程序员初始化处理器和外围设备,对应用程序进行编程、验证并直接加载到闪存中,当然,还可以执行固件升级。
 

2.STMicroelectronics引导加载程序报价

ST在引导加载程序方面有两个主要功能,一个是ST的本地引导加载程序,称为系统引导加载程序;另一个是我们称之为应用程序内编程(IAP)。这两种方法都允许用户对闪存和Option Bytes进行编程,主要区别在于系统引导加载程序位于用户闪存之外,位于专用ROM区域中,因此,根据使用的接口,遵循具有指定协议的预定义激活模式。另一方面,IAP更灵活,但会消耗用户的闪存。
让我们深入了解该主题,看看在哪里可以找到系统引导加载程序的相关文档,以及如何从可用的包中开发IAP。
 

3.STM32系统引导程序文档

当使用STM32系统引导加载程序时,了解激活模式、使用的引脚和可用接口的基本文档是AN2606,它是一份通用指南,涵盖了所有STM32系列支持的协议、外围设备、硬件要求和可能的配置。鉴于系统引导加载程序可以支持多种通信接口,如:UART、SPI、I2C、USB DFU、can和FDCAN,具体取决于STM32设备,我们建议您首先使用AN2606了解所选MCU的可用性,然后查看与接口相关的相应应用说明,在这里您可以找到所有这些接口:
–AN2606:STM32微控制器系统内存引导模式
–AN3155:USART协议
–AN4286:SPI协议
–AN4221:I2C协议
–AN3156:USB DFU协议
–AN3154:CAN协议
–AN5405:FDCAN协议
测试系统引导加载程序的一种简单方法是利用可用的生态系统,包括STM32CubeProg和STLINKV3-SET,这两者结合在一起可以进行无缝测试,因为STLINKV3-S ET具有验证上述接口所需的所有硬件,而STM32CuboProg是一款带有易于使用的GUI和CLI的软件,两者都支持本机引导。
现在我们已经了解了本机引导的基础,让我们进一步了解与IAP相关的可用内容。我们不能忘记,大多数应用程序的一个重要功能是其安全性和安全引导过程。幸运的是,ST拥有“安全引导和安全固件更新”(SBSFU),可以简化创建解决方案的过程。您可以在我们的wiki页面和我们的专用页面中找到有关此过程的更多信息,其中列出了我们针对该主题的所有可用培训和内容。
关于自定义引导加载程序的基本知识,我们提供了一个名为“如何创建超简单引导加载程序”的视频系列,其中探讨了基础,如链接器脚本操作、从一个代码跳到另一个代码以及向中断向量添加偏移量。还有一个专门的部分,旨在展示一种简单的方法,您的代码可以在应用程序和自定义引导之间共享API,从而减少总体闪存使用量。本视频系列不会深入探讨实际的闪存编程或如何使用给定的协议,这些应用说明和固件包涵盖了这一点:
–X-CUBE-IA-SD:STM32Cube(AN4854)的SD卡软件扩展应用程序编程
–X-CUBE-IA-USART:STM32Cube在应用程序编程中使用USART嵌入式软件(AN4657)
总之,引导加载程序在现实生活中的应用程序中是一项巨大的资产,因为它可以简单地对闪存进行编程,而不必依赖于编程探针,也可以允许您的产品确保安装了有效的代码,这是一种更新甚至回滚到以前的稳定版本的方法,并在需要时建立信任根。
希望你喜欢这篇文章!