問題描述
有客戶在使用 STM32CubeU5 包下的 SBSFU 示例代碼(STM32Cube_FW_U5_V1.2.0ProjectsB-U585I-IOT02AApplicationsSBSFU),移植過程中發(fā)現(xiàn)程序運行不起來。同時客戶反饋做了些代碼修改:原先 Secure App 使用的是 SRAM3, 現(xiàn)在改為 SRAM1原先 Non-Secure App 使用的是 SRAM1, 現(xiàn)在改為 SRAM3,如此修改后程序運行不起來了。
問題分析
從客戶那里拿到可以重現(xiàn)問題的測試工程,由于可以每次必現(xiàn),所以此問題解決起來應(yīng)該相對容易。把 SBSFU_Boot, SBSFU_Appli_Secure, SBSFU_Appli_NonSecure,SBSFU_Loader_Secure, SBSFU_Loader_NonSecure 依次編譯(其中SBSFU_Appli_Secure 和 SBSFU_Appli_NonSecure 這兩個工程的編譯優(yōu)化關(guān)閉,以方便調(diào)試)并通過運行 regression.sh, SBSFU_UPDATE.sh 腳本燒錄固件到 MCU 后,從打印信息中確實能看到問題重現(xiàn)。與客戶描述的現(xiàn)象一模一樣。
小結(jié)
開發(fā) trustzone 工程并不簡單,本文基于一個現(xiàn)實的調(diào)試案例并分享給讀者,基于trustzone 的開發(fā)對于大部分已經(jīng)熟悉傳統(tǒng) MCU 的開發(fā)都來說還是一個比較新的事物,特別是面對各種奇奇怪怪的情況,能夠知道該如何去定位問題就顯得是一件非常復(fù)雜的事情,希望本文這種定位 trustzone 問題的方法和思路能夠供大家參考一二。