SemiDrive E3 系列 MCU SSDK : XIP 模式
一、 前言
本文介紹基於 SSDK3.0 調試 XIP 運行模式。
硬體平台:芯馳 E3_LQFP176_E3200_A03_048 開發板
軟體平台:SemiDrive SSDK3.0
二、 模式簡介
SF Core 的程序 XIP 運行在 FLASH 上,XIP 程序啟動前,需先在 IRAM 中運行 SF Core 的 BootLoader 程序,對 XSPI 以及 FLASH 進行初始化,然後啟動 SF Core 的 XIP 程序;通常客戶會有使用 CAN 進行 OTA 升級的需求,這時可以參考 XIP 例程,在 BootLoader 程序中接收升級文件,寫入 FLASH 中,升級完成後跳轉至 FLASH XIP 模式運行。
三、 測試過程
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。
![](https://edit.wpgdadawant.com/uploads/news_file/blog/2024/15345/tinymce/______3.png)
3. 編譯
首先在 debug 模式編譯 sf 程序,並配置生成 sf.bin 文件。
然後在 flashdebug 模式編譯 BootLoader 程序,Linker 文件會把 BootLoader、SFS、sf.bin 一起合併成一個 .out 文件。
下載到板子中,重新啟動,可以看到 log
說明程序先從 bootloader 啟動,然後跳轉至 flash XIP 運行。
四、 參考文檔
- 《AppNote_E3_Boot_and_OTA_Rev01.03.pdf》
- 《SemiDrive_E3_SSDK_User_Guide_Rev103.pdf》
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。
![](https://edit.wpgdadawant.com/uploads/news_file/blog/2024/15345/tinymce/3.png)
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 分析
![](https://edit.wpgdadawant.com/uploads/news_file/blog/2024/15345/tinymce/8.png)
(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》
SemiDrive E3 系列 MCU SSDK : ota_eth
一、 前言
本文介紹基於 SSDK3.0 調試以太網並通過以太網進行升級
硬體平台:芯馳 E3640 Gateway 開發板
軟體平台:SemiDrive SSDK3.0
二、 應用簡介
客戶在實際應用中會用到以太網功能,Gateway 開發板板載 3 路以太網接口,本文介紹如何調試以太網接口及做 OTA 升級。
測試例程:
ssdk\boards\e3_gateway\app_demo\eth-xip\eth_freertos_tcp_client
ssdk\boards\e3_gateway\app_demo\ota_eth
三、 測試過程
1. Eth 初始化
通過程序可以看出 eth2 使用的是 RJ45 接口,IP 配置如下:
![](https://edit.wpgdadawant.com/uploads/news_file/blog/2024/15345/tinymce/10.png)
2. 電腦端設置 IP
PC 端 IP 地址設置,需要與板端同一網段
![](https://edit.wpgdadawant.com/uploads/news_file/blog/2024/15345/tinymce/11.png)
3. PC 測試
電腦端 ping 板子,可以 ping 通
![](https://edit.wpgdadawant.com/uploads/news_file/blog/2024/15345/tinymce/12.png)
4. 測試 TCPServer 功能
SSCOM 設置成 TCPServer,配置如下,本地 IP 與
static void tcp_echo(void *pvParameters) 函數、PC 端 IP 設置一致,則通過 SSCOM 軟體給開發板發送數據,開發板會將收到的數通過 ETH 原樣發送出來,SSCOM 軟體窗口可以查看接收到的數據。
串口會列印成功 log
![](https://edit.wpgdadawant.com/uploads/news_file/blog/2024/15345/tinymce/15.png)
5. 測試 ota_eth
測試例程 ssdk\boards\e3_gateway\app_demo\ota_eth
Main 函數中添加 log 用來區分 ota 後的程序
燒錄到開發板,觀察開機 log
6. 製作升級文件
6.1 修改輸出 log ,用來區分升級文件
6.2 使用打包命令進行打包
E:\E3_SSDK_PTG3.0_Source_Code\ssdk>prebuilts\windows\python-3.7.0\python.exe tools\genpac.py -b e3_gateway -p ota_eth -v IAR -c Debug -f devices\E3640\pacconfig\pac_config_sf.json --chipid=E3640 -d Flashloader
6.3 使用 SDToolBox 工具提取出 boot0.bin,並修改名字為 boot0.img
6.4 參考 《SemiDrive_9_Series_Boot 與升級指南》 文檔,修改 boot0.img 文件的 PSN 號
6.5 網線連接電腦和開發板 RJ45 接口,PC 安裝 Tftp64 軟體,設置 IP 及 boot0.img 文件路徑
6.6 開發板上電,通過串口輸入命令 ota -d flash1 -f eth0:boot0.img -b 開始升級,升級完成後,再次上電開發板,觀察 log 可以看出運行的是升級後的程序。
四、 總結
調試以太網 OTA 升級,首先要確認以太網功能正常,可以和電腦 ping 通,然後再調試 OTA 功能。E3640 DEV_KIT 開發板測試 ota_eth 升級時需要移植 Gateway 路徑下的例程,因為硬體上的差異需要修改 pinmux.c 以及 eth_cfg.c,則可以正常實現升級。
五、 參考文檔
- 《SemiDrive_E3系列_Boot_and_OTA_開發指南.pdf》
- 《SemiDrive_E3_SSDK_User_Guid.pdf》
歡迎在博文下方留言評論,我們會及時回復您的問題。
如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com 作者:Chelsea Tong / 佟強
更多資訊,請掃碼關注我們!
評論