STM32-串口IAP升级

原创 2017年10月06日 21:14:08

        对于写好的程序来说如何烧录到芯片中是十分重要的的过程,在平时测试开发的时候可以直接通过Jlink,swd,usart等方式直接将编译好的程序直接烧录到芯片的Flash中,但是对于已经开发好的产品来说,特别的已经进行了分布部署的设备来说,一个一个升级可以是不可能的事情,一般的升级方式都是通过网络或者其他远程方式来进行固件的升级,但是无论通过什么方式来进行升级,基本上都是将要升级的代码段下载到指定的Flash存储区域中,这也就是IAP升级的主要内容。

        IAP升级主要是将不同的程序放置到内部存储区域的不同的位置,然后通过相应的跳转函数,来指向不同的地址空间,这样就可以运行不同的APP程序了。对于STM32来说内置的Flsah分为不同大小的,128,256,512不同大小的容量。首先要根据不同容量来确定不同程序段的存放位置,之后还有了解一下STM32的启动方式,两个方面,一是它不同BOOT电平的不同启动方式,可以通过手册来了解,二是它在启动的时候的寻址模式,因为如果我们需要执行新的APP程序的时候,就是进行中断响应,在我们的新程序中就要从新配置中断向量表的位置,是原先的中断向量表映射到我们新程序的地方,一般的程序都是从0x8000000的地址空间开始运行的,之后跟的就是中断向量表的地址。实现的方式就是更改一下相应的寄存器,但是原理一定要了解,这样才能根据实际的问题来解决。下面贴出一个实现程序跳转的JUMP函数,功能就是是程序运行的指针跳转到我们指定的地方执行,也就是我们新程序的起始地址。

void Jump(void)
{
       /*ÌøתÖÁÄ¿±ê³ÌÐò*/
        /* Test if user code is programmed starting from address "ApplicationAddress" */
        printf("%x\r\n",*(__IO vu32*)0x08010000);
        if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
        { 
          /* Jump to user application */
          FLASH_Lock();
          JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
          Jump_To_Application = (pFunction) JumpAddress;
          /* Initialize user application's Stack Pointer */
          __set_MSP(*(__IO uint32_t*) ApplicationAddress);
          Jump_To_Application();
        }
}

我们程序的起始地址是需要在MDK中进行配置的

这里写图片描述

注意看那个IROM1的地址,需要自定义为0x8002000,这个就是我们程序的起始地址了,执行JUMP函数之后,我们的程序就开始运行我们所升级的程序了。

    下面是两个我已经写好的工程,包含两个部分,一个是IAP的BootLoader,一个是执行的跳转程序,也就是我们通过串口进行下载到内部FLASH中的程序

http://download.csdn.net/download/sinat_32566647/9992634
http://download.csdn.net/download/sinat_32566647/10009467

版权声明:本文为博主原创文章,未经博主允许不得转载。

STM32串口在线升级IAP+ymodemDown

  • 2017年11月30日 14:57
  • 6.81MB
  • 下载

【云隐】STM32F103C8T6实现串口IAP方式升级固件

首先下载官方STM32F10X的IAP Bootloader源码,STM32F10x_AN2557_FW_V3.3.0。 用Keil4打开工程代码STM32F10x_AN2557_FW_V3.3.0\...

跟着原子学习stm32之串口IAP下载

哈哈

stm32f103串口IAP实验

IAP,即在应用编程。很多单片机都支持这个功能,STM32也不例外。在之前的FLASH模拟EEPROM实验里面,我们学习了STM32的FLASH自编程,本章我们将结合FLASH自编程的知识,通过STM...

STM32串口IAP实验

IAP,即在应用编程。很多单片机都支持这个功能,STM32也不例外。在之前的FLASH模拟EEPROM实验里面,我们学习了STM32的FLASH自编程,本章我们将结合FLASH自编程的知识,通过STM...

STM32开发板入门教程(十七) - IAP 之串口篇

豆皮   - STM32 开发板入门教程(十七)   -    IAP  之串口篇   (原创)       版权所有   STMFANS  原创,转载请保留出处  ...
  • bobbat
  • bobbat
  • 2014年10月13日 10:53
  • 1118

stm32通过485接串口做IAP

在做一个工程测量的项目,由于探头要下放到100米深,因此采用了走485差分信号的方式来提高传输距离和增强抗干扰能力,为了防止出问题时一遍一遍的拆开设备,所以决定通过预留出来的485的A,B线来进行固件...

STM32 串口IAP实验

IAP,即在应用编程。很多单片机都支持这个功能,STM32也不例外。在之前的FLASH模拟EEPROM实验里面,我们学习了STM32的FLASH自编程,本章我们将结合FLASH自编程的知识,通过STM...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STM32-串口IAP升级
举报原因:
原因补充:

(最多只允许输入30个字)