微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > IAP技术助力STM32进行程序更新

IAP技术助力STM32进行程序更新

时间:07-08 来源:与非网 点击:

是在该区域得到体现;而Boot区尽可能使其代码简洁,避免使用中断以及复杂的底层驱动及算法。

  2.3 IAP技术实现

  (1) 关闭相关中断及禁用相关外围接口

  如定时器中断、SysTick中断、A/D中断、外部I/O中断等。

  (2) 设定跳转地址

  typedef void (*pFunction)(void);

  INT32U JumpAddress;//定义IAP入口地址pFunction Jump_To_Application;//定义指向IAP入口地址程序的函数指针

  JumpAddress=*(vu32*)(IAP_ADDR + 4);

  Jump_To_Application=(pFunction) JumpAddress;

  (3) 喂狗并执行跳转

  IWDG_ReloadCounter();//喂狗

  __set_MSP(*(__IO uint32_t*) IAP_ADDR);//初始化用户应用程序的堆栈指针

  Jump_To_Application();

  (4) IAP代码(Boot区代码)

  只需要驱动用到的底层接口,尽量不使用中断,尽可能少地占用存储空间,同时需要适时地喂狗。另外对该系列Flash操作会有所不同,比如 STM32F103ZE执行擦除操作时,一页为2 KB,而SMT32F103VC6等芯片一页为1 KB,使用其他型号芯片时需要具体查阅相关数据手册。

  3 总结

  本文从分析IAP技术原理入手,详细论述了利用IAP技术实现用户程序更新的要点。另外,可以想象,如果Boot区加入TCP/IP协议连入互联网,即可借助网络对产品进行在线升级,既可提高系统的可维护性,又可降低产品的维护成本,必将在未来得到更为广泛的应用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top