国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

如何在IAR Embedded Workbench for Arm中調試Cortex-M HardFault

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

掃碼添加小助手

加入工程師交流群

基于Cortex-M的MCU被廣泛應用于各種嵌入式系統中,Cortex-M有很多優點,比如高性能、低功耗、高代碼密度、豐富的調試功能、強大的生態系統等。在錯誤異常處理上,Cortex-M提供了強大的錯誤異常機制,幫助提升系統的穩健性。

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

關于 Cortex-M Fault

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

HardFault: 在異常處理中發生錯誤導致的Fault,或者是不能被其它異常處理的Fault。

MemManage Fault: 違反內存訪問規則導致的Fault。

BusFault: 內存訪問過程中總線出錯導致的Fault。

UsageFault: 指令執行時出錯導致的Fault,包括:

- 未定義的指令

- 非法未對齊訪問

- 指令執行時非法狀態

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

- 除零操作

其中,HardFault是永遠使能的,而MemManage Fault,BusFault和UsageFault默認是沒有使能的,對應的Fault發生之后會升級為HardFault。

在IAR Embedded Workbench for Arm中
調試Cortex-M HardFault

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

示例1除零操作導致UsageFault

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

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

示例2訪問無效地址導致BusFault

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

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

示例3從XN(Execute Never)內存運行程序導致MemManage Fault

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

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

注意事項

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

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

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

總結

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

審核編輯 :李倩

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

    關注

    10

    文章

    3040

    瀏覽量

    91657
  • IAR
    IAR
    +關注

    關注

    5

    文章

    410

    瀏覽量

    38539
  • Cortex-M
    +關注

    關注

    2

    文章

    234

    瀏覽量

    31091

原文標題:在IAR Embedded Workbench for Arm中調試Cortex-M HardFault

文章出處:【微信號:IAR愛亞系統,微信公眾號:IAR愛亞系統】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    最小化ARM Cortex-M CPU功耗的方法與技巧分享

    1 理解Thumb-2   首先,讓我們從一個看起來并不明顯的起點開始討論節能技術—指令集。所有Cortex-M CPU都使用Thumb-2指令集,它融合了32位ARM指令集和16位Thumb指令集
    發表于 01-21 06:19

    Cortex-M產品的特色

    與外部設備進行通信。 指令集:Cortex-M系列處理器支持ARM Thumb指令集,包括16位和32位的Thumb-2指令集,以及可選的DSP指令和浮點單元,提供了高性能的信號處理能力
    發表于 11-26 07:22

    Cortex-M內核的精確延時的方法

    使用 CYCCNT寄存器來測量執行某個任務所花的周期數,這也可以用作時間基準相關的目的(操作系統中統計 CPU使用率可以用到它)。” Cortex-M的DWT它有一個32位的寄存器叫CYCCNT
    發表于 11-21 07:51

    Cortex-M級別的轉換

    一、 簡述 Cortex-M 里面有特權級別的概念,不同級別可以設定不同的權限,如何轉換特權級別基本是本章的內容。 二、操作模式 ARM M 核操作模式有兩個: 線程(Thread)模式:在復位時或
    發表于 11-19 07:32

    MCU調試典型問題與解決方法

    ;CFSR(故障狀態寄存器)、SCB->HFSR、SCB->MMFAR(內存管理地址)。 使用ARM Cortex-M的故障診斷庫(如CmBacktrace)自動定位崩潰代碼行。
    發表于 11-17 07:57

    何在IAR Embedded Workbench for Arm開發和調試Infineon MOTIX MCU

    Infineon MOTIX MCU集成了感應、控制和驅動電機的所有基本功能,支持繼電器、半橋和全橋直流和 BLDC 電機應用,為先進的電機控制應用提供全面的解決方案[1]。
    的頭像 發表于 11-08 14:24 ?8254次閱讀
    如<b class='flag-5'>何在</b><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'>中</b>開發和<b class='flag-5'>調試</b>Infineon MOTIX MCU

    Cortex-M0+處理器的HardFault錯誤介紹

    ARM處理器,如果一個程序產生了錯誤并且被處理器檢測到,就會產生錯誤異常。Cortex-M0+處理器只有一種異常用以處理錯誤:HardFault
    的頭像 發表于 10-14 10:50 ?3378次閱讀
    <b class='flag-5'>Cortex-M</b>0+處理器的<b class='flag-5'>HardFault</b>錯誤介紹

    何在 IAR Embedded Workbench for ARM 開發環境啟用可配置數據閃存并設置大小?

    何在 IAR Embedded Workbench for ARM 開發環境啟用可配置數據閃
    發表于 08-26 07:49

    請問NuMicro? Cortex-M? 系列芯片是否支持 I2C 監視器功能?

    NuMicro? Cortex-M? 系列芯片是否支持 I2C 監視器功能?
    發表于 08-21 06:04

    請問如何在 IAR Embedded Workbench for ARM 開發環境啟用可配置數據閃存并設置大小?

    何在 IAR Embedded Workbench for ARM 開發環境啟用可配置數據閃
    發表于 08-20 06:23

    「芯生態」杰發科技AC7870攜手IAR開發工具鏈,助推汽車電子全棧全域智能化落地

    IAR Embedded Workbench for Arm已全面支持杰發科技AutoChips車規級MCU AC7870,為其提供涵蓋開發、調試
    的頭像 發表于 07-22 12:06 ?685次閱讀
    「芯生態」杰發科技AC7870攜手<b class='flag-5'>IAR</b>開發工具鏈,助推汽車電子全棧全域智能化落地

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

    隨著嵌入式系統變得越來越智能,對嵌入式處理器的要求也越來越高。為了更好應對汽車、醫療和工業機器人等領域對嵌入式處理器的要求,Arm推出了采用Armv8-R架構的Cortex-R52。Cortex-R52相對之前的處理器引入了很多
    的頭像 發表于 06-05 09:57 ?1860次閱讀
    在<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 芯片軟件函數與變量內存布局優化精控方法

    在嵌入式軟件開發領域,MCU芯片軟件的架構設計與內存布局的精細規劃對系統性能和穩定性起著關鍵作用。本文檔聚焦于IAR Embedded Workbench環境下,為自研MCU芯片軟件提供了一套詳盡
    的頭像 發表于 04-30 16:38 ?761次閱讀
    基于 <b class='flag-5'>IAR</b> <b class='flag-5'>Embedded</b> <b class='flag-5'>Workbench</b> 的自研 MCU 芯片軟件函數與變量內存布局優化精控方法

    IAR全面支持芯馳科技車規MCU芯片E3650

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

    瑞薩RA8快速上手指南:Cortex-M85內核瑞薩RA8開發環境搭建 并點亮一個LED

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