打印

STM32F103怎么IAP升级呢

[复制链接]
1022|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
jouney316| | 2016-9-18 20:27 | 只看该作者
IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。

使用特权

评论回复
板凳
Dennis-Zhou| | 2016-9-18 21:57 | 只看该作者
通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是第一个项目代码开始运行,它作如下操作:
1)检查是否需要对第二部分代码进行更新
2)如果不需要更新则转到4)
3)执行更新操作
4)跳转到第二部分代码执行

使用特权

评论回复
地板
l科科1987| | 2016-9-19 15:10 | 只看该作者
通过串口实现在线升级的原理如下:
    1、首先通过JLINK或其它工具将IAP程序下载至STM32的FLASH中,其占据的地址空间为0x800 0000到0x800 2fff,这段空间用来存放IAP程序,IAP代码大小不能超过(0x800 2fff - 0x800 0000 = 12K)。
    2、打开“超级终端”,按照IAP程序里设置的参数(波特率、数据长度、校验位等),对“超级终端”作相应设置。
    3、将设备断电,按住设备上的某一开关或是按键(这个可以在IAP程序里自已定义,下文有叙述)。然后给设备上电,这时“超级终端”上会显示操作界面,让用户选择:1、给STM32下载新的用户程序;2、将STM32内现存的用户程序上传至电脑;3、运行新下载的用户程序。出现这个界面后,就可以松开开关或是按键了。
    4、通过电脑键盘上的“1”、“2”、“3”这几个数字键选择你想执行的操作。若是希望下载,按下数字键“1”.接下来电脑屏幕上会弹出对话框,让你选择希望下载的二进制文件,以及传输协议,这个得选“Ymodem”协议。完成后按“确定”就开始下载了。
这是以前做过的串口升级,楼主可以参考看看。

使用特权

评论回复
5
dongbaohui| | 2016-9-19 19:37 | 只看该作者
我记得官方有个demo,就是搞IAP的,STM32F103的。

使用特权

评论回复
6
原味_郭| | 2016-9-20 12:07 | 只看该作者
百度一搜,这样的例程多得是,原子和野火都有这样的例程的。

使用特权

评论回复
7
ahhsyf| | 2016-9-21 17:40 | 只看该作者
涉及到boot的编写,内存地址的书写,引脚的配置。最好有个参考的博客或者例程。

使用特权

评论回复
8
冰是睡着的冰|  楼主 | 2016-12-21 16:13 | 只看该作者
dongbaohui 发表于 2016-9-19 19:37
我记得官方有个demo,就是搞IAP的,STM32F103的。

是的,最后就是移植的官方的这个例程,能用就好,没有深究。

使用特权

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

本版积分规则

16

主题

213

帖子

0

粉丝