STM32单片机IAP程序升级方法

在这里就不讲IAP升级原理了,直接讲方法及步骤。

一、把Flash分为三个区域:

(1)bootloader(引导)区:存放引导程序

(2)应用功能区:存放应用程序

(3)升级功能区:存放升级程序

三个区域划分的大小要根据所使用单片机FLASH大小和自己三个程序大小来划分。一般来说,引导程序所占空间较小;应用程序和升级程序大小差不多 ,根据自己的实际情况划分区域。

二、以STM32F4XX为例讲解。

Flash大小为1M,地址范围0x08000000--0x080FFFFF

(1)引导区存储大小:0x10000,即64K,应用范围:0x08000000--0x08010000(根据自己情况设置)

部分引导程序:

程序从0x08000000开始运行引导程序,检测到有升级标志位,擦除应用区的程序,然后再从升级功能区把升级程序读出写到应用程序区。

(2)应用区存储大小:0x70000,即448K,应用范围0x08010000--0x08080000(根据自己情况设置)

应用出现初始化时,需要设置向量表偏移地址,即应用区的起始地址减去引导区大小。

应用程序部分程序:

//设置中断向量表偏移,该函数是为配合IAP,当不使用IAP时需注释该句并修改设置
    NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00010000);

 我升级程序使用的U盘升级,也可以是其他方式的升级。把升级程序拷贝到U盘。程序检测到U盘里面有升级文件(一般是.bin文件),擦除升级功能区,从U盘把文件数据拷贝到升级区。并在特定位置设置一个升级标志位,程序继续按照老程序运行。当设备重启时,从引导区开始执行引导程序,检测是否有升级标志位,若有,程序擦除应用区程序,再把升级区程序搬到应用区。。这样引导程序运行完,开始运行应用区程序,这样就是运行新的程序了。

(3)升级功能区:剩下的为升级功能区,应用范围0x08080000--0x080FFFFF。存放待升级程序。

详细的引导程序,可以去我的资源里下载。。。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值