女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

調(diào)試TrustZone時(shí),如何處理HardFault?

jf_pJlTbmA9 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2023-09-27 16:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

TrustZone

恩智浦基于Cortex M33內(nèi)核的MCULPC55S6x/LPC55S1x, RT600/RT500等產(chǎn)品提供了對(duì)TrustZone的支持,并在SOC上提供了安全AHB控制器等功能,旨在幫助客戶完成良好的安全隔離,并建立可信執(zhí)行環(huán)境。

在產(chǎn)品設(shè)計(jì)之初,我們就要有一個(gè)基本的“隔離”的概念。

需要考慮的問題大致有以下兩個(gè)方面:

產(chǎn)品中的哪些功能和模塊應(yīng)該放在安全區(qū)?(這部分代碼往往是核心且精簡,且經(jīng)過安全審查的,安全區(qū)的內(nèi)容不允許非安全區(qū)的代碼觸碰);

哪些功能應(yīng)該放在非安全區(qū)?(這樣放在非安全區(qū)中的代碼,即使出現(xiàn)安全漏洞(例如棧溢出漏洞等等)后被攻擊,MCU的安全區(qū)中的資源和外設(shè)也無法被攻擊者利用)。

令人頭疼的HardFault

對(duì)于MCU工程師,TrustZone是一個(gè)比較新的技術(shù),在開發(fā)調(diào)試過程中,由于TrustZone配置問題,時(shí)常遇到各種意料之外的HardFault,我們也經(jīng)常調(diào)侃,這個(gè)TrustZone也太安全了,連我們自己都進(jìn)不去。

其實(shí)這種問題往往是由于在開發(fā)階段,我們實(shí)際的行為和我們對(duì)TrustZone的劃分不一致。

平常我們認(rèn)為正常的行為與操作,對(duì)于TrustZone來說,已經(jīng)越界違規(guī)了,這就會(huì)使TruztZone觸發(fā)HardFault,并阻止違規(guī)行為。

在這種情況下,我們就需要找到導(dǎo)致HardFault的原因,并調(diào)整對(duì)于TrustZone的配置。

注:TrustZone相關(guān)的故障會(huì)觸發(fā)SecureFault異常。在芯片上電后的默認(rèn)情況下,SecureFault異常并沒有被使能,因此,此異常會(huì)被“升級(jí)”為HardFault。在通常情況下,建議使用默認(rèn)的設(shè)置,因?yàn)镠ardFault擁有更高的中斷優(yōu)先級(jí),可以使故障在第一時(shí)間被響應(yīng)。

獲取違規(guī)操作的蛛絲馬跡

Cortex M33內(nèi)核本身在SAU中提供了兩個(gè)寄存器:SFSR(Secure FaultStatus Register,安全故障狀態(tài)寄存器)和SFAR(Secure Fault Address Register,安全故障地址寄存器)。

wKgZomUD8tuAGxXSAAH1BBYq2ps696.png

SFSR寄存器用于指示出現(xiàn)錯(cuò)誤的類型,例如非安全區(qū)試圖訪問安全區(qū),從安全區(qū)到非安全區(qū)的非法跳轉(zhuǎn)等。

SFAR寄存器用于指示出現(xiàn)錯(cuò)誤的內(nèi)存地址。

看起來這兩個(gè)寄存器就足以幫助我們查到問題的根源了。但是,有時(shí)候,我們從這兩個(gè)寄存器拿到了錯(cuò)誤的原因和地址,仔細(xì)檢查后發(fā)現(xiàn)無論是安全區(qū)還是非安全區(qū)的程序,都沒有顯式的訪問這個(gè)地址。

這是由于MCU系統(tǒng)愈發(fā)復(fù)雜,總線上除了M33內(nèi)核之外,還有許許多多的其他的外設(shè),例如DMAUSB等等。肇事者不一定是M33內(nèi)核,還有可能是其他的外設(shè),例如DMA。

下面是一種常見的事故:被劃分為非安全的DMA在工作中訪問了安全區(qū)的地址或外設(shè),違反了TrustZone的配置,造成了HardFault。

恩智浦的MCU在SOC層面提供了一個(gè)安全AHB控制器,能夠幫我們偵查肇事現(xiàn)場,找出肇事者的蛛絲馬跡。

其實(shí)原理很簡單,安全AHB控制器提供了三個(gè)寄存器,SEC_VIO_INFO_VALID,SEC_VIO_MISC_INFO和SEC_VIO_ADDR。

SEC_VIO_INFO_VALID用來指示肇事現(xiàn)場,這個(gè)寄存器中存儲(chǔ)了肇事現(xiàn)場的AHB 的端口號(hào)(port number),端口號(hào)與外設(shè)的對(duì)應(yīng)關(guān)系參見用戶手冊(cè)的”Memory map overview”章節(jié)。

每一個(gè)AHB端口都相應(yīng)有一個(gè)SEC_VIO_MISC_INFO寄存器,用來指示肇事的信息,例如違規(guī)操作是讀操作引起的還是寫操作引起的等等,最重要的是會(huì)指出肇事者的身份:

wKgaomUD8t2AAKgTAALdYPGhYrk767.png

每個(gè)AHB端口還有一個(gè)SEC_VIO_ADDR,用來指示肇事現(xiàn)場的地址。

有了上述信息,我們就捉到了真正的肇事者。在開發(fā)階段,我們就可以利用這些信息去調(diào)整我們的TrustZone的配置。

更進(jìn)一步

當(dāng)然,上述功能不只能在開發(fā)階段幫我們排查HardFault。我們也可以利用這個(gè)機(jī)制在產(chǎn)品出廠之后為我們提供防御措施。

產(chǎn)品出廠后,當(dāng)我們檢測到由TrustZone產(chǎn)生的HardFault的原因之后,可以將其記錄,以便于后續(xù)分析。如果設(shè)備有聯(lián)網(wǎng)能力,可以將其傳輸至服務(wù)器。利用這些信息我們可以發(fā)現(xiàn)產(chǎn)品的哪些模塊受到了攻擊,方便我們后續(xù)針對(duì)性地進(jìn)行OTA升級(jí)。云端和設(shè)備本地也可在此時(shí)檢測鏡像以及存儲(chǔ)介質(zhì)的完整性,以檢查程序和存儲(chǔ)介質(zhì)是否被惡意篡改。

小結(jié)

綜上所述,利用SAU和安全AHB控制器調(diào)查HardFault的方法并不復(fù)雜,NXP的MCUXpresso SDK也提供了一個(gè)完整的demo。

以LPC55S69為例,demo的路徑如下:SDKboardslpcxpresso55s69trustzone_examplessecure_faults。

這個(gè)demo中,人為制造了幾種TrustZone觸發(fā)HardFault的案例,在產(chǎn)生HardFault后,使用上文描述的方法,處理相關(guān)寄存器并打印事故信息。

通常來說,在開發(fā)階段,我們可以參考demo中HardFault的處理代碼,按需移植到自己的工程中。

來源:恩智浦MCU加油站

審核編輯:湯梓紅

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

    關(guān)注

    146

    文章

    17981

    瀏覽量

    366823
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1416

    瀏覽量

    41425
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4387

    瀏覽量

    222746
  • trustzone
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    怎樣調(diào)試STM32硬件錯(cuò)誤HardFault

    在用 Keil 對(duì)STM32的程序進(jìn)行仿真時(shí)程序有時(shí)會(huì)跑飛,停止仿真程序會(huì)停在HardFault_Handler 函數(shù)里的死循環(huán)while(1)中。
    發(fā)表于 07-18 09:59 ?1559次閱讀
    怎樣<b class='flag-5'>調(diào)試</b>STM32硬件錯(cuò)誤<b class='flag-5'>HardFault</b>

    HardFault錯(cuò)誤調(diào)試的定位方法是什么

    HardFault 錯(cuò)誤調(diào)試定位方法1、首先更改 startup.s 的啟動(dòng)文件,把里面的 HardFault_Handler 代碼段換成下面的代碼:HardFault
    發(fā)表于 02-15 07:22

    何處理HardFault函數(shù)?

    STM32 MCU 中有一個(gè)名為 HardFault_Handler 的函數(shù)(完整代碼如下)。我通常在調(diào)試時(shí)使用此功能,但不確定如何使用它來處理錯(cuò)誤。在此函數(shù)中處理錯(cuò)誤的正確協(xié)議是什么
    發(fā)表于 02-06 07:52

    STM32 MCU TrustZone開發(fā)調(diào)試技巧分享

    系統(tǒng)隔離與ARM V8-M TrustZone技術(shù)、TrustZone地址安全區(qū)及資源安全屬性配置、TrustZone架構(gòu)下的HardFault調(diào)試
    發(fā)表于 09-05 06:16

    調(diào)試串口的時(shí)候,終端回顯錯(cuò)誤如何處理

    調(diào)試串口的時(shí)候,發(fā)現(xiàn)出現(xiàn)回顯錯(cuò)誤 可以肯定,全部輸出都是英文,不存在中文輸出的情況。 而且輸入的字母也是顯示亂碼,但似乎可以被板子正確識(shí)別,不知這種情況應(yīng)該如何處理
    發(fā)表于 09-28 06:16

    ARM 架構(gòu)中TrustZone 安全處理技術(shù)的研究

    對(duì)基于 ARMv6 架構(gòu)的全新TrustZone 安全處理技術(shù)進(jìn)行了研究,著重從該技術(shù)的實(shí)現(xiàn)原理、運(yùn)行模式和軟硬件支持等方面,論證TrustZone 技術(shù)實(shí)現(xiàn)整體系統(tǒng)安全的有效性和可行性,并
    發(fā)表于 08-28 11:23 ?18次下載

    手把手教你查找stm32 HardFault_Handler調(diào)試及問題方法

    手把手教你查找stm32 HardFault_Handler調(diào)試及問題方法
    發(fā)表于 12-03 09:36 ?22次下載
    手把手教你查找stm32 <b class='flag-5'>HardFault</b>_Handler<b class='flag-5'>調(diào)試</b>及問題方法

    S32K1XX調(diào)試--快速定位HardFault

    1、背景程序運(yùn)行,發(fā)現(xiàn)程序跑飛到HardFault,但不清楚為什么會(huì)跑到HardFault中斷處理函數(shù)去。2、分析要想知道為什么會(huì)跑到HardFault_Handler中去,就很有必要
    發(fā)表于 12-03 15:21 ?5次下載
    S32K1XX<b class='flag-5'>調(diào)試</b>--快速定位<b class='flag-5'>HardFault</b>

    STM32進(jìn)入HardFault調(diào)試方法

    STM32進(jìn)入HardFault調(diào)試方法我們?cè)谠O(shè)計(jì)STM32程序時(shí),經(jīng)常由于內(nèi)存越界等,使得程序意外進(jìn)入了HardFault中斷。但我們一時(shí)半會(huì)又不知道,這個(gè)中斷,究竟是代碼運(yùn)行到哪里,才觸發(fā)
    發(fā)表于 01-12 18:44 ?4次下載
    STM32進(jìn)入<b class='flag-5'>HardFault</b>的<b class='flag-5'>調(diào)試</b>方法

    AN028 Cortex-M3內(nèi)核HardFault錯(cuò)誤調(diào)試定位方法

    AN028 Cortex-M3內(nèi)核HardFault錯(cuò)誤調(diào)試定位方法
    發(fā)表于 02-27 18:32 ?0次下載
    AN028 Cortex-M3內(nèi)核<b class='flag-5'>HardFault</b>錯(cuò)誤<b class='flag-5'>調(diào)試</b>定位方法

    STM32 MCU TrustZone開發(fā)調(diào)試技巧分享

    電子發(fā)燒友網(wǎng)站提供《STM32 MCU TrustZone開發(fā)調(diào)試技巧分享.pdf》資料免費(fèi)下載
    發(fā)表于 07-28 13:35 ?1次下載
    STM32 MCU <b class='flag-5'>TrustZone</b>開發(fā)<b class='flag-5'>調(diào)試</b>技巧分享

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

    關(guān)鍵詞:TrustZoneHardFault 目錄預(yù)覽 1、簡介 2、問題分析 3、總結(jié) 01 簡介 客戶使用 STM32U5 進(jìn)行開發(fā),并使能了 TrustZone 架構(gòu),程序需要
    的頭像 發(fā)表于 10-20 15:05 ?932次閱讀
    實(shí)戰(zhàn)經(jīng)驗(yàn) | <b class='flag-5'>TrustZone</b> 架構(gòu)下 LPBAM 使用導(dǎo)致的 <b class='flag-5'>HardFault</b>

    HardFault 調(diào)試處理

    電子發(fā)燒友網(wǎng)站提供《HardFault 調(diào)試處理.pdf》資料免費(fèi)下載
    發(fā)表于 12-18 09:05 ?1次下載
    <b class='flag-5'>HardFault</b> <b class='flag-5'>調(diào)試</b>與<b class='flag-5'>處理</b>

    STM32 TrustZone 開發(fā)調(diào)試技巧

    電子發(fā)燒友網(wǎng)站提供《STM32 TrustZone 開發(fā)調(diào)試技巧.pdf》資料免費(fèi)下載
    發(fā)表于 12-18 11:16 ?2次下載
    STM32 <b class='flag-5'>TrustZone</b> 開發(fā)<b class='flag-5'>調(diào)試</b>技巧

    STM32 TrustZone 開發(fā)調(diào)試技巧— 地址安全區(qū)及資源安全屬性配置

    電子發(fā)燒友網(wǎng)站提供《STM32 TrustZone 開發(fā)調(diào)試技巧— 地址安全區(qū)及資源安全屬性配置.pdf》資料免費(fèi)下載
    發(fā)表于 12-18 11:10 ?0次下載
    STM32 <b class='flag-5'>TrustZone</b> 開發(fā)<b class='flag-5'>調(diào)試</b>技巧— 地址安全區(qū)及資源安全屬性配置