打印
[应用相关]

STM32 IAP应用编程几个要点

[复制链接]
1243|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1.ISP
ISP:In System Programing,在系统编程。
比如:使用STC-ISP对STC芯片编程,利用Flash loader对STM32编程等。
支持ISP的芯片一般在芯片内部固化了一段(用ISP升级的)boot程序。

使用特权

评论回复
沙发
烟雨蒙蒙520|  楼主 | 2021-1-31 23:38 | 只看该作者
2.ICP

In Circuit Programing,在电路编程。

ICSP:In-Circuit Serial Programming,在电路串行编程。如:对EEPROM编程等。

使用特权

评论回复
板凳
烟雨蒙蒙520|  楼主 | 2021-1-31 23:40 | 只看该作者
ICP编程方式网上各有说法,从字面含义(在电路)来说,所有处于编程的芯片都需要上电,都处于电路中。不严格来说利用J-Link、ST-Link、e-Link32等工具进行编程也属于在电路编程(ICP)。

使用特权

评论回复
地板
烟雨蒙蒙520|  楼主 | 2021-1-31 23:41 | 只看该作者
在维基百科中,在系统编程(ISP),也称为在电路串行编程(ICSP)。

使用特权

评论回复
5
烟雨蒙蒙520|  楼主 | 2021-1-31 23:42 | 只看该作者
3.IAP

In applicating Programing,在应用编程。

这里是本文说的重点,可以简单理解为:在程序运行的过程中进行编程(升级程序,更新固件)。

使用特权

评论回复
6
烟雨蒙蒙520|  楼主 | 2021-1-31 23:42 | 只看该作者
IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。

使用特权

评论回复
7
烟雨蒙蒙520|  楼主 | 2021-1-31 23:43 | 只看该作者
IAP通信口

IAP的通信口有许多种:UART串口、ETH以太网、I2C、SPI......等。按理说只要能传输数据的通信口都能实现IAP的功能。



本文结合STM32官网提供的例程,利用UART在应用编程(IAP)。

使用特权

评论回复
8
烟雨蒙蒙520|  楼主 | 2021-1-31 23:43 | 只看该作者
2ST官网IAP例程
ST官网提供的IAP例程有很多很多,比如:

库:有使用标准外设库(SPL)的、有使用硬件抽象层库(HAL)的;

通信口:有使用USART的,有使用I2C的,有使用ETH的等。

MCU型号:STM8S、STM32F1、F4、L1等几乎全系列都有。

使用特权

评论回复
9
烟雨蒙蒙520|  楼主 | 2021-1-31 23:44 | 只看该作者
ST官网提供的各种IAP,其方法和原理其实都类似:就是将程序文件(二进制文件)写入FLASH。

本文以最简单的基于(STM32F10x)利用SPL库+UART的IAP为例来给大家讲述一下。(复杂都是从基础开始,后续逐步为大家更新更高级的IAP功能)

使用特权

评论回复
10
烟雨蒙蒙520|  楼主 | 2021-1-31 23:44 | 只看该作者
STM32F10xxx in-application programming using the USART官方地址:

https://www.stmicroelectronics.com.cn/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-library-expansion/stsw-stm32008.html

使用特权

评论回复
11
烟雨蒙蒙520|  楼主 | 2021-1-31 23:45 | 只看该作者
相关参考文档和代码例程都在这个网址下载,下一章节针对这里该IAP讲述几点重要内容。

使用特权

评论回复
12
烟雨蒙蒙520|  楼主 | 2021-1-31 23:46 | 只看该作者
我下载后上传至百度网盘地址:

https://pan.baidu.com/s/1umdwlShsJpL8rLdeb9n6Cw

密码:2t3j

(提示:该链接后期可能会失效,建议到官网下载)

使用特权

评论回复
13
烟雨蒙蒙520|  楼主 | 2021-1-31 23:47 | 只看该作者
3IAP例程几个要点
1.例程概要说明

该代码工程基于STM32F1,使用UART通信口,利用超级终端(上位机)、通过YModem协议实现代码程序的数据传输和写入Flash。

使用特权

评论回复
14
烟雨蒙蒙520|  楼主 | 2021-1-31 23:47 | 只看该作者
2.IAP软件工程

我们解压(上面)下载好的软件工程包,进入目录,通过MDK-ARM(为例),如下图;

本文以MDK-ARM为例,你也可以通过EWARM、TrueSTUDIO等工具打开。

使用特权

评论回复
15
烟雨蒙蒙520|  楼主 | 2021-1-31 23:48 | 只看该作者
因该工程代码是之前用MDK-ARM V4版本建立的,现在用V5版本打开会提示如下信息:



只需要点击“Migrate to Device Pack”即可,V5版本使用了“设备支持包”,这里大概意思就是使用设备支持包兼容以前老版本工程。

使用特权

评论回复
16
烟雨蒙蒙520|  楼主 | 2021-1-31 23:48 | 只看该作者
选择对应的目标(我们以F103ZE为例,选择大容量、小容量在于他们的FLASH页大小不一样),选择10E-EVAL。



直接编译,没有错误警告,此时,如果有对应的板卡,可直接下载。



提示:

1.前提:MDK下载、安装

2.什么是目标? 简述工作空间、工程、目标

使用特权

评论回复
17
烟雨蒙蒙520|  楼主 | 2021-1-31 23:50 | 只看该作者
3.说明

这个程序只是IAP程序,放在以0x0800 0000为起始的地址。而IAP程序的作用是将应用程序(二进制文件)下载到应用程序对应的地址。

使用特权

评论回复
18
烟雨蒙蒙520|  楼主 | 2021-1-31 23:50 | 只看该作者
因此,我们会将FLASH划分我两个区域:IAP程序区域,APP程序区域。

使用特权

评论回复
19
烟雨蒙蒙520|  楼主 | 2021-1-31 23:51 | 只看该作者
这里IAP程序有两个作用:1.对APP程序编程; 2.引导程序跳转至应用程序。所以,这段APP程序也叫BootLoader。

使用特权

评论回复
20
烟雨蒙蒙520|  楼主 | 2021-1-31 23:52 | 只看该作者
为防止IAP程序不被(第一部分代码)不被意外破坏,一般建议对IAP程序进行“写保护”。



这个APP地址0x0800 3000是怎样来的呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

641

帖子

0

粉丝