历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2021年01月29日 | STM32 IAP应用编程几个要点

2021-01-29 来源:eefocus

1关于ISP、ICP、IAP

1.ISP

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

比如:使用STC-ISP对STC芯片编程,利用Flash loader对STM32编程等。

支持ISP的芯片一般在芯片内部固化了一段(用ISP升级的)boot程序。


2.ICP

In Circuit Programing,在电路编程。

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


ICP编程方式网上各有说法,从字面含义(在电路)来说,所有处于编程的芯片都需要上电,都处于电路中。不严格来说利用J-Link、ST-Link、e-Link32等工具进行编程也属于在电路编程(ICP)。


在维基百科中,在系统编程(ISP),也称为在电路串行编程(ICSP)。


3.IAP

In applicating Programing,在应用编程。

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


IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。[来自百度百科]


IAP通信口

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


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


2ST官网IAP例程

ST官网提供的IAP例程有很多很多,比如:

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

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

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


ST官网提供的各种IAP,其方法和原理其实都类似:就是将程序文件(二进制文件)写入FLASH。

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


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

(提示:公众号不支持外部链接,请复制链接到浏览器下载)

图片


相关参考文档和代码例程都在这个网址下载,下一章节针对这里该IAP讲述几点重要内容。


我下载后上传至百度网盘地址:

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

密码:2t3j

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


3IAP例程几个要点

1.例程概要说明

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


2.IAP软件工程

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

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


因该工程代码是之前用MDK-ARM V4版本建立的,现在用V5版本打开会提示如下信息:


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


选择对应的目标(我们以F103ZE为例,选择大容量、小容量在于他们的FLASH页大小不一样),选择10E-EVAL,如下图:


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


提示:

1.前提:MDK下载、安装

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


3.说明

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


因此,我们会将FLASH划分我两个区域:IAP程序区域,APP程序区域。

图片


这里IAP程序有两个作用:1.对APP程序编程; 2.引导程序跳转至应用程序。所以,这段APP程序也叫BootLoader。


为防止IAP程序不被(第一部分代码)不被意外破坏,一般建议对IAP程序进行“写保护”。


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

见IAP程序代码:

图片


所以,我们APP应用程序的其起始地址就必须对应为0x0800 3000 才行。不然,跳转之后没有应用程序,则会出错。


提示:

它这里是通过按键方式选择执行IAP,还是执行APP;一般建议通过倒计时(比如5s):5s之内通过串口选择下载,否则自动跳转到APP程序执行。这里就需要自己根据情况修改代码。


Demo里程可以通过选择3跳转到APP程序,初学者可以直接不使用按键判断,进行测试,如下图,修改一下:


4APP代码和地址问题

上一章节是讲述的IAP程序,本节讲APP程序修改地址的问题。

1.添加代码

在代码开始设置向量表偏移:

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000);


0x3000代表偏移量


2.修改配置

project -> Options 


3.生成Bin

具体可以参看我另外一篇文章:

MDK-ARM如何生产Bin文件


4.APP程序代码

为方便大家学习,我提供在按照上面修改过的APP代码工程给大家下载,地址和上面一样:

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

密码:2t3j


5超级终端安装,程序下载

1.超级终端下载、安装

官方提供的文档是HyperTerminal超级终端下载程序,这个可以百度谷歌搜索下载安装。我这后面一直使用SecureCRT这款终端,这终端属于商业软件,但在网上可以找到很多po解的办法。


为方便大家调试,我这里提供下载链接

https://pan.baidu.com/s/13yjA9q0Eltfer4oLPbGceQ

密码:5r5m

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


2.程序下载

硬件连接好,将生成的程序文件(Demo.bin)指定位置(为方便测试下载,我拷贝到桌面)-> 打开终端 -> 键盘按1 ->选择文件 ->下载完成 -> 键盘按3 执行程序。


图片


以上所有内容就是关于IAP的基础知识和例程说明,更多的IAP在线升级功能讲解敬请等待。


推荐阅读

史海拾趣

Cedrat Technologies公司的发展小趣事

在电子行业中,振动控制是一个至关重要的领域。Cedrat Technologies凭借其在压电技术领域的深厚积累,成功开发了一套主动振动控制系统。该系统通过精确监测机械结构或设备的振动情况,利用压电执行器产生相位相反的振动信号,有效抵消原始振动。这一技术的问世,不仅大幅提升了设备的稳定性和精度,也为机械结构的振动控制开辟了新的途径。Cedrat Technologies因此在电子行业中树立了新的技术标杆。

Cantec Electronic Co Ltd公司的发展小趣事

在追求经济效益的同时,Cantec Electronic Co Ltd也积极履行社会责任,坚持绿色发展理念。公司投入大量资金进行环保设施的建设和改造,确保生产过程中的废弃物得到有效处理。同时,公司还积极研发环保型电子产品,推动整个行业的绿色转型。这一举措不仅提升了公司的社会形象,也为公司的可持续发展提供了有力保障。

AMI Semiconductor公司的发展小趣事

在追求经济效益的同时,Cantec Electronic Co Ltd也积极履行社会责任,坚持绿色发展理念。公司投入大量资金进行环保设施的建设和改造,确保生产过程中的废弃物得到有效处理。同时,公司还积极研发环保型电子产品,推动整个行业的绿色转型。这一举措不仅提升了公司的社会形象,也为公司的可持续发展提供了有力保障。

Freqtech Ohg公司的发展小趣事

面对电子行业快速迭代的市场环境,Freqtech Ohg公司敏锐地察觉到传统业务面临的挑战。公司果断决定进行业务转型升级,从单一的高频电子元件生产向系统解决方案提供商转变。通过整合上下游产业链资源,Freqtech成功开发出了一系列针对特定应用场景的高频电子系统解决方案,如5G通信基站、卫星导航系统等。这一转型不仅为公司带来了新的增长点,还进一步巩固了其在行业内的领先地位。

Heatron LED Integration公司的发展小趣事

Heatron LED Integration深知品质对于产品的重要性,因此从原材料采购到生产制造,每一环节都严格把关。公司建立了完善的质量管理体系,确保每一款LED产品都能达到国际最高标准。同时,公司还注重产品的性能优化,通过不断的研发和技术升级,提升产品的发光效率和使用寿命。这种对品质和性能的双重追求,使得Heatron LED Integration的产品在市场上享有极高的声誉。

优先(苏州)半导体公司的发展小趣事

东微半导是一家在苏州扎根14余年的半导体公司,致力于自主研发和生产功率半导体核心器件。在充电桩产业快速发展的背景下,东微半导率先量产国内首款自主研发充电桩用功率半导体核心器件,打破了国外厂商的垄断地位。公司经过多年的自主研发,获得了创新结构的高压超级结技术的专利,使MOSFET场效晶体管的电能转换效率提升,具有动态损耗小、发热量低的优点。经客户端实测,整体性能达到了国际一流水平,现已出口至韩国、日本和德国等国际市场。

问答坊 | AI 解惑

登录时,“登录有效期”是什么意思?

“登录有效期”是什么意思? 在登录界面,能够看到“登录有效期”选项,如下图所示,这代表下次您在同一台电脑登录时用户名所保留的时间。 (如:此次登录我选有效期一个月,也就是说,在此次登录之后的一个月时间内,我再用同一台电脑登eeworld ...…

查看全部问答>

基于OpenCV的人脸检测

机器视觉在现在的工业检测中越来越重视,在各个工业领域都有广泛的生存空间,但在国内能见到的资料太少了。早在1999年Intel公司就开始致力于这方面的标准建立,于是有了OpenCV,他提供了各种复杂的图形图像算法库,从而减轻了开发者的负担。附件中 ...…

查看全部问答>

在+12V输入后面接1个二极管再到LM7805这样做其目的是什么?

本信息来自合作QQ群:电子工程师技术交流(12425841) 群主在坛子ID:Kata 请大家帮忙…

查看全部问答>

程序交换机-串口通信

我在做一个程控交换机的计费软件和能控制程控交换机的软件,是用串口通信的,牌子是国威的ws82(10),,请问通信的协议的什么,,格式是什么。。。。 有没有人知道啊…

查看全部问答>

TASKING C166 V8.5正版软件分享

正版软件实在太贵,个人买恐怕负担不起的, KEIL C166 V6正版42000元 TASKING C166 V8.5我们公司几个人用花了10000多元 现在我把公司买的正版TASKING C166 V8.5与大家分享一下. 如果谁有KEIL C166 V6的我希望也和大家分享一下, 共同使用,共同学 ...…

查看全部问答>

[现在DM9000a的34引脚‘INT’一直为低,即是没有中断信号]

x86架构下,vxworks系统,现在DM9000a的34引脚‘INT’一直为低,即是没有中断信号。 我现在应该如何操作呢?…

查看全部问答>

求助,wince5.0 下使用FTDI2232D 网卡驱动问题!

我的环境是基于X86的winCE 5.0平台,使用的FTDI 公司的FTD2232D USB 转串口 芯片,他的网站提供CE下的驱动程序,这款芯片有两种通讯配置方式:虚拟串口和D2XX,在我的CE系统中,VCP(虚拟串口的)配置使用时没有问题的,可D2XX(直接通讯方式),每 ...…

查看全部问答>

我想开发一个电机控制器,用什么仿真软件比较好点,能支持cortex m0

以前用的protues什么的都不支持LPC1114,请问各位大侠什么软件支持cortex m0?…

查看全部问答>

请问STR910能否用Wiggler调试?

                                 H-Jtag好像不支持…

查看全部问答>

内置低功耗蓝牙

传统的蓝牙技术就是像手机连接无线耳塞之类的。但是,蓝牙低功耗技术采用富于变化的连接间隔,可以根据需要从几毫秒到几秒进行设置。而且,因为它可以快速连接,所以它通常可以处于无连接状态(用来省电),仅有两端处于连接状态,当需要时,它可以 ...…

查看全部问答>