点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看编程笔记!

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

ISP方式下载程序原理

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

在STM32F10xxx里有三种启动方式:

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

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

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

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

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

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

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

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

其他型号的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程序、应用程序的关系示意图如下:

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

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

猜你喜欢:

《STM32串口IAP分享

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

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

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

我的个人博客:

https://zhengnianli.github.io

stm32数据手册boot_STM32的ISP下载的原理是什么呢?相关推荐

  1. stm32数据手册boot_STM32问题集之BOOT0和BOOT1的作用

    一.功能及目的 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序. BOOT1=x BOOT0=0 // 从用户闪存启 ...

  2. stm32 串口下载(ISP下载)

    这里写自定义目录标题 ISP下载 原理 下载步骤 程序运行 PCB 总结 注意 ISP下载 一直使用jlink进行下载,突然使用串口进行下载,折腾了好久都没弄出来. 干脆开一篇文章,方便以后再用到. ...

  3. STM32开发板串口 ISP 方式下载程序

    STM32开发板无下载电路也可以下载程序方法 自己设计的stm32开发板,手上无下载器,也没有板载的一键下载电路的情况下解决下载程序方法? 必须具备的条件:USB-TTL模块一个,板上预留有boot0 ...

  4. 51单片机usb烧录电路_STC51单片机自动ISP下载电路设计 - ch340g单片机下载程序电路原理...

    STC51单片机自动ISP下载电路设计 1.51单片机程序下载原理 51单片机程序烧写接口为RXD和TXD,即UART口,这两个接口是通信口,配合不同的芯片可以实现不同的通讯方式.如果连接MAX232 ...

  5. FlyMcu串口ISP下载STM32程序教程

    开始写之前也是不能用的,但是为了使用,决定边探索怎么使用边写一篇博客! 最开始用过正点原子的开发板进行ISP下载,感觉挺好用,按照说明就好. 但是正点原子的板子用的是如下的一块电路: 这个电路很简单使 ...

  6. STM32程序下载——ISP下载

    ISP (Iin-System Programming)在系统可编程,ISP是一种通用的程序下载方式. 串口下载方式即ISP方式.在PC端可以通过专用软件,比如FlyMCU.MCUISP等,通过串口将 ...

  7. stc单片机自动下载程序原理和代码实现

    1/stc单片机下载程序的原理 首先我们要理解stc单片机下载程序的原理.在stc单片机中有两个程序区:用户程序区和ISP监控程序区. 这是stc89c52单片机数据手册中的内容. 根据数据手册,我们 ...

  8. 使用单片机对STC8G,8H,8A进行ISP下载程序

    通过第三方程序实现对STC单片机的程序下载,可以方便进行现场的调试和更新.特别是对于设计远程程序更新.无线程序下载与调试等功能有帮助. 本文给出了下载相关的一些程序设计. STC单片机ISP下载协议 ...

  9. 用Qt编写STM32烧录软件(ISP模式)

    stm32有个自举模式,可以用来烧录程序. 我买的板子上有可以串口烧录功能,其中电路原理图如下(注意,这个图是错误的,因为正确的是三极管Q1.Q2分别一个为PNP一个为NPN,正确的图在这里): bo ...

最新文章

  1. 在OpenCV中利用卷积进行图像滤波
  2. 内核线程、轻量级进程、用户线程
  3. 《Performance Overhead of Atomic Crosschain Transactions》
  4. 80后的网上创业生涯:想得到做得到
  5. linux tar压缩排除某个文件夹或者文件
  6. 修改 MySQL 自增ID的起始值
  7. 微课|中学生可以这样学Python(2.3.3节):filter()函数
  8. Spring实现多数据源配置
  9. HDU 5586 Sum
  10. java debug try catch 打印发生错误的代码的详细信息 代码行数
  11. wkt文件java解析_WKT文件解析 以及各个投影坐标的wkt参数查询 | 学步园
  12. Python 实现的、带GUI界面的词云生成器
  13. MySQL视图(view)基本用法
  14. Oracle常用文档整理
  15. 关于uipath软件安装激活手顺书——在线激活
  16. python 因子分析_因子分析在python上的实现
  17. java计算机毕业设计高校体育场馆管理源码+mysql数据库+系统+lw文档+部署
  18. POJ-2325解题报告
  19. 流媒体协议HLS解析
  20. c++ vector的应用举例

热门文章

  1. HDU - 1223 DP 分类
  2. MyBatis源码分析-IDEA新建MyBatis源码工程
  3. 第8章 线性时间排序
  4. Java 8系列之重新认识HashMap(转载自美团点评技术团队)
  5. go/git设置及取消代理方法
  6. Python用起来极度舒适的强大背后
  7. 如何知道 CPU 是否支持虚拟化技术(VT)
  8. Python学习:16.Python面对对象(三、反射,构造方法,静态字段,静态方法)
  9. ios整理(一)控件
  10. html from嵌套from