<wbr id="9qp22"><legend id="9qp22"><rt id="9qp22"></rt></legend></wbr>
<th id="9qp22"><noframes id="9qp22"><form id="9qp22"></form></noframes></th>

      <dd id="9qp22"><big id="9qp22"><video id="9qp22"></video></big></dd>
      <th id="9qp22"></th>
        <rp id="9qp22"><acronym id="9qp22"></acronym></rp>
        <dd id="9qp22"><pre id="9qp22"></pre></dd>

        1. <dd id="9qp22"><pre id="9qp22"></pre></dd>
          1. 打印

            [單片機芯片] 用戶程序自升級!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 | 只看該作者

            使用特權

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

            本版積分規則

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

            快速回復

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

            論壇熱帖

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