图文详解STM32单片机远程升级

发布时间:2024-03-25  

1、需要两份程序

BootLoader和App程序,两份程序均可以通过jlink下载,只需要将下载地址修改一下即可:

c9dd396e-6930-11ed-8abf-dac502259ad0.pngca2f8110-6930-11ed-8abf-dac502259ad0.png


2、在BootLoader中的跳转函数


 


#define APP_FLASH_ADDR 0x8008000 



iap_load_app(APP_FLASH_ADDR);

//#include "include.h"



#include "iap.h"


#include "main.h"


typedef  void (*iapfun)(void);//?¨ò?ò???oˉêyààDíμ?2?êy.


iapfun jump2app; 


__asm void MSR_MSP(u32 addr) 


{


    MSR MSP, r0    //set Main Stack value


    BX r14


}




/******************************************************************************


 *   Function name  £o iap_load_app


 *    Function describe     £o ì?×aμ?app3ìDò?£


 *    Input      £o appxaddr£oapp3ìDòμ?μ??·?£       


 *    Output      £o No


 *    Illustration     £o  


 *   Revise   £o


 *   Existing problems  :  No


*****************************************************************************/

void iap_load_app(u32 appxaddr)

{


 if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)

  

 { 


  jump2app=(iapfun)*(vu32*)(appxaddr+4);


  MSR_MSP(*(vu32*)appxaddr);


  jump2app(); //ì?×aμ?APP.


 }


}


3、在app中修改中断向量表的偏移地址

ca56e714-6930-11ed-8abf-dac502259ad0.png

caac94de-6930-11ed-8abf-dac502259ad0.pngcac3e72e-6930-11ed-8abf-dac502259ad0.png

4、程序自动选择向量表的偏移地址

适用场景,一颗芯片里面有3个程序:

BootLoader程序,起始地址:0x08000000

APP1程序,起始地址:0x08008000

APP2程序,起始地址:0x08013000

这种情况就需要BootLoader程序自动选择往哪个地址跳转,这个地址再升级完以后会变,比如当前的跳转地址是app1,那么升级后跳转的地址就变为app1。

针对这种场景,做如下修改:

cb01152c-6930-11ed-8abf-dac502259ad0.png

5、keil编译器中设置的程序起始地址会别写进bin文件

cb30fa62-6930-11ed-8abf-dac502259ad0.png

上图中的地址会被写入到bin文件中,所有在编译APP1程序和APP2程序的时候,要记着修改这里的起始地址。

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    STM32代码远程升级之IAP编程;IAP是什么 有时项目上需要远程升级单片机程序,此时需要接触到IAP编程。 IAP即为In Application Programming,解释......
    指令,从而启动远程升级功能。 2.1 升级系统软件设计 本系统软件由两部分组成:主程序和升级程序,分别对应于Main工程和Update工程。Main工程负责与远端服务器进行通信,接收......
    IAP编程的流程及IAP的应用场所;IAP是什么 有时项目上需要远程升级单片机程序,此时需要接触到IAP编程。 IAP即为In Application Programming,解释......
    写入 Flash内,对程序进行烧写固化。 程序的远程升级方法主要用上位PC机,通过专用工具软件,将升级程序数据分割发送,下位监控系统收到程序数据后,先将数据放入内存指定的区域,待到......
    基于LPC2124芯片和GPRS网络实现终端系统程序的远程升级;用电现场监控终端是一种与多功能计量设备同步计量并全方位监控用电状况的智能化设备,在目前全国电力紧缺的情况下,起到了削峰填谷,提高......
    对现场设备(PLC)的远程配置、远程诊断、远程调试和远程升级程序。利用物通博联设备远程维护系统,工程师可以在任何地方,只要电脑上安装物通博联设备快线软件,就可以实现对分布在全世界各地的PLC实现远程上下载程序......
    的实现更加灵活,通常可利用单片机的串行口接到计算机的 RS232 口,通过专门设计的固件程序来编程内部存储器,可以通过现有的 INTERNET 或其它通讯方式很方便地实现远程升级和维护。 ......
    与保存在 FLASH 末尾的 CRC 值进行比较。 这个对Flash添加CRC校验主要目的:在远程升级程序可有效检查程序的完整性。 在IAR EWARM中有这么一个功能:Checksum。不知......
    STM32的OTA远程升级;上次发过SD卡的Bootloader离线升级后,应大家的要求,这次就讲一下STM32的OTA远程升级。 OTA又叫空中下载技术,是通过移动通信的空中接口实现对移动终端设备数据进行远程......
    图文详解STM32单片机远程升级;1、需要两份程序 BootLoader和App程序,两份程序均可以通过jlink下载,只需要将下载地址修改一下即可: 2、在BootLoader中的......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>