那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

實戰經驗 | TrustZone 架構下 LPBAM 使用導致的 HardFault

STM32單片機 ? 來源:未知 ? 2023-10-20 15:05 ? 次閱讀
wKgaomUyJ8mAUJSZAAHUHXdxAL4994.gif

關鍵詞:TrustZone,HardFault

目錄預覽

1、簡介

2、問題分析

3、總結

01

簡介


客戶使用 STM32U5 進行開發,并使能了 TrustZone 架構,程序需要從 bootloader 跳轉到app。在之前版本都是正常跳轉的,某一天 IAR 從 9.20 升級到 9.30 后,程序跳轉失敗,并且會導致 hardfault,想知道為什么會失敗。

wKgaomUyJ8qAXhuzAAWv_yD84y0479.png

圖1.IAR9.20 和 IAR9.30 生成的匯編代碼對比

02

問題分析


通過斷點和單步調試,我們發現出現問題的指令如下所示:

wKgaomUyJ8qAQSBjAAVSMORkRzs862.png

圖2.程序下一步將 Hardfault

而沒有發生 hardfault 的版本匯編代碼,如下圖:

wKgaomUyJ8qAIr2yAAlBO4Ea5y0597.png

圖3.程序不會發生 Hardfault

通過單步調試,我們知道了 VLSTM SP 這條指令導致了 hardfault。接著我們再確認下 SP 指針,錯誤版本的 SP 的內容為:0x300020b4,正確版本的 SP 內容為:0x30000258。首先,我們對比了生成的 map 文件中 stack 的地址信息,發現其中 Stack 的地址和這里 SP 指令是相符的。

然后繼續查找了 VLSTM 這條指令相關的描述,關于 VLSTM 在 PM0264 中有以下描述:

wKgaomUyJ8qAJ8EWAAIos6_SmHs908.png

圖4.關于 VLSTM 指令

從上圖可以看到,VLSTM SP 這條指令會把安全的浮點運算寄存器的值保存到 SP 地址中,并清除安全浮點寄存器的內容,如果 CPU 的狀態是非安全的,那么這條指令相當于空指令,也不會導致 hard fault,所有從這里也還是分析不出為什么會導致 hard fault。

重新回到這條指令,現在問題可能比較大的就是 SP 的地址了。有問題的版本的 SP 內容為:0x300020b4,會不會是對齊導致的呢?

基于這個猜測,我們直接在 IAR 界面強制修改了 SP 的地址為 0x300020b8,并繼續單步執行,然后程序可以正常執行了。所以目前所知的結論就是 VLSTM SP 這條指令,要求 SP 必須 8 字節對齊,可能 IAR 在編譯的時候并沒有注意到這一點。

然后,把這些信息反饋到 IAR 以后,IAR 的工程師回復如下:

根據目前的信息,問題應該是在 VLSTM 要求 8 字節對齊上。在 9.30.1 中,由于 PUSH.W {R4, R5, R7-R11}指令執行后,相當于占用了 28 個字節的??臻g,導致了 SP 和 9.20.1 相比,不是 8 字節對齊。

03

總結

在調試 TrustZone 工程的時候,由于使用了新的架構及新的匯編指令,需要對這些指令有一定基本的了解。在調查問題的時候,可以進行單步調試來定位發生問題的指令,然后再繼續深入了解下為什么會導致 hardfault。

wKgaomUyJ8qAFOqEAAHiBpzEGaQ933.png

完整內容請點擊“閱讀原文”下載原文檔。


原文標題:實戰經驗 | TrustZone 架構下 LPBAM 使用導致的 HardFault

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638579
  • STM32
    +關注

    關注

    2272

    文章

    10924

    瀏覽量

    357585

原文標題:實戰經驗 | TrustZone 架構下 LPBAM 使用導致的 HardFault

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    提升開關電源效率的理論分析與實戰經驗

    在這里有電源技術干貨、電源行業發展趨勢分析、最新電源產品介紹、眾多電源達人與您分享電源技術經驗,關注我們,與中國電源行業共成長! 提升開關電源效率的理論分析與實戰經驗 引言 開關電源設計中,為獲得
    的頭像 發表于 01-09 10:04 ?344次閱讀
    提升開關電源效率的理論分析與<b class='flag-5'>實戰經驗</b>

    使用MCUXpresso for VS Code插件開發Zephyr的hello world

    本期來到Zephyr實戰經驗演練,小編帶著大家一起使用MCUXpresso for VS Code插件來開發一個屬于Zephyr的hello world。
    的頭像 發表于 01-03 09:21 ?645次閱讀
    使用MCUXpresso for VS Code插件開發Zephyr的hello world

    珠海航展無人機搭載相機選擇的深度解析

    軒展科技,作為無人機視頻產品解決方案提供商,具有15年的一體化攝像機模組二次開發實戰經驗,能為無人機通過各種分辨率、不同輸出接口及性能的一站式視頻產品解決方案,滿足各種應用場景的需求。
    的頭像 發表于 11-16 10:26 ?332次閱讀

    【全新課程資料】正點原子《基于GD32 ARM32單片機項目實戰入門》培訓課程資料上線!

    ,提高編程能力和實戰經驗 四、適合人群 (1)單片機編程初學者 (2)電子工程師 (3)對ARM32單片機有興趣的技術愛好者 五、課程詳細介紹 1、培訓課程包含: (1)全套培訓課程視頻(已全部錄制
    發表于 09-24 18:06

    遇見一個編譯優化導致的bug

    最近在調試 can 通信,因為 c8t6 flash 很小,而魚鷹培訓工程完成的驅動越來越多,導致 flash 不足,因此把 bsp 的優化級別設置成 -O2,誰知道在串口輸入數據時直接 hardfault 了。
    的頭像 發表于 08-12 17:26 ?377次閱讀
    遇見一個編譯優化<b class='flag-5'>導致</b>的bug

    STM32H5和STM32U5在trustzone上有哪些不同?

    我要做空調的空中升級FOTA的方案,需要加密,對于trustzone功能,采用那款芯片比較合適?STM32H5和STM32U5在trustzone上有哪些不同?
    發表于 07-05 07:03

    請問STM32L5和STM32H5對trustzone有哪些不同?

    STM32L5和STM32H5對trustzone有哪些不同?
    發表于 07-04 08:08

    21年的實戰經驗,得出最安全、快速、有效的變壓器漏油治理方法!

    變壓器的滲漏是變壓器故障的常見問題,特別是一些運行年限已久的變壓器更為普遍,輕者污染設備外表影響美觀,重者威脅設備安全運行甚至人員生命,變壓器造成滲漏的原因主要有兩個方面:一方面是在變壓器設計及制造工藝過程中潛伏下來的;另一方面是由于變壓器的安裝和維護不當引起的。根據運行維修資料,變壓器最容易滲漏油的是散熱器、瓦斯繼電器、油閥門和油箱等處,嚴重的滲漏油也多半
    的頭像 發表于 06-17 13:39 ?531次閱讀
    21年的<b class='flag-5'>實戰經驗</b>,得出最安全、快速、有效的變壓器漏油治理方法!

    運行ble_hello_sensor時出現了HardFault_Handler,為什么?

    當我運行 ble_hello_sensor 時,出現了 HardFault_Handler。 我認為 cy_rtos_create_thread(cybt_platform_task.c) 用于
    發表于 05-21 07:35

    STM32H7在設置MPU時為什么會進入hardfault?

    MPU配置截圖 這樣配置會進入hardfault,這么配置的原因是這段里某些地址我用做了ETH和LWIP的緩存 標識符啥的 不知道這么配置為什么就會進入Hardfault,但是如果我把MPU Cacheable Permission打開后,就是正常的 不知道各位大佬有沒
    發表于 05-17 15:02

    STM32程序運行時會莫名的進入HardFault硬件中斷中,為什么?

    中斷,串口中斷,在進入HardFault后這些中斷還在正常運行,可以排除是這些中斷導致進入HardFault; 一周嘗試下來,確定的現象就是將代碼改動一問題就會消失或者重新出現,但是
    發表于 04-10 06:29

    空指針區域寫入數據會hardfault,為什么測試時讀取卻不會hardfault?

    空指針區域寫入數據會hardfault,這個大家都知道, 但是測試時發現讀取時卻不會,這是為什么?有人知道嗎?
    發表于 03-14 08:20

    STM32H5 DA證書鏈實戰經驗

    之前我們已經講過了如何通過 DA 認證來回退芯片產品狀態,或者重新打開調試口,這樣開發人員在芯片為 Closed 狀態時仍可以調試芯片。
    的頭像 發表于 03-12 14:08 ?1189次閱讀
    STM32H5 DA證書鏈<b class='flag-5'>實戰經驗</b>

    基于STM32U5片內溫度傳感器正確測算溫度實戰經驗分享

    STM32 在內部都集成了一個溫度傳感器,STM32U5 也不例外。這個位于晶圓上的溫度傳感器雖然不太適合用來測量外部環境的溫度,但是用于監控晶圓上的溫度還是挺好的,以防止芯片過溫運行。
    的頭像 發表于 02-22 17:27 ?4406次閱讀
    基于STM32U5片內溫度傳感器正確測算溫度<b class='flag-5'>實戰經驗</b>分享

    STM32H5 DA 之初體驗(帶 TrustZone)

    電子發燒友網站提供《STM32H5 DA 之初體驗(帶 TrustZone).pdf》資料免費下載
    發表于 02-19 14:19 ?0次下載
    STM32H5 DA 之初體驗(帶 <b class='flag-5'>TrustZone</b>)
    大发888赌场| 利来国际网址| 风水24山详解| 百家乐官网赢得秘诀| 在线百家乐作弊| 百家乐什么平台好| E世博百家乐官网娱乐城| 最新娱乐城注册送体验金| 百家乐透明发牌靴| 线上百家乐官网平玩法| 金臂百家乐官网注册送彩金| 棋牌王中王| 真人百家乐蓝盾娱乐网| 广州百家乐官网娱乐场开户注册| 百家乐官网路单下注| bet365娱乐城官网| rmb百家乐的玩法技巧和规则 | G3娱乐城| 大发888充值100| 百家乐园云鼎娱乐平台| 做生意选店铺位置| 网上百家乐官网游戏下载| 百家乐官网关键词| 青河县| 棋牌游戏论坛| 曼哈顿百家乐的玩法技巧和规则| 百家乐官网连赢的策略| 白河县| 金濠国际| 和记娱乐| 大赢家足球比分| 乐天堂在线投注| 永凡棋牌游戏| 大发888 zhidu| 大发888游戏下载中心| 百家乐平注资讯| 博发百家乐的玩法技巧和规则| 怎么赢百家乐的玩法技巧和规则 | 鑫鑫百家乐官网的玩法技巧和规则| 大赢家百家乐官网的玩法技巧和规则 | 颍上县|