关于STM32单片机的IAP实现

基于STM32F103单片机的IAP实现(虽然该篇文章不会详细写出实现细节,但是会从一个全局的角度讲述,实际的实现细节只需根据datasheet即可完成)。

一、基础概念

什么是IAP?IAP即在应用中编程(In-Application Programming IAP),简单的说就像是一个用户自定义的升级程序。实际上,STM32单片机的程序烧写有多种方法,可以用JTAG,也可用串口通过ISP软件烧写新程序。

JTAG的方式需要专用的烧写工具,在产品布置到现场后,更新产品程序比较麻烦,而通过串口的ISP软件升级方法可以直接使用常见的串口线升级程序,十分方便,这种方法用的是ISP。ISP可以说是单片机默认的bootloader,

单片机系统启动后,先执行ISP的程序,然后跳转到用户程序执行,升级程序时,单片机会在ISP中一直运行。ISP虽然方便了升级,但是还是没法解决用户自定义和远程升级的问题。对于用户来说,有时候可能需要在单片机中

flash不同地址烧写多个应用程序,用于根据不同条件启动不同应用程序;有时候,产品分布到全国各地,去所有现场升级程序明显不理智,解决方法是将升级程序放到服务器上,发送远程升级指令,设备进入IAP升级程序,从远程

获取升级应用程序,实现在线升级。

二、IAP实现

1.硬件

STM32单片机的启动方式有三种,

单片机根据boot0和boot1的引脚来确定启动方式。主闪存存储器即为用户程序空间,IAP启动将会从这里开始,系统存储器是ISP启动,内置SRAM不讨论。正常情况下,boot0管脚接入低电平,单片机从应用程序开始执行;当使用ISP升级时,boot0为1,boot1为0,系统进入ISP程序,等待串口升级,升级完成后,需要断电,改变boot电平,重新启动,让单片机从应用程序执行。(所以ISP升级时,还需要关注有关boot脚的电平开关问题。)

IAP升级不需要改变任何管脚电平,因为它实际上就是一个应用程序,只是让单片机启动时先执行它,执行完后,跳转到真正的应用程序执行。

注意:单片机第一次烧写时,是需要通过JTAG或ISP烧写IAP的,如果打算用ISP,那最好留一个boot脚的硬件拨码开关用于首次ISP升级hex文件。

2.软件

弄清楚硬件之后,就知道什么样的硬件boot对应什么样的启动方式。加入IAP之后,系统启动时会先执行IAP程序用于判断是否达到升级条件和执行什么样的升级配置,相应的逻辑类似于下图:

用户可以根据自己的需求来设计IAP程序,详细设计可以参考ST官方资料:

《使用STM32F10xxx的USART 实现在应用中编程》,而且官方也给出了例程,资料比较全面,实现起来也很简单。

最后,提醒注意一点的是,在IAP后面的应用程序都要在系统启动时重新定义中断向量表。

时间: 2024-10-13 12:10:46

关于STM32单片机的IAP实现的相关文章

STM32单片机在Keil5下仿真的若干问题解决

STM32单片机在Keil5下仿真的若干问题解决 最近看了视频,里面有仿真,可以清楚看到GPIO口的数据变化,也想尝试下,DUG时却出现*** error 65: access violation at 0x40021000 : no 'read' permission,按照网上给的各种办法,包括修改memory map,以及其他各种办法,都无法解决,后来发现问题在下面这张图所示的位置: 这个图上红色框中的两个参数是我修改之后的,原来的值是软件安装之后的默认值: Dialog DLL默认是DCM

龙邱STM32单片机用J-LINK下载无法被识别的解决方法

问题如下: 按照正常步骤使用keil5给龙邱的stm32下载程序,SWD下载方式提示no cortex-m sw device found,JTAG方式提示no cortex-m device found in jtag chain 原因: 龙邱STM32单片机的JTAG接口排列方式不是标准的JTAG布线方式 解决方法: 按照JTAG或者SWD的接线方式自己接线 10脚的ITAG接口,第3.4脚(TRST对应stm32的PB4).第5脚(TDI对应stm32的PA15).第6脚(TDO\SWO对

STM32单片机学习(11) DS18B20温度传感器实验

STM32单片机学习(11) DS18B20温度传感器实验 本程序主要实现 DS18B20温度传感器数据获取,并利用串口通信把温度数据传至计算机 注:使用普中科技开发板测试时,需要拔掉Boot1插口,因为用到的是PA15管脚, 由开发板电路图可知,需要改变PA15 管脚的映射,将其设置成普通IO口 参考资料 DS18B20中文手册.pdf   http://download.csdn.net/detail/leytton/7742193 STM32-外设篇 视频教程(Cortex-M3)-主讲人

STM32单片机和51单片机区别

单片机 / AVR / PIC / STM32 / 8051803189C5189S51 6905 单片机简介 单片微型计算机简称单片机,简单来说就是集CPU(运算.控制).RAM(数据存储-内存).ROM(程序存储).输入输出设备(串口.并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU.RAM.ROM.I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已. 51单片机和STM32单

STM32单片机资料大全1.1G

STM32单片机资料大全1.1G包括有不限于以下资料:其实还有更多,大家凑合着看吧!资料下载地址下面都有写,需要的自己去瞧一瞧就知道了,stm32的全部资料在闯客网技术论坛都可以下载,只有你想不到,没有你找不到,请相信这个帖子所说的 STM32F107VCU3S羊册V6.pdfSTM32F系列ARM内核32位高性能徴控制器参考丰册V10_l.pdfSTM32F系列ARM内核32位高性能徴控制器参考丰册V14.pdfSTM32F系列ARM内核32位高性能徴控制器参考丰册V10_l.pdfKeil+

STM32单片机图片解码

图片解码首先是最简单的bmp图片解码,关于bmp的结构可自行查阅,代码如下 #ifndef __BMPDECODE_H_ #define __BMPDECODE_H_ #include "ff.h" #include "lcd.h" #include "stdlib.h" #include "usb_type.h" //重定义区 typedef char CHAR; //数据类型重定义,便于移植 typedef short S

STM32单片机程序下载方式汇总

一.串口下载: 1.MCUISP串口软件一键下载设置: DTR低电平复位,RTS高电平进入bootload串口下载 在ch340芯片对应DTR和RTS输出电平与电脑软件设置的电平相反.一键下载电路根据ch340芯片对应引脚的控制信号完成对应功能具体实现过程如下: 2.单片机启动设置单片机低电平复位 Boot0=0,boot1=x,从用户区flash启动Boot0=1,boot1=0,进入串口下载区Boot0=1,boot1=1,从SRAM启动改变boot0电平就可以从不同区域启动 3.一键下载电

STM32单片机硬件关键基础精华及注意事项

一.背景 如果你正为项目的处理器而进行艰难的选择:一方面抱怨16位单片机有限的指令和性能,另一方面又抱怨32位处理器的高成本和高功耗. 那么,基于 ARM Cortex-M3内核的STM32系列处理器也许能帮你解决这个问题.使你不必在性能.成本.功耗等因素之间做出取舍和折衷. 即使你还没有看完STM32的产品手册,但对于这样一款融合ARM和ST技术的"新生儿"相信你和我一样不会担心这款针对16位MCU应用领域的32位处理器的性能. 但是从工程的角度来讲,除了芯片本身的性能和成本之外,你

STM32单片机IO中断实现步骤

STM32推出了全新的HAL驱动源码,本文给出GPIO中断代码实现的步骤: 步骤1)类似下方初始化用GPIO_InitStruct结构体初始化需要的GPIO,注意Mode参数和NVIC的中断使能: GPIO_InitTypeDef GPIO_InitStruct; /* Configure GPIO pins : PB6 */ __GPIOB_CLK_ENABLE(); GPIO_InitStruct.Pin =  GPIO_PIN_6;// GPIO_InitStruct.Mode = GPI