找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11272|回复: 2
打印 上一主题 下一主题
收起左侧

通过串口USART实现STM32F10x的IAP在线升级

[复制链接]
跳转到指定楼层
楼主
ID:94349 发表于 2015-11-9 14:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  STM32F10x的IAP在线升级功能非常实用——不必拆开设备的外壳,然后通过JLINK或是其它工具烧录程序。而是仅通过设备上的串口、USB或是CAN,即可完成程序的更新,实现固件升级。
   整个过程用到两个程序,一个IAP程序,它用来实现通过串口下载用户程序。另一个就是用户应用程序了。

    通过串口实现在线升级的原理如下:
   1、首先通过JLINK或其它工具将IAP程序下载至STM32的FLASH中,其占据的地址空间为0x800 0000到0x8002fff,这段空间用来存放IAP程序,IAP代码大小不能超过(0x800 2fff - 0x800 0000 =12K)。
   2、打开“超级终端”,按照IAP程序里设置的参数(波特率、数据长度、校验位等),对“超级终端”作相应设置。
   3、将设备断电,按住设备上的某一开关或是按键(这个可以在IAP程序里自已定义,下文有叙述)。然后给设备上电,这时“超级终端”上会显示操作界面,让用户选择:1、给STM32下载新的用户程序;2、将STM32内现存的用户程序上传至电脑;3、运行新下载的用户程序。出现这个界面后,就可以松开开关或是按键了。
   4、通过电脑键盘上的“1”、“2”、“3”这几个数字键选择你想执行的操作。若是希望下载,按下数字键“1”.接下来电脑屏幕上会弹出对话框,让你选择希望下载的二进制文件,以及传输协议,这个得选“Ymodem”协议。完成后按“确定”就开始下载了。
   
   
   再来看一下两个源程序里,用户根据自己的需要可能得改动的地方。   
   an2557.zip里面就是IAP程序
   这个程序里面,用户可能要改动的就是IAP的触发方式,即如何进入IAP来进行新的用户程序的下载。该源程序里定义的是一个连接至PB9的按键,当设备刚上电的时候,如果该按键按下,则进入IAP模式,否则跳至0x8003000运行用户程序。如何触发IAP,用户可以根据自己的实际情况,自行定义。另外,这里面初始化了一个串口,即用来和PC通信的串口,波特率、数据长度、校验位等,也是这里设置的。
   再来看用用户应用程序里需要改动两个的地方。
    1、将中断向量表映射至0x8003000处。在main函数里,待系统初始化后,可以通过这条语句即可实现:
      NVIC_SetVectorTable(0x08000000,0x00003000);
    2、将用户应用程序的起始地址设置为0x8003000,在keil4中如下图所示:
     

   另外请注意,在线升级时只能选择BIN格式的二进制文件,可以通过H-JTAG里面的Convert工具,将Keil编译生成的HEX文件转换成BIN文件。

   以上就是通过串口实现STM32IAP在线升级的原理及过程。
   若有不清楚的地方请看an2557:STM32F10x in-application programming using theUSART 这个PDF文档,里面有详细的说明。
   
an2557 ApplicationNote.pdf下载地址:
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00161640.pdf

an2557.zip下载地址:(IAP源代码)http://www.st.com/st-web-ui/static/active/en/st_prod_software_internet/resource/technical/software/firmware/stsw-stm32008.zip

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:262503 发表于 2017-12-20 18:22 | 只看该作者
太感谢了!找了好久官方的!其他的都要这个币那个币!烦!
实测相当好用!!
回复

使用道具 举报

板凳
ID:46365 发表于 2018-1-18 09:23 | 只看该作者
找不到例程文件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表