STM32的ISP下载的原理是什么呢?

简介: STM32的ISP下载的原理是什么呢?

上一篇笔记分享了:STM32串口IAP分享。其中,下载IAP程序是用ISP的方式进行下载。这里的ISP又是什么呢?

ISP方式下载程序原理

ISP:In System Programing,在系统中编程


在STM32F10xxx里有三种启动方式:

640.png

以ISP方式下载程序时需要把STM32的BOOT0引脚置1、BOOT1引脚置0,即从系统存储区(System Memory)启动。


为什么设置从System Memory启动就可以使用串口来下载我们的程序呢?那是因为在芯片出厂前ST官方已经把一段自举程序(BootLoader程序)固化到这一块存储区。


对于STM32F103ZET6来说,System Memory的起始地址为0x1FFFF000,可在芯片手册的内存映射图里找到:

640.png

其通过串口来接收数据并烧写到用户闪存存储器的起始地址(0x08000000)。只能烧写到这个地址,若keil里设置的地址不是这个地址,则编译出来的文件将烧录不成功。


用户闪存,即User Flash,同时也称为Main Flash。


这一段BootLoader程序源码是没有开源出来的,用户是不可修改的。我们在上一篇笔记的IAP实验中,IAP程序通过FlyMCU软件进行烧录,烧录的地址就是0x08000000


注意:不同系列不同型号的STM32固化的BootLoader是不同的,即使用的通讯接口是不同的。如STM32F1xxx系列只支持USART1:

640.jpg

STM32F4xxx系列只支持USART1、USART3、CAN2等接口:

640.jpg

其他型号的BootLoader支持的接口可查看AN2606文档,链接:

https://www.st.com/content/ccc/resource/technical/document/application_note/b9/9b/16/3a/12/1e/40/0c/CD00167594.pdf/files/CD00167594.pdf/jcr:content/translations/en.CD00167594.pdf

这里,关于数据协议的内容不展开讨论,有兴趣的朋友可自行研究。

IAP与ISP有什么不同?

从基本功能来看,IAP程序与ISP程序所做的事情好像是一样的,都是引导加载程序,所以网上有很多文章把IAP程序与ISP程序都称为BootLoader程序,要注意区分。


但是,ISP与IAP还是有点区别的。


STM32内部Flash分为两部分,System FlashUser Flash。上电之后执行哪个Flash里的程序有boot脚来控制。


System Flash内存放的是ST官方编写的自举程序(ISP程序),我们是没有办法改变的。


User Flash是我们可以使用的Flash空间,我们编写的代码就是要烧录到User Flash中。


我们可以把User Flash分为两部分,前面一部分空间用于烧写我们编写的IAP程序,后面一部分用于烧写我们编写的应用程序。其中,IAP程序用于更新我们的应用程序。


ISP程序用于把我们编写的程序更新到0x08000000地址上,如果我们的产品中的程序有IAP程序+应用程序,则此时0x08000000地址存放的程序就是IAP程序。ISP程序、IAP程序、应用程序的关系示意图如下:

640.png

如果我们的产品中的程序只有应用程序,则此时0x08000000地址存放的程序就是应用程序。ISP程序、应用程序的关系示意图如下:

640.png

End:以上就是本次的笔记分享,如有错误,欢迎之处!如果这篇笔记对你有帮助的话,欢迎收藏、转发、在看~


猜你喜欢:

《STM32串口IAP分享


C语言代码优化的一些技巧(四)


【RT-Thread】线程的基本知识


替代串口打印,嵌入式中另一种打印调试的方法


我的个人博客:

https://zhengnianli.github.io

目录
相关文章
|
16天前
|
存储 监控 数据处理
【STM32】详细讲述 USART_IRQHandler() 的工作流程和原理
- UART5_IRQHandler的主要任务是响应各种UART中断事件并执行相应的处理。 - 典型的处理中断步骤包括检查中断类型、读取或写入数据寄存器、处理数据或错误、清除中断标志等。 - 实际的中断处理逻辑会根据具体应用的需求进行调整。
47 1
|
5月前
|
传感器
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
498 0
|
5月前
stm32f407探索者开发板(十六)——串行通信原理讲解-UART
stm32f407探索者开发板(十六)——串行通信原理讲解-UART
315 0
|
7月前
|
传感器
STM32循迹小车原理介绍和代码示例
STM32循迹小车原理介绍和代码示例
|
7月前
STM32控制SG90舵机原理及代码
STM32控制SG90舵机原理及代码
225 1
|
7月前
|
传感器
STM32F103的I2C工作原理
STM32F103的I2C工作原理
189 0
|
7月前
|
芯片
STM32 GPIO工作原理详解
STM32 GPIO工作原理详解
116 0
|
芯片 数据格式
No.7 STM32F429IGT6 USART串口通讯原理总结 (STM32F429/F767/H743)
No.7 STM32F429IGT6 USART串口通讯原理总结 (STM32F429/F767/H743)