99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

實(shí)戰(zhàn)經(jīng)驗(yàn) | TrustZone 架構(gòu)下 LPBAM 使用導(dǎo)致的 HardFault

STM32單片機(jī) ? 來(lái)源:未知 ? 2023-10-20 15:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

wKgaomUyJ8mAUJSZAAHUHXdxAL4994.gif

關(guān)鍵詞:TrustZone,HardFault

目錄預(yù)覽

1、簡(jiǎn)介

2、問(wèn)題分析

3、總結(jié)

01

簡(jiǎn)介


客戶使用 STM32U5 進(jìn)行開(kāi)發(fā),并使能了 TrustZone 架構(gòu),程序需要從 bootloader 跳轉(zhuǎn)到app。在之前版本都是正常跳轉(zhuǎn)的,某一天 IAR 從 9.20 升級(jí)到 9.30 后,程序跳轉(zhuǎn)失敗,并且會(huì)導(dǎo)致 hardfault,想知道為什么會(huì)失敗。

wKgaomUyJ8qAXhuzAAWv_yD84y0479.png

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

02

問(wèn)題分析


通過(guò)斷點(diǎn)和單步調(diào)試,我們發(fā)現(xiàn)出現(xiàn)問(wèn)題的指令如下所示:

wKgaomUyJ8qAQSBjAAVSMORkRzs862.png

圖2.程序下一步將 Hardfault

而沒(méi)有發(fā)生 hardfault 的版本匯編代碼,如下圖:

wKgaomUyJ8qAIr2yAAlBO4Ea5y0597.png

圖3.程序不會(huì)發(fā)生 Hardfault

通過(guò)單步調(diào)試,我們知道了 VLSTM SP 這條指令導(dǎo)致了 hardfault。接著我們?cè)俅_認(rèn)下 SP 指針,錯(cuò)誤版本的 SP 的內(nèi)容為:0x300020b4,正確版本的 SP 內(nèi)容為:0x30000258。首先,我們對(duì)比了生成的 map 文件中 stack 的地址信息,發(fā)現(xiàn)其中 Stack 的地址和這里 SP 指令是相符的。

然后繼續(xù)查找了 VLSTM 這條指令相關(guān)的描述,關(guān)于 VLSTM 在 PM0264 中有以下描述:

wKgaomUyJ8qAJ8EWAAIos6_SmHs908.png

圖4.關(guān)于 VLSTM 指令

從上圖可以看到,VLSTM SP 這條指令會(huì)把安全的浮點(diǎn)運(yùn)算寄存器的值保存到 SP 地址中,并清除安全浮點(diǎn)寄存器的內(nèi)容,如果 CPU 的狀態(tài)是非安全的,那么這條指令相當(dāng)于空指令,也不會(huì)導(dǎo)致 hard fault,所有從這里也還是分析不出為什么會(huì)導(dǎo)致 hard fault。

重新回到這條指令,現(xiàn)在問(wèn)題可能比較大的就是 SP 的地址了。有問(wèn)題的版本的 SP 內(nèi)容為:0x300020b4,會(huì)不會(huì)是對(duì)齊導(dǎo)致的呢?

基于這個(gè)猜測(cè),我們直接在 IAR 界面強(qiáng)制修改了 SP 的地址為 0x300020b8,并繼續(xù)單步執(zhí)行,然后程序可以正常執(zhí)行了。所以目前所知的結(jié)論就是 VLSTM SP 這條指令,要求 SP 必須 8 字節(jié)對(duì)齊,可能 IAR 在編譯的時(shí)候并沒(méi)有注意到這一點(diǎn)。

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

根據(jù)目前的信息,問(wèn)題應(yīng)該是在 VLSTM 要求 8 字節(jié)對(duì)齊上。在 9.30.1 中,由于 PUSH.W {R4, R5, R7-R11}指令執(zhí)行后,相當(dāng)于占用了 28 個(gè)字節(jié)的??臻g,導(dǎo)致了 SP 和 9.20.1 相比,不是 8 字節(jié)對(duì)齊。

03

總結(jié)

在調(diào)試 TrustZone 工程的時(shí)候,由于使用了新的架構(gòu)及新的匯編指令,需要對(duì)這些指令有一定基本的了解。在調(diào)查問(wèn)題的時(shí)候,可以進(jìn)行單步調(diào)試來(lái)定位發(fā)生問(wèn)題的指令,然后再繼續(xù)深入了解下為什么會(huì)導(dǎo)致 hardfault。

wKgaomUyJ8qAFOqEAAHiBpzEGaQ933.png

完整內(nèi)容請(qǐng)點(diǎn)擊“閱讀原文”下載原文檔。


原文標(biāo)題:實(shí)戰(zhàn)經(jīng)驗(yàn) | TrustZone 架構(gòu)下 LPBAM 使用導(dǎo)致的 HardFault

文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6067

    文章

    44989

    瀏覽量

    650345
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    364778

原文標(biāo)題:實(shí)戰(zhàn)經(jīng)驗(yàn) | TrustZone 架構(gòu)下 LPBAM 使用導(dǎo)致的 HardFault

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    鴻蒙5開(kāi)發(fā)寶藏案例分享---應(yīng)用架構(gòu)實(shí)戰(zhàn)技巧

    大家好! 今天咱們聊聊鴻蒙開(kāi)發(fā)中那些“官方文檔提了但實(shí)際開(kāi)發(fā)難找”的架構(gòu)設(shè)計(jì)技巧。結(jié)合官方文檔,我會(huì)用 真實(shí)代碼案例+通俗講解 ,幫你把分層架構(gòu)和線程通信落地到項(xiàng)目里,告別“理論會(huì)了,代碼不會(huì)
    發(fā)表于 06-12 16:14

    main線程的棧大小設(shè)置成2048的時(shí)候rt_memset導(dǎo)致hardfault,為什么?

    main線程的棧大小設(shè)置成2048的時(shí)候rt_memset導(dǎo)致hardfault,改成512就不會(huì),這是為什么
    發(fā)表于 06-10 06:04

    移動(dòng)電源EMC整改:認(rèn)證失敗到一次通過(guò)的實(shí)戰(zhàn)經(jīng)驗(yàn)

    深圳南柯電子|移動(dòng)電源EMC整改:認(rèn)證失敗到一次通過(guò)的實(shí)戰(zhàn)經(jīng)驗(yàn)
    的頭像 發(fā)表于 05-26 11:25 ?200次閱讀
    移動(dòng)電源EMC整改:認(rèn)證失敗到一次通過(guò)的<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>

    國(guó)產(chǎn)芯片多架構(gòu)開(kāi)發(fā)實(shí)踐:從工業(yè)控制到邊緣AI的硬件設(shè)計(jì)經(jīng)驗(yàn)

    近年來(lái),國(guó)產(chǎn)處理器與異構(gòu)計(jì)算架構(gòu)的成熟為硬件開(kāi)發(fā)者提供了新選擇。我們基于飛騰、龍芯、海光等平臺(tái),在VPX/COMe/ITX架構(gòu)上完成了多個(gè)工業(yè)級(jí)項(xiàng)目驗(yàn)證,在此分享一些實(shí)戰(zhàn)經(jīng)驗(yàn)。 硬件架構(gòu)
    的頭像 發(fā)表于 05-23 09:24 ?253次閱讀

    高低頻介電常數(shù)測(cè)試儀實(shí)戰(zhàn)經(jīng)驗(yàn):從原理到場(chǎng)景全解析?

    作為電子發(fā)燒友,在探索材料介電特性時(shí),經(jīng)常會(huì)遇到“頻率選擇” 的困惑:同樣的材料在高頻和低頻測(cè)試結(jié)果為何差異顯著?不同頻率的測(cè)試儀又該如何選擇和操作?本文將結(jié)合實(shí)際經(jīng)驗(yàn),分享高低頻介電常數(shù)測(cè)試
    的頭像 發(fā)表于 04-30 13:20 ?405次閱讀
    高低頻介電常數(shù)測(cè)試儀<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>:從原理到場(chǎng)景全解析?

    錫膏使用50問(wèn)之(3): 錫膏攪拌不充分會(huì)導(dǎo)致什么問(wèn)題?

    遇到的問(wèn)題,每個(gè)問(wèn)題包含“原因分析 + 解決措施”,結(jié)合行業(yè)標(biāo)準(zhǔn)與實(shí)戰(zhàn)經(jīng)驗(yàn),為電子工程師、產(chǎn)線技術(shù)人員、營(yíng)銷(xiāo)工程師提供 “一站式” 缺陷解決方案,助力提升焊接良率
    的頭像 發(fā)表于 04-14 10:14 ?338次閱讀
    錫膏使用50問(wèn)之(3): 錫膏攪拌不充分會(huì)<b class='flag-5'>導(dǎo)致</b>什么問(wèn)題?

    錫膏使用避坑指南:50 個(gè)實(shí)戰(zhàn)問(wèn)答幫你解決 99% 的焊接難題(全流程解析)

    問(wèn)題包含“原因分析 + 解決措施”,結(jié)合行業(yè)標(biāo)準(zhǔn)與實(shí)戰(zhàn)經(jīng)驗(yàn),為電子工程師、產(chǎn)線技術(shù)人員、營(yíng)銷(xiāo)工程師提供 “一站式” 缺陷解決方案,助力提升焊接良率與產(chǎn)品可靠性。了解完5
    的頭像 發(fā)表于 04-14 09:45 ?545次閱讀
    錫膏使用避坑指南:50 個(gè)<b class='flag-5'>實(shí)戰(zhàn)</b>問(wèn)答幫你解決 99% 的焊接難題(全流程解析)

    TrustZone介紹及用途

    TrustZone是Arm開(kāi)發(fā)的一項(xiàng)核心技術(shù),作為Armv8-M架構(gòu)的一部分,通過(guò)強(qiáng)制硬件隔離提供系統(tǒng)級(jí)安全措施。TrustZone要求在軟件中劃分安全和非安全MCU區(qū)域?qū)?yīng)的邏輯分區(qū),從而創(chuàng)建受
    的頭像 發(fā)表于 04-08 09:47 ?589次閱讀
    <b class='flag-5'>TrustZone</b>介紹及用途

    STM32U5如何設(shè)置才能保證LPBAM和RUN模式的應(yīng)用程序正常使用呢?

    = 0x08000000,LENGTH = 2048K}請(qǐng)問(wèn),必須如上圖這樣設(shè)置才可以正常使用LPBAM嗎,如果我的應(yīng)用程序占用RAM過(guò)大,需要使用大量的RAM空間,如何設(shè)置才能保證LPBAM和RUN模式的應(yīng)用程序正常使用呢
    發(fā)表于 03-10 08:21

    用STM32Cubeprogrammer燒錄TrustZone的示范程序不成功怎么解決?

    最近測(cè)試STM32U575 的TrustZone 保護(hù)機(jī)制。 用STM32Cubeprogrammer 2.17.0 燒錄已編譯好的以下地址的TrustZone 的HEX 文件
    發(fā)表于 03-07 08:28

    STM32H7 0x00000000地址的內(nèi)容引發(fā)hardfault怎么解決?

    函數(shù)時(shí)入?yún)惓#M(jìn)入hardfault. 求助:關(guān)于stm32h7 ,0x00000000地址的內(nèi)容是如何被改變的?觀察過(guò)正常情況的值,如下。前三個(gè)地址的值是0,但異常時(shí),前三個(gè)地址的值是非0。
    發(fā)表于 03-07 08:15

    STM32U5驅(qū)動(dòng)庫(kù)從1.6.0更新至1.7.0后,LPBAM的一個(gè)庫(kù)接口返回錯(cuò)誤是怎么回事?

    LPBAM的一個(gè)庫(kù)接口返回錯(cuò)誤導(dǎo)致出錯(cuò),我通過(guò)反復(fù)對(duì)比,使用舊代碼工程沒(méi)問(wèn)題,只要聽(tīng)從提示更新代碼庫(kù)后重新生成就出現(xiàn)此問(wèn)題,測(cè)試期間代碼并無(wú)改動(dòng)。 [/td]
    發(fā)表于 03-07 07:35

    提升開(kāi)關(guān)電源效率的理論分析與實(shí)戰(zhàn)經(jīng)驗(yàn)

    在這里有電源技術(shù)干貨、電源行業(yè)發(fā)展趨勢(shì)分析、最新電源產(chǎn)品介紹、眾多電源達(dá)人與您分享電源技術(shù)經(jīng)驗(yàn),關(guān)注我們,與中國(guó)電源行業(yè)共成長(zhǎng)! 提升開(kāi)關(guān)電源效率的理論分析與實(shí)戰(zhàn)經(jīng)驗(yàn) 引言 開(kāi)關(guān)電源設(shè)計(jì)中,為獲得
    的頭像 發(fā)表于 01-09 10:04 ?1001次閱讀
    提升開(kāi)關(guān)電源效率的理論分析與<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>

    使用MCUXpresso for VS Code插件開(kāi)發(fā)Zephyr的hello world

    本期來(lái)到Zephyr實(shí)戰(zhàn)經(jīng)驗(yàn)演練,小編帶著大家一起使用MCUXpresso for VS Code插件來(lái)開(kāi)發(fā)一個(gè)屬于Zephyr的hello world。
    的頭像 發(fā)表于 01-03 09:21 ?1254次閱讀
    使用MCUXpresso for VS Code插件開(kāi)發(fā)Zephyr的hello world

    遇見(jiàn)一個(gè)編譯優(yōu)化導(dǎo)致的bug

    最近在調(diào)試 can 通信,因?yàn)?c8t6 flash 很小,而魚(yú)鷹培訓(xùn)工程完成的驅(qū)動(dòng)越來(lái)越多,導(dǎo)致 flash 不足,因此把 bsp 的優(yōu)化級(jí)別設(shè)置成 -O2,誰(shuí)知道在串口輸入數(shù)據(jù)時(shí)直接 hardfault 了。
    的頭像 發(fā)表于 08-12 17:26 ?638次閱讀
    遇見(jiàn)一個(gè)編譯優(yōu)化<b class='flag-5'>導(dǎo)致</b>的bug