SemiDrive E3 系列 MCU SSDK

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。




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。



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》




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 配置如下:



2.  電腦端設置 IP

PC 端 IP 地址設置,需要與板端同一網段



3.  PC 測試

電腦端 ping 板子,可以 ping 通



4.  測試 TCPServer 功能

SSCOM 設置成 TCPServer,配置如下,本地 IP 與

       static void tcp_echo(void *pvParameters) 函數、PC 端 IP 設置一致,則通過 SSCOM 軟體給開發板發送數據,開發板會將收到的數通過 ETH 原樣發送出來,SSCOM 軟體窗口可以查看接收到的數據。

 




串口會列印成功 log



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 / 佟強


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


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

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

評論