当前位置:首页 > 嵌入式 > 嵌入式云IOT技术圈
[导读]点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看编程笔记! 上一篇笔记分享了:STM32串口IAP分享。其中,下载IAP程序是用ISP的方式进行下载。这里的ISP又是什么呢? ISP方式下载程序原理 ISP:In System Programing,在系统中编程 在STM32F10xxx里

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


上一篇笔记分享了: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 Flash和User 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

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在嵌入式系统工程领域,主要挑战在于在严格的时间约束下实现任务的确定性执行。微控制器通常需要同时执行复杂的数学运算,并管理高频的输入和输出。如果采用简单的定时方法,例如使用阻塞式的忙等待循环,常常会导致处理器饥饿问题,即一...

关键字: 信号发生器 嵌入式系统 STM32

本实验活动重点在于利用微控制器的模数转换器(ADC)外设来监测外部电压源。具体而言,该系统设计用于测量CR1220纽扣电池和5V USB总线供电电源的电压。对这些电平进行监测对于依赖电池作为备用电源的嵌入式系统非常有用,...

关键字: 电压分压器 噪声滤波器 STM32

本项目展示了我们在固件编程方面的初步工作。我们开发该项目,旨在通过实践操作更好地理解课程中的概念和应用。我们的项目名为“电子音调发生器”,通过一个小扬声器产生不同的声音。按下不同的按钮或组合按键,系统会生成不同频率,从而...

关键字: 扬声器 音频合成器 示波器 STM32

嵌入式系统,STM32内部Flash的擦写寿命始终是悬在开发者头顶的达摩克利斯之剑。STM32F103系列Flash典型擦写次数仅为10000次,若每次温度调整、参数变更都直接写入,按每日操作数十次计算,不足一年便逼近寿...

关键字: STM32 Flash

电池供电的物联网设备中,降低待机功耗是延长续航的核心课题。STM32的Stop模式提供了保留SRAM和寄存器内容的最低功耗状态,是实现“微安级待机、毫秒级唤醒”的关键技术。实测数据表明,STM32L4系列在Stop 2模...

关键字: STM32 低功耗

一切始于一个我不断在身边发现的常见问题——无论是亲密的朋友,还是我在健身训练的健身房圈子中。经过数周高强度的锻炼后,很多人都在问同一个问题:“我想要增肌的肌肉为什么没有增长,而那些我本意没想练的肌肉却反而变得酸痛?”

关键字: 可穿戴设备 机器学习 STM32

在STM32嵌入式控制中,PID控制器是温度、电机转速、平衡小车等闭环系统的核心算法。本文提供一份可直接移植的增量式PID代码模板,并分享工程中行之有效的参数整定方法。

关键字: STM32 PID控制器

在STM32软件开发中,ST官方提供两套固件库:HAL(Hardware Abstraction Layer)与LL(Low-Layer)。很多工程师困惑:两者除了API风格不同,运行效率和资源消耗究竟差多少?本文基于S...

关键字: STM32 HAL库 LL库

本项目是一个专为RT-Thread RT-Spark开发板设计的硬件与软件定制接口。它创建了一个交互式系统,通过物理输入(按钮)产生数字输出(LCD文本和LED信号)。通过连接外部面包板组件与开发板内置功能之间的桥梁,我...

关键字: LCD LED STM32

在STM32嵌入式开发中,精确延时是非常基础但又极其关键的功能。无论是驱动单总线传感器(比如DS18B20)、控制LCD屏幕时序、还是生成精确的脉冲信号,都需要用到微秒级甚至纳秒级精度的延时。很多新手刚开始使用STM32...

关键字: STM32 嵌入式
关闭