SemiDrive E3 系列 MCU SSDK (四): bootloader

一、    前言

本文介紹基於 SSDK3.0 調試 XIP 運行模式。

硬體平台:芯馳 E3_LQFP176_E3200_A03_048 開發板

軟體平台:SemiDrive SSDK3.0

 

 

二、    應用簡介

       客戶在實際應用中通常都會用到 OTA 升級功能,通常都是由 bootloader + app 程序組成,bootloader 程序運行在 RAM 中,對 FLASH 程序進行升級,芯馳已經提供 Demo 程序,本文就 Demo 程序進行分析,並測試把升級標誌位寫在 RAM 內。


三、    測試過程

1.  BootLoader 程序分析

例程路徑:E3_SSDK_PTG3.0_Source_Code\ssdk\boards\e3_176_ref\app_demo\xip\bootloader

BootLoader 中做了時鐘、IO、FLASH 的初始化,以及跳轉命令。跳轉地址為

        SF_MEM_BASE 0x10140000,與 iar_flashboardcfg_bootloader.board 文件中描述的 sf.flash 文件地址一樣。在跳轉前會輸出 log:SSDK E3 Bootloader Success!

 

2.  Sf 程序分析

Sf 程序初始化時鐘、PIN 腳、輸出 log:SSDK E3 XIP Demo, SF Boot Success。



3.  編譯

首先在 debug 模式編譯 sf 程序,並配置生成 sf.bin 文件。



       然後在 flashdebug 模式編譯 BootLoader 程序,Linker 文件會把 BootLoader、SFS、sf.bin 一起合併成一個 .out 文件。

下載到板子中,重新啟動,可以看到 log

說明程序先從 bootloader 啟動,然後跳轉至 flash XIP 運行。



4.  參考例程

       增加 sdrv_rstgen_write_general(&reset_genral_reg_test,4);函數,參考 ssdk\boards\e3_gateway\app_demo\boot_core\sf 例程可以向寄存器寫入變量,且使用 reboot_global();進行復位時不會丟失。

 



5.  程序 log 分析


        (1) SSDK E3 Bootloader Success!//進入 bootloader

        (2) bootloader read flag: 0//讀取寄存器中值為 0

        (3) SSDK E3 XIP Demo, SF Boot Success//進入 sf 程序

        (4) sf read flag: 0//讀取寄存器中值為 0

        (5) sf write-->read flag: 4//寫入寄存器中值為 4

        (6) SSDK E3 Bootloader Success!//跳轉回 bootloader

        (7) bootloader read flag: 4//讀取寄存器中值為 4

        (8) ota mode!!!!!//進入 OTA 模式,並寫入寄存器為 8

        (9) global reset!!!!!//假設 OTA 完成,復位

        (10) SSDK E3 Bootloader Success!//進入 bootloader

        (11) bootloader read flag: 8//讀取寄存器值 8

        (12) SSDK E3 XIP Demo, SF Boot Success//跳轉到 sf

        (13) sf read flag: 8//讀取寄存器值 8

        (14) sf write-->read flag: 4//寫入寄存器中值為 4

        (15) SSDK E3 Global Reset Demo Success!//復位

        (16) SSDK E3 Bootloader Success!//進入 bootloader

        (17) bootloader read flag: 4//讀取寄存器中值為 4

        (18) ota mode!!!!! //進入 OTA 模式,並寫入寄存器為 8

        (19) global reset!!!!! //進入 OTA 模式,並寫入寄存器為 8

        (20) SSDK E3 Bootloader Success! //進入 bootloader

        (21) bootloader read flag: 8//讀取寄存器值 8

        (22) SSDK E3 XIP Demo, SF Boot Success//進入 sf

        (23) sf read flag: 8//讀取寄存器值 8

        (24) sf write-->read flag: 4//寫入寄存器中值為 4

        (25) SSDK E3 Global Reset Demo Success!//復位

 

四、    總結

        經過以上步驟可以驗證出,reboot_global 進行復位,通用寄存器並不會丟失,客戶可以根據此特性把升級標誌位寫在寄存器中。 


五、   參考文檔

        《AppNote_E3_Boot_and_OTA_Rev01.03.pdf》

《SemiDrive_E3_SSDK_User_Guide_Rev1.03.pdf》


歡迎在博文下方留言評論,我們會及時回復您的問題。

如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com   
作者:Chelsea Tong / 佟強


更多資訊,請掃碼關注我們!

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論