图文详解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程序的时候,要记着修改这里的起始地址。

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

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

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

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

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

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

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

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