新闻中心

EEPW首页>牛人业话> 浅析STM32 Bootloader设计

浅析STM32 Bootloader设计

作者:liklon 时间:2013-09-29 来源:电子产品世界 收藏
4.跳转到新程序运行

  更新完程序后就需要跳转到新程序开始运行,具体实现看下面代码:

本文引用地址://m.amcfsurvey.com/article/174370.htm

  typedef void (*iapfun)(void); //定义一个函数类型的参数
  iapfun jump2app;
  __asm void MSR_MSP(u32 addr) //设置堆栈指针
  {
  MSR MSP, r0
  BX r14
  }
  //跳转到应用程序段
  //appxaddr:用户代码起始地址.
  void iap_load_app(u32 appxaddr)
  {
  if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法.
  {
  jump2app = (iapfun)*(vu32*)(appxaddr+4);//用户代码区第二个字为程序开始地址(复位地址),此处查看中断向量表可知
  MSR_MSP(*(vu32*)appxaddr);//初始化堆栈指针(用户代码区的第一个字用于存放栈顶地址)
  jump2app(); //跳转到,执行复位中断程序
  }
  }

程序设计注意

1.编译软件需要做出设置:

  在程序中已经指定了APP程序存储的起始地址为0x08010000,所以在APP程序设计时需要将编译软件这里做出设置,修改起始地址和大小。

2.修改system_stm32f10x.c文件

  同样是针对于APP的起始地址改变而修改这里的偏移量,如上图所示。

  文中只是简单的介绍了关于程序的设计,作为抛砖引玉,大家可以继续深入,添加数据校验和程序加密等。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭