<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          圖文詳解STM32單片機遠程升級

          共 2132字,需瀏覽 5分鐘

           ·

          2022-11-22 07:40

              關注、星標公眾號,直達精彩內容

          素材來源:https://blog.csdn.net/fang_yang_wa/article/details/123780284

          整理:技術讓夢想更偉大 | 李肖遙


          1、需要兩份程序

          BootLoader和App程序,兩份程序均可以通過jlink下載,只需要將下載地址修改一下即可:

          2、在BootLoader中的跳轉函數(shù)

          #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中修改中斷向量表的偏移地址

          4、程序自動選擇向量表的偏移地址

          適用場景,一顆芯片里面有3個程序:

          1. BootLoader程序,起始地址:0x08000000
          2. APP1程序,起始地址:0x08008000
          3. APP2程序,起始地址:0x08013000

          這種情況就需要BootLoader程序自動選擇往哪個地址跳轉,這個地址再升級完以后會變,比如當前的跳轉地址是app1,那么升級后跳轉的地址就變?yōu)閍pp1。

          針對這種場景,做如下修改:

          5、keil編譯器中設置的程序起始地址會別寫進bin文件

          上圖中的地址會被寫入到bin文件中,所有在編譯APP1程序和APP2程序的時候,要記著修改這里的起始地址。

          版權聲明:本文來源網(wǎng)絡,免費傳達知識,版權歸原作者所有。如涉及作品版權問題,請聯(lián)系我進行刪除。

          ????????????????  END  ???????????????

          關注我的微信公眾號,回復“加群”按規(guī)則加入技術交流群。


          點擊“閱讀原文”查看更多分享,歡迎點分享、收藏、點贊、在看。

          瀏覽 54
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  干少妇电影无码 | 高青黄色一片网站 | 2016超碰 | 俺去了俺也去超碰在线 | 欧美精品成人一区二区三区四区 |