STM32串口IAP操作说明

3 篇文章 0 订阅
3 篇文章 0 订阅

对于大多数基于 Flash 的系统而言,在最终产品中安装之后,能够对固件进行更新,这一点非常重要。
这一功能被称为在应用中编程 (IAP   in-applicationprogramming)。 通过微处理器内置 Flash 的 IAP
(可以认为是boot代码),STM32F4xx 微控制器能够运行用户指定固件。借助这一特性,在重新编程
过程中可以使用任意类型的通信协议。下面的例子是利用串口下载一个可以执行的bin文件程序到开发板,
由于开发板已经内置好IAP程序,下载完bin文件后,用户就可以选择跳转到相应flash地址去执行这个程序。

IAR或者MDK生产bin文件看这个帖子:https://blog.csdn.net/u012572552/article/details/84570552

STM32F407有如下12个扇区,这里我们把扇区0,扇区1,扇区2,扇区3用来存储IAP代码,其余扇区
用于用户flash区。

/* 各个扇区首地址 */
#define ADDR_FLASH_SECTOR_0     ((uint32_t)0x08000000) /* Base @ of Sector 0, 16 Kbyte */
#define ADDR_FLASH_SECTOR_1     ((uint32_t)0x08004000) /* Base @ of Sector 1, 16 Kbyte */
#define ADDR_FLASH_SECTOR_2     ((uint32_t)0x08008000) /* Base @ of Sector 2, 16 Kbyte */
#define ADDR_FLASH_SECTOR_3     ((uint32_t)0x0800C000) /* Base @ of Sector 3, 16 Kbyte */
#define ADDR_FLASH_SECTOR_4     ((uint32_t)0x08010000) /* Base @ of Sector 4, 64 Kbyte */
#define ADDR_FLASH_SECTOR_5     ((uint32_t)0x08020000) /* Base @ of Sector 5, 128 Kbyte */
#define ADDR_FLASH_SECTOR_6     ((uint32_t)0x08040000) /* Base @ of Sector 6, 128 Kbyte */
#define ADDR_FLASH_SECTOR_7     ((uint32_t)0x08060000) /* Base @ of Sector 7, 128 Kbyte */
#define ADDR_FLASH_SECTOR_8     ((uint32_t)0x08080000) /* Base @ of Sector 8, 128 Kbyte */
#define ADDR_FLASH_SECTOR_9     ((uint32_t)0x080A0000) /* Base @ of Sector 9, 128 Kbyte */
#define ADDR_FLASH_SECTOR_10    ((uint32_t)0x080C0000) /* Base @ of Sector 10, 128 Kbyte */
#define ADDR_FLASH_SECTOR_11    ((uint32_t)0x080E0000) /* Base @ of Sector 11, 128 Kbyte */


/*其中 扇区0 - 3用于IAP BOOT,  下面是用户区首地址  */
#define APPLICATION_ADDRESS   (uint32_t)0x08010000 
下面我们要做的就是把可执行程序bin文件的首地址设置为0x08010000 ,需要设置如下两个地方再编译:
 

 

 

第一步:打开超级终端,XP系统自带超级终端,WIN7系统没有自带,可以下载这里的超级终端:https://download.csdn.net/download/u012572552/10811177
           。由于这个例子用到了Ymodem文件传输协议,所以要
           使用超级终端,如果使用secureCRT的话,文件下载会失败,主要是secureCRT使用的Ymodem协议与
           超级终端使用的稍有区别。

第二步:打开超级终端

点击确定后选择波特率,停止位等(注意自己电脑可以用的串口号是com几,就选择com几,当前我这里是com4)

 点击确定后选择波特率,停止位等选项,然后点击应用,确定:

至此超级终端就设置完了。

第三步:下载固件

超级终端会显示如下信息:

在键盘上面点击数字1,弹出如下信息:

点击菜单选项-->传送-->发送文件:

点击发送,弹出如下窗口:

发送完成后,上面的窗口会自动消息,并在超级终端显示如下消息:

第四步:在电脑键盘上面点击数字2,开发板就会执行前面下载的output.bin程序:

done

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值