C語言NXP S32K116 serial bootloader和C#語言bootloader PC端串口通信程序 自己用C語言寫NXP S32K116 serial bootloader

瞭解更多關於bootloader 的C語言實現,請加我QQ: 1273623966 (驗證信息請填 bootloader)

歡迎諮詢或定製bootloader(在線升級程序)。

 

        上一篇博文介紹的NXP S32K116 serial bootloader, 由於上位機不是專門的bootloader上位機,沒有通信協議,沒有應答機制,所以嚴格意義上講,只能用於學習或研發階段使用,是不可以用於量產產品上。一些客戶看到我的博文,聯繫上我,說他們也有產品用到NXP 這款芯片,讓我做一個可靠性高的,可以用於量產產品上的S32K116 bootloader。爲了響應客戶的要求,我重寫Bootloader程序並命名爲S32Boot_S32K116, 並用C#寫了專門的上位機。上位機和S32Boot之間交互有了通信協議。上位機按照通信協議發送指令和數據,S32Boot接收到數據後,解析數據,完成燒寫,成功則返回ACK (0x15), 出錯則返回NACK (0x51)。通信協議的指令如下:

                0x6F:    HAND_SHAKE (握手,或叫更新請求)

                0x02:     WR_MEM    (Flash 燒寫)

                0x03:     ER_MEM    (Flash 擦除)

                0x04:     VF_MEM     (Flash 驗證)

                0x1F:    RUN_APP    (跳轉到application)

       S32K116板子啓動後運行在S32Boot模式,S32Boot初始化完成後,開始數秒,1秒內收到更新請求就停留在S32Boot, ACK 應答。 超時就檢查Appilcation的有效性,成功就跳轉到Application,出錯就重啓。接收擦除指令,完成擦除,成功就ACK應答,否則NACK應答。接收燒寫指令,完成燒寫,成功就ACK應答,否則NACK應答。最後是跳轉指令,成功就跳轉到Application,否則就重啓。

       S32Boot和Application的Memory map 和上一篇博文《自己用C語言寫NXP S32K116 serial bootloader》介紹的memory map 是一樣,這裏就不重複介紹。但是由於有專門上位機的原因,S32Boot_S32K116的實現方式和HyperBoot_S32K116有很大的不同。它的實現邏輯如上面所講,就是接收指令及指令後面的數據,包括地址數據和BIN數據。然後執行指令。

      今天主要想介紹我用C#寫的專門的上位機,我爲其取名爲s32Loader,整個用戶界面雖然不是很漂亮,但是很簡潔。如下

  s32Loader可以自動識別所有可用的串口端口,點擊下拉框選擇要用的端口,baud rate默認是19200,因爲這是我面前寫的Bootloader使用頻率最高的baud rate, 也可以從下拉框中選擇9600,38400, 115200等其他baud rate. 前提是要和Bootloader的baud rate保持一致。點擊“瀏覽”選好要燒寫的application hex 文件。最後點擊“Start” 後,立馬reset 硬件板,即可完成Application 的升級。有進度顯示。100%完成後Log窗口會出現“Programming done"文字。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章