chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

如何在IAR Embedded Workbench for Arm中調(diào)試Cortex-M HardFault

電子工程師 ? 來源:IAR愛亞系統(tǒng) ? 作者:IAR愛亞系統(tǒng) ? 2022-08-05 11:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

基于Cortex-M的MCU被廣泛應(yīng)用于各種嵌入式系統(tǒng)中,Cortex-M有很多優(yōu)點(diǎn),比如高性能、低功耗、高代碼密度、豐富的調(diào)試功能、強(qiáng)大的生態(tài)系統(tǒng)等。在錯誤異常處理上,Cortex-M提供了強(qiáng)大的錯誤異常機(jī)制,幫助提升系統(tǒng)的穩(wěn)健性。

本文主要介紹如何在IAR Embedded Workbench for Arm中調(diào)試Cortex-M HardFault,幫助開發(fā)人員在開發(fā)過程中盡早發(fā)現(xiàn)代碼中的錯誤異常、提升開發(fā)和調(diào)試效率、提高代碼質(zhì)量。

關(guān)于 Cortex-M Fault

Cortex-M包含了如下幾種Fault:

HardFault: 在異常處理中發(fā)生錯誤導(dǎo)致的Fault,或者是不能被其它異常處理的Fault。

MemManage Fault: 違反內(nèi)存訪問規(guī)則導(dǎo)致的Fault。

BusFault: 內(nèi)存訪問過程中總線出錯導(dǎo)致的Fault。

UsageFault: 指令執(zhí)行時出錯導(dǎo)致的Fault,包括:

- 未定義的指令

- 非法未對齊訪問

- 指令執(zhí)行時非法狀態(tài)

- 異常返回錯誤 下面兩個需要額外使能: - 未對齊訪問字和半字內(nèi)存

- 除零操作

其中,HardFault是永遠(yuǎn)使能的,而MemManage Fault,BusFault和UsageFault默認(rèn)是沒有使能的,對應(yīng)的Fault發(fā)生之后會升級為HardFault。

在IAR Embedded Workbench for Arm中
調(diào)試Cortex-M HardFault

下面通過幾個示例介紹如何在IAR Embedded Workbench for Arm中調(diào)試Cortex-M HardFault。

示例1除零操作導(dǎo)致UsageFault

這個例子中,通過配置CCR寄存器中的DIV_0_TRP來使能除零操作異常。在Call Stack窗口中,可以看到對應(yīng)發(fā)生除零操作的源代碼行。在Register窗口中,可以看到 CFSR 寄存器中的DIVBYZERO 置位,表示出現(xiàn)了除零操作異常。在Debug Log和Fault exception viewer窗口中,可以看到詳細(xì)的錯誤信息:發(fā)生了除零操作異常,導(dǎo)致UsageFault,由于UsageFault沒有使能,升級為HardFault,同時給出了除零操作異常發(fā)生的PC地址和LR地址。

c67070b2-146b-11ed-ba43-dac502259ad0.png

示例2訪問無效地址導(dǎo)致BusFault

這個例子中,地址0x7000000是MCU中的無效地址,當(dāng)訪問無效地址時,會產(chǎn)生BusFault。在Call Stack窗口中,可以看到訪問無效地址的源代碼行。在Register窗口中,可以看到CFSR 寄存器的的PRECISERR和BFARVALID置位,表示出現(xiàn)了Precise data bus error,同時BFAR中保存了對應(yīng)訪問的無效地址。在Debug Log和Fault exception viewer窗口中,可以看到詳細(xì)的錯誤信息:發(fā)生了precise data access error,導(dǎo)致BusFault,由于BusFault沒有使能,升級為HardFault,同時給出了precise data access error發(fā)生時的PC地址和LR地址及對應(yīng)訪問的無效地址。

c69ec2fa-146b-11ed-ba43-dac502259ad0.png

示例3從XN(Execute Never)內(nèi)存運(yùn)行程序?qū)е翸emManage Fault

在這個例子中,地址0x4000000在Cortex-M中是屬Peripheral地址空間,對應(yīng)的內(nèi)存屬性屬于XN(Execute Never):即如果從XN內(nèi)存運(yùn)行程序會造成MemManage Fault。在Call Stack窗口中,可以看到對應(yīng)的源代碼行。在Register窗口中,可以看到CFSR 寄存器的的IACCVIOL置位,表示發(fā)生了instruction access violation。在Debug Log和Fault exception viewer窗口中,可以看到詳細(xì)的錯誤信息:XN訪問違反導(dǎo)致MemManage Fault,由于MemManage Fault沒有使能,升級為HardFault,同時給出了XN訪問發(fā)生時的PC地址和LR地址, 通過LR地址可以找到之前函數(shù)調(diào)用的地方(即導(dǎo)致MemManage Fault的地方)。

c6d05b26-146b-11ed-ba43-dac502259ad0.png

注意事項

1. 為了在調(diào)試時出現(xiàn)Fault之后程序能夠立即停下來,從而可以更好地分析出現(xiàn)Fault之后的現(xiàn)場,需要使能對應(yīng)的Vector catch選項(默認(rèn)是使能的):關(guān)于Vector catch的更多信息,請參考ARMv7-M Architecture Reference Manual。

c6e686a8-146b-11ed-ba43-dac502259ad0.png

2. 本文中的示例是基于Cortex-M4,其它Cortex-M的錯誤異常機(jī)制可能會有所不同(比如基于ARMv6-M的Cortex-M0/M0+/M1只有HardFault,沒有MemManage Fault,BusFault和UsageFault),對應(yīng)Register窗口中的信息可能與上面的截圖不同,具體取決于所使用的 Cortex-M 類型。但是本文的方法適用于所有Cortex-M的HardFault調(diào)試。

總結(jié)

本文以Cortex-M4為例,介紹了如何在IAR Embedded Workbench for Arm中調(diào)試Cortex-M HardFault。通過分析Call Stack,Register,Debug Log和Fault exception viewer窗口中的信息,可以快速地找到HardFault的原因,盡早發(fā)現(xiàn)代碼中的錯誤異常,從而提升開發(fā)和調(diào)試效率,提高代碼質(zhì)量。

審核編輯 :李倩

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

    關(guān)注

    10

    文章

    2960

    瀏覽量

    89778
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    381

    瀏覽量

    37472
  • Cortex-M
    +關(guān)注

    關(guān)注

    2

    文章

    231

    瀏覽量

    30389

原文標(biāo)題:在IAR Embedded Workbench for Arm中調(diào)試Cortex-M HardFault

文章出處:【微信號:IAR愛亞系統(tǒng),微信公眾號:IAR愛亞系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    IAR Embedded Workbench for Arm中使用Arm Cortex-R52 NEON

    隨著嵌入式系統(tǒng)變得越來越智能,對嵌入式處理器的要求也越來越高。為了更好應(yīng)對汽車、醫(yī)療和工業(yè)機(jī)器人等領(lǐng)域?qū)η度胧教幚砥鞯囊螅?b class='flag-5'>Arm推出了采用Armv8-R架構(gòu)的Cortex-R52。Cortex-R52相對之前的處理器引入了很多
    的頭像 發(fā)表于 06-05 09:57 ?842次閱讀
    在<b class='flag-5'>IAR</b> <b class='flag-5'>Embedded</b> <b class='flag-5'>Workbench</b> for <b class='flag-5'>Arm</b>中使用<b class='flag-5'>Arm</b> <b class='flag-5'>Cortex</b>-R52 NEON

    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件函數(shù)與變量內(nèi)存布局優(yōu)化精控方法

    在嵌入式軟件開發(fā)領(lǐng)域,MCU芯片軟件的架構(gòu)設(shè)計與內(nèi)存布局的精細(xì)規(guī)劃對系統(tǒng)性能和穩(wěn)定性起著關(guān)鍵作用。本文檔聚焦于IAR Embedded Workbench環(huán)境下,為自研MCU芯片軟件提供了一套詳盡
    的頭像 發(fā)表于 04-30 16:38 ?291次閱讀
    基于 <b class='flag-5'>IAR</b> <b class='flag-5'>Embedded</b> <b class='flag-5'>Workbench</b> 的自研 MCU 芯片軟件函數(shù)與變量內(nèi)存布局優(yōu)化精控方法

    IAR全面支持芯馳科技車規(guī)MCU芯片E3650

    2025年4月22日,全場景智能車芯引領(lǐng)者芯馳科技與全球嵌入式軟件開發(fā)解決方案領(lǐng)導(dǎo)者IAR正式宣布,IAR Embedded Workbench for
    的頭像 發(fā)表于 04-23 15:45 ?734次閱讀

    瑞薩RA8快速上手指南:Cortex-M85內(nèi)核瑞薩RA8開發(fā)環(huán)境搭建 并點(diǎn)亮一個LED

    因為Cortex-M內(nèi)核,瑞薩RA8系列單片機(jī)支持多種市面上常見的開發(fā)環(huán)境,像Keil MDK、IAR EWARM等,而本文講述的是瑞薩自家官方的IDE(e2 studio)。
    的頭像 發(fā)表于 03-17 14:35 ?1033次閱讀
    瑞薩RA8快速上手指南:<b class='flag-5'>Cortex-M</b>85內(nèi)核瑞薩RA8開發(fā)環(huán)境搭建 并點(diǎn)亮一個LED

    Arm Cortex-A320 CPU助力嵌入式設(shè)備實現(xiàn)高能效AI計算

    ,要確定適合特定 AI 應(yīng)用的處理器,系統(tǒng)開發(fā)者需要通過比較基于 Arm Cortex-A、Arm Cortex-MArm Ethos
    的頭像 發(fā)表于 02-27 17:17 ?762次閱讀
    <b class='flag-5'>Arm</b> <b class='flag-5'>Cortex</b>-A320 CPU助力嵌入式設(shè)備實現(xiàn)高能效AI計算

    如何將項目從IAR遷移到Embedded Studio

    本文描述如何將IAR EWARM項目遷移到SEGGER Embedded Studio(簡稱SES)
    的頭像 發(fā)表于 02-25 17:11 ?599次閱讀
    如何將項目從<b class='flag-5'>IAR</b>遷移到<b class='flag-5'>Embedded</b> Studio

    盤點(diǎn)工程師常用的嵌入式開發(fā)工具

    Cortex-M內(nèi)核的商用IDE,支持調(diào)試、編譯和仿真,廣泛用于STM32等開發(fā)。 IAR Embedded Workbench 支持多種
    的頭像 發(fā)表于 02-07 10:06 ?2057次閱讀

    IAR與紫光同芯合作,全面支持THA6系列汽車芯片

    近日,全球領(lǐng)先的嵌入式系統(tǒng)開發(fā)軟件解決方案提供商IAR與業(yè)內(nèi)知名的芯片及解決方案提供商紫光同芯攜手宣布,最新版本的IAR Embedded Workbench for
    的頭像 發(fā)表于 12-27 11:46 ?1298次閱讀

    IAR升級VS Code調(diào)試擴(kuò)展,引入Listwindow技術(shù)

    IAR近日宣布對VS Code調(diào)試擴(kuò)展IAR C-SPY調(diào)試器進(jìn)行了重要升級。此次升級的核心亮點(diǎn)在于引入了
    的頭像 發(fā)表于 12-11 11:15 ?771次閱讀

    ?IAR C-SPY為VS Code社區(qū)樹立調(diào)試新標(biāo)準(zhǔn)

    全球領(lǐng)先的嵌入式系統(tǒng)開發(fā)軟件解決方案供應(yīng)商IAR宣布,對VS Code調(diào)試擴(kuò)展IAR C-SPY調(diào)試器進(jìn)行了重大升級。此次升級引入了
    的頭像 發(fā)表于 12-06 10:27 ?719次閱讀

    如何使用Ozone分析Cortex-M異常

    Ozone可以幫助用戶快速分析和查找導(dǎo)致CPU故障的軟件bug。本文解釋如何使用Ozone的調(diào)試功能,深入了解Cortex-M架構(gòu)上的這些錯誤。
    的頭像 發(fā)表于 11-29 11:14 ?1702次閱讀
    如何使用Ozone分析<b class='flag-5'>Cortex-M</b>異常

    IAR Systems最新版開發(fā)環(huán)境全面賦能芯??萍?2位MCU芯片

    隨著IAR Embedded Workbench for Arm 9.32版本對芯海科技MCU系列的全面支持,雙方將攜手為開發(fā)者提供更加高效、便捷的開發(fā)體驗,共同推動物聯(lián)網(wǎng)、工業(yè)控制、
    的頭像 發(fā)表于 11-14 14:47 ?955次閱讀
    <b class='flag-5'>IAR</b> Systems最新版開發(fā)環(huán)境全面賦能芯??萍?2位MCU芯片

    IAR支持旗芯微車規(guī)級MCU,助力汽車行業(yè)智能化發(fā)展

    在全球汽車電子產(chǎn)業(yè)迅猛發(fā)展的背景下,IAR與蘇州旗芯微半導(dǎo)體有限公司(簡稱“旗芯微”)攜手宣布了一項重大合作成果:IAR Embedded Workbench for
    的頭像 發(fā)表于 10-23 11:09 ?1279次閱讀

    實際項目開發(fā)為何選擇ARM? Cortex?-M4 內(nèi)核的HK32MCU?

    ?Cortex?-M4內(nèi)核的HK32F407芯片的深度知識,并圍繞各類實際案例詳細(xì)解讀了如何選型,為何選擇ARM?Cortex?-M4內(nèi)核的
    的頭像 發(fā)表于 10-22 17:19 ?895次閱讀
    實際項目開發(fā)<b class='flag-5'>中</b>為何選擇<b class='flag-5'>ARM</b>? <b class='flag-5'>Cortex</b>?-<b class='flag-5'>M</b>4 內(nèi)核的HK32MCU?

    【GD32 MCU 入門教程】二、GD32 MCU 燒錄說明 (2)SWD/JTAG在線下載

    Cortex-M內(nèi)核。調(diào)試系統(tǒng)支持串行(SW)調(diào)試和跟蹤功能,部分型號也支持JTAG調(diào)試。調(diào)試
    的頭像 發(fā)表于 08-08 17:34 ?1837次閱讀
    【GD32 MCU 入門教程】二、GD32 MCU 燒錄說明 (2)SWD/JTAG在線下載