Semidrive E3210 ssdk xip 休眠喚醒代碼移植

關鍵字 :SemidriveE3210

一、目的

       已知客戶問題:基於 SSDK3.0 使用 sleep_gpio_wakeup demo 可以正常休眠喚醒,將 sleep_gpio_wakeup demo 中休眠喚醒相關的代碼移植到 XIP 的 sf demo 工程中,可以休眠但是無法正常喚醒。板卡:E3104。代碼:


圖 (1)


串口:



圖 (2)

要做什麼:將 sleep_gpio_wakeup 中休眠喚醒相關代碼移植到 XIP 的 sf demo 工程中,並解決問題。

二、過程

過程(板卡:E3210):

1. 跑通 E3210 Sleep_gpio_wakeup demo: 

1.1、使用 JLINK 下載鏡像到 e3_176_ref 開發板,並啟動調試;撥碼 1110,選擇 flashloader 下載。

        1.2、本 Demo 執行完成後,因為晶片進入休眠模式,此時 Jlink 會斷開連接,此時不要嘗試重新鏈接;撥碼 0000,log 列印 enter sleep。

        1.3、撥動 GPIO_A0 撥碼開關,產生上升沿脈衝,喚醒晶片;撥碼 1000,喚醒成功。



圖 (1)


1.4 然後使用 Jlink attach 上晶片, 確認晶片已被喚醒  project->attach to runing targe


圖 (2)

udelay.h 放在頭文件里;middleware 中加入 udelay.c 文件;路徑:D:\Semidrive\train\internaltrain\ssdktrain\ssdktrain\project\E3_RTG3.0\ssdk\middleware\udelay



圖 (3)

debug 後一直循環,一直列印 SSDK E3 Sleep gpio wakeup Demo Success!


圖 (4)

       
      單步執行,還在死循環里,單次列印 SSDK E3 Sleep gpio wakeup Demo Success。確認晶片已被喚醒。

     
     
      2. 跑通 xip demo:

      2.1 使用 JLINK 連接到開發板,撥碼到 0b1110 調試模式啟動開發板(或者 0b0000,保證此時 Jlink 可以連接即可。)

      2.2 打開 sf XIP 工程,並編譯;

      2.3 打開 bootloader 工程並切換到 FlashDebug 配置;

      0)點擊編譯,此時 IAR 會把 SFS + bootloader 程序 + sf XIP 程序整體編譯為一個 elf 文件;    

      路徑:D:\Semidrive\train\internaltrain\ssdktrain\ssdktrain\project\E3_3.0\ssdk\boards\e3_176_ref\app_demo\xip\bootloader\IAR\FlashDebug\Exe

      1)點擊 Erase memory 先擦除 flash(推薦但非必須);

      2)點擊 Download active application 按鈕,IAR flashloader 下載上述 elf 到 flash 中;


圖 (5)

3)以 0b0000 模式啟動開發板,UART 列印輸出;

SSDK E3 Bootloader Success!

       SSDK E3 XIP Demo, SF Boot Success;


圖 (6)

        2.4 將bootloade r工程切換到 Debug 配置,點擊 Download and Debug 按鈕,即可對 bootloader 工程進行調試(此時由於沒有配置 flashloader, download and Debug 僅下載 bootloader 程序至 iram)

2.5 在 bootloade r程序啟動 sf 之後, 打開 sf 的 XIP 程序

選擇 Attach to Running Target, attach 到 sf 的 XIP 程序進行調試;此步後移植代碼;


圖 (7)

反覆啟動,串口列印如圖。

        2.6 如果需要修改 sf 的 XIP 程序,可以直接使用 debug and download 進行下載調試。移植代碼的過程即修改到 sf 的 XIP 程序,修改後直接使用 debug and download 下載調試。

       
       3. 移植E3210 Sleep_gpio_wakeup demo 的休眠喚醒代碼到 xip 的 sf demo:

xip sf 重新移植代碼後 down and debug,此時撥碼仍是 0000,在 flash 中啟動,已經 attach 到 sf 的 xip 程序;



圖 (8)

 

逐句移植;加入調用到的頭文件;頭文件相關見附件(1);將 power_cfg.c 與 pinmux_cfg.c 重新配置,並加入到 IDE boards 文件下;根據錯誤提示,將 IDE drives 加入和 sleep_sleep_gpio_wakeup 一樣的 source 文件:

Add sdrv_power.c                     40個錯誤;

Add sdrv_power_core_context.c         37個錯誤;

Add sdrv_pmu.c                      19 個錯誤;

Add sdrv_scr.c                        19 個錯誤;

Add sdrv_smc.c                       無錯誤;




圖 (9)

此時 down and debug 後無錯誤,進入 debug,點擊 run,串口列印進入睡眠;



圖 (10)

使 GPIO_A0 上升沿脈衝,沒有喚醒成功,串口保持原樣。復現問題。完整 sf 代碼見附件(2)。


4.  解決問題

       將原廠釋放的 E3-SSDK-PTG3.0-NewFeature-6753543-Hibernate 進行解壓縮,我們來大致了解一下此 patch 中的相關思路:

  • E3104/E3106/E3205/E3206 XIP 模式支持 Hibernate 睡眠喚醒。

       2)上述四款晶片在 sf 下電時會將 XSPI 模塊(Flash 控制器)同時下電,而 XIP 模式運行依賴 XSPI。因此需要把睡眠喚醒後的初始化相關代碼放到 IRAM 里,XSPI 重新初始化完成後,再 XIP運行。

       4.1 將 patch 中 new 文件夾中的文件覆蓋 E3_SSDK_PTG3.0/ssdk 對應的路徑,通過 IAR 編譯。

       patch 內提供了 e3_176_ref/app_demo/power-xip (E3104/E3106/E3106)和 e3_144_ref/app_demo/power-xip(E3205)兩個board的demo,測試這兩個 demo 運行正常即可,運行方法參考 demo 目錄下的 readme.txt。

       我們來觀察一下 “new”文件夾中的內容:


圖 (11)

boards->


圖 (12)

devices->


圖 (13)

remap->

圖 (14)


依次替換至 ssdk3.0;注意 power-xip 要更改名稱為 xip。



5.  證明問題已解決:

5.1  使用 JLINK 連接到開發板,撥碼到 0b1110 調試模式啟動開發板(或者 0b0000,保證此時 Jlink 可以連接即可);

5.2  打開 bootloader 工程,使用 Debug 配置進行編譯;

5.3 打開 wakeuploader 工程,使用 Debug 配置進行編譯;

5.4 打開 sf 工程,使用 FlashDebug 配置進行編譯

0)點擊編譯,此時 IAR 會把 SFS + bootloader + sf + wakeuploader 整體編譯為一個 elf 文件;

1)點擊 Erase memory 先擦除 flash(推薦但非必須);

2)點擊 Download active application 按鈕,IAR flashloader 下載上述 elf 到 flash 中;

3)以 0b0000 模式啟動開發板,UART 列印輸出;SSDK E3 Bootloader Success!然後執行 APP 程序,立刻進入休眠

4)撥動 BOOT_PIN1 (GPIO_A0) 喚醒,UART 列印輸出:SSDK E3 Hib gpio wakeup Demo Success!



圖 (15)


圖 (16)

 

附件:

        頭文件相關附件(1):

        power_cfg.h:


圖 (17)

power_cfg.c:


圖 (18)

pinmux_cfg.h:


圖 (19)

 


圖 (20)

 

完整 sf 代碼附件(2):


圖 (21)

三、 參考資料:

《SemiDrive_E3_SSDK_User_Guide_Rev01.04》

《AppNote_E3_Boot_and_OTA_Rev01.06》

 

歡迎在博文下方留言評論,我們會及時回復您的問題。如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com

作者:Rita Liu / 劉倩

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

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

評論