<th id="alkcr"><pre id="alkcr"></pre></th>

  • 打印

    [單片機芯片] 用戶程序自升級!IAP升級詳解!

    [復制鏈接]
    301|3
    跳轉到指定樓層
    樓主
    本帖最后由 wyyyy 于 2019-9-27 11:05 編輯

    一、原理
           IAP(In Applicating Programing)在應用編程,即通過用戶程序對用戶程序進行升級,這樣就可實現用戶自由升級而不影響應用。比如一款支持IAP的單片機,這里以目前正在使用的CH559單片機舉例,我們可以人為的將其內分成三個程序區,1作引導程序區即BOOT區域,2作為運行程序區即用戶程序區域,3作為下載區。芯片通過滿足觸發條件(用戶自己設定)進入引導區運行引導程序,在BOOT程序下將目標程序下載到下載區,下載完成并校驗通過后再將下載區內容復制到用戶程序區,運行復位程序,IAP完成。
    二、應用:
       方式1:跳轉BOOT,通過ISP下載工具完成下載
       查看CH559DS1芯片手冊可知,CH559芯片出廠內置BOOT,且Boot Loader Code Flash起始地址為0XF400,如下圖所示:
          
       這個地址也就是我們IAP跳轉的起始地址,定義一個函數指針類型的變量,將該函數指針指向BOOT Loader的起始地址。我們設置的觸發條件是檢測P1^6引腳低電平,滿足條件后實現地址跳轉,跳轉BOOT后再使用官方提供的ISP工具,實現在線下載。
          
      上述是借助官方提供的ISP工具跳轉BOOT區實現目標程序下載,下面介紹一下通過IAP實現定制“BOOT”,然后通過任意接口下載。
      方式2:定制“BOOT”,任意接口完成下載
      上述是通過CH559單片機自帶的BOOT程序完成下載,下面介紹一下通過IAP實現定制“BOOT”,然后通過任意接口實現程序升級。真正達到接口自由、觸發方式自由、協議自由。
      首先編譯目標程序,根據編譯生產的hex文件大小,具體大小如圖2.1.1所示,設置IAPFLASH中存儲的位置
       
    file:///
      設置如下圖2.1.2所示,“Start”起始地址到0xF000之間的存儲空間不能小于圖2.1.1中的code大小,為了便于操作起始地址最好設置成1K的整數倍,“Size”可以不設置,Keil會自動設置文件大小。IAPCode大小是1861B,所以設置IAP程序空間最小為(2+NKBN=0,1…..)。所以由0xF000地址(Data Flash起始地址)遞減(2+NKBN=0,1……), 0xF000-0x400*(1+N)(N=0,1..)=0xE800, 因為 BIN文件開頭需要預留一個至少 4 字節空間給跳轉指令,所以 IAP 程序設置地址為(0xE800+4);
        IAP 程序里面定義的起始存放地址依然是 0xE800,如:
       
       地址設置如圖所示:
       
       編寫用戶程序時,我們需要在用戶程序中實現跳轉升級,同樣需要定義函數指針類型變量,將改指針指向設置的起始地址。
       
      下載 IAP 的程序的時候需要指定下載地址,下載地址跟程序中的跳轉地址一致,如本例子用0xE800。第一次下載還是需要通過ISP工具這里需要勾選啟用IAP功能設置起始地址注意,設置的起始地址與 2.2 中描述相同,這里設置的是0xE804,與 IAP 工程設置的地址相同。在下面兩個程序文件欄分別選擇 IAP 程序 CH55IAP 和用戶程序CH559User,點擊下載。如圖 所示
       
      打開 CH559IAPDemo 程序包,雙擊運行 WCHMCUIAP_WinAPP.exe。選擇 USB 下載,選擇程序文件CH559User。本例程中是用 Demo 板上按鍵 K4 進入 IAP 程序(按下 K4 鍵相當于 P1.3 接地),用戶可根據需要自己修改別的方式。按下按鍵 K4 松開,LED5 熄滅,LED6 閃爍,并且頻率較快,表示進入IAP 程序,應用程序 CH559WINUser 的設備列表中出現設備,如圖 2.4.1 所示,點擊下載,下載完成后自動復位執行用戶程序。
      

    3、程序源碼
       USB+UART的IAP實現.rar (110.25 KB, 下載次數: 4)

    使用特權

    評論回復
    沙發
    | 2019-9-28 13:41 | 只看該作者
    剛好需要這部分資料,感謝樓主!

    使用特權

    評論回復
    板凳
     樓主 | 2019-9-29 14:49 | 只看該作者
    Taoyukai 發表于 2019-9-28 13:41
    剛好需要這部分資料,感謝樓主!

    使用特權

    評論回復
    地板
    | 2019-9-29 15:45 | 只看該作者

    使用特權

    評論回復
    掃描二維碼,隨時隨地手機跟帖
    您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規則

    我要發帖 投訴建議 創建版塊 申請版主

    快速回復

    您需要登錄后才可以回帖
    登錄 | 注冊
    高級模式

    論壇熱帖

    在線客服 快速回復 返回頂部 返回列表
    成人短片线上看