1. 程式人生 > >MDK生成bin檔案通過USB進行IAP升級時,無法啟動

MDK生成bin檔案通過USB進行IAP升級時,無法啟動

BOOT

更新微控制器內的使用者程式,方式一般都是模擬器,串列埠,網路口,usb DFU,另類一點CAN也行,但是這些方式都有一個共同點,必須要有相應的上位機配合操作,這個比較麻煩。
另一種方式是把我們的裝置通過USB插入電腦,在電腦上映射出一個磁碟,把升級的.bin檔案拷貝到磁碟中,boot把它複製到使用者程式區即可。

bin檔案生成

  • 通過hextobin.exe程式,這個網上,可以直接把hex檔案轉換成bin檔案。這種生成的bin檔案,親測可以。
  • 通過MDK生成。
    在這裡插入圖片描述
    點選該工具-user
    在這裡插入圖片描述

通常用串列埠IAP時,只需要設定RUN#1即可。例如:
D:/Program Files/keil/ARM/ARMCLANG/bin/fromelf.exe --bin --output ./Obj/LPKJ-000.bin ./Obj/LPKJ-000.axf

但是通過USB升級時,需要RUN#1,RUN#2都進行設定,即先檢驗再生成bin。例如:
RUN#1 D:/Program Files/keil/ARM/BIN/ElfDwT.exe ./Obj/LPKJ-000.axf
RUN#2 D:/Program Files/keil/ARM/ARMCLANG/bin/fromelf.exe --bin --output ./Obj/LPKJ-000.bin ./Obj/LPKJ-000.axf

網上找到一些分析:
應該是程式碼有效性校驗位元組不對,看看晶片UM,關於“Criterion for Valid User Code”的描述,然後修改0x1C處的內容,should contain the 2’s complement of the check-sum of table entries 0
through 6.如果使用串列埠升級FLASH程式碼的話就不存在這個問題,因為FLASHMAGIC軟體會自動計算0x1C處開始的四位元組的內容,修改後寫入。

通過測試目前這兩種生成的bin都可以使用。