日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

完善資料讓更多小伙伴認識你,還能領(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ào)試功能、強大的生態(tài)系統(tǒng)等。在錯誤異常處理上,Cortex-M提供了強大的錯誤異常機制,幫助提升系統(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是永遠使能的,而MemManage Fault,BusFault和UsageFault默認是沒有使能的,對應(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窗口中,可以看到詳細的錯誤信息:發(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窗口中,可以看到詳細的錯誤信息:發(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)存運行程序?qū)е翸emManage Fault

在這個例子中,地址0x4000000在Cortex-M中是屬Peripheral地址空間,對應(yīng)的內(nèi)存屬性屬于XN(Execute Never):即如果從XN內(nèi)存運行程序會造成MemManage Fault。在Call Stack窗口中,可以看到對應(yīng)的源代碼行。在Register窗口中,可以看到CFSR 寄存器的的IACCVIOL置位,表示發(fā)生了instruction access violation。在Debug Log和Fault exception viewer窗口中,可以看到詳細的錯誤信息: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選項(默認是使能的):關(guān)于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),對應(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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    3061

    瀏覽量

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

    關(guān)注

    5

    文章

    415

    瀏覽量

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

    關(guān)注

    2

    文章

    234

    瀏覽量

    31194

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    何在 S32DS 3.6 安裝 IAR Eclipse 插件并創(chuàng)建 IAR 項目?

    何在 S32DS 3.6 安裝 IAR Eclipse 插件并創(chuàng)建 IAR 項目? There is an article here that explains how to op
    發(fā)表于 04-23 07:44

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

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

    Cortex-M0 處理器介紹

    Cortex-M0 處理器簡介ARM公司的Cortex-M0應(yīng)用于各種微控制器(MCU),并可讓研發(fā)工程師以8位的價位創(chuàng)造32位的的效能,并將傳統(tǒng)的8位和16位的處理器升級到更高效、
    發(fā)表于 01-16 08:04

    Cortex-M產(chǎn)品的特色

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

    Cortex-M內(nèi)核的精確延時的方法

    使用 CYCCNT寄存器來測量執(zhí)行某個任務(wù)所花的周期數(shù),這也可以用作時間基準(zhǔn)相關(guān)的目的(操作系統(tǒng)中統(tǒng)計 CPU使用率可以用到它)?!?Cortex-M的DWT它有一個32位的寄存器叫CYCCNT
    發(fā)表于 11-21 07:51

    Cortex-M級別的轉(zhuǎn)換

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

    MCU調(diào)試典型問題與解決方法

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

    CW32 MCU用什么IDE開發(fā)?

    推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開發(fā)CW32 MCU應(yīng)
    發(fā)表于 11-12 07:52

    何在IAR Embedded Workbench for Arm開發(fā)和調(diào)試Infineon MOTIX MCU

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

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

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

    何在 IAR Embedded Workbench for ARM 開發(fā)環(huán)境啟用可配置數(shù)據(jù)閃存并設(shè)置大?。?/a>

    何在 IAR Embedded Workbench for ARM 開發(fā)環(huán)境啟用可配置數(shù)據(jù)閃
    發(fā)表于 08-26 07:49

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

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

    請問如何在 IAR Embedded Workbench for ARM 開發(fā)環(huán)境啟用可配置數(shù)據(jù)閃存并設(shè)置大???

    何在 IAR Embedded Workbench for ARM 開發(fā)環(huán)境啟用可配置數(shù)據(jù)閃
    發(fā)表于 08-20 06:23

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

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

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

    隨著嵌入式系統(tǒng)變得越來越智能,對嵌入式處理器的要求也越來越高。為了更好應(yīng)對汽車、醫(yī)療和工業(yè)機器人等領(lǐng)域?qū)η度胧教幚砥鞯囊螅?b class='flag-5'>Arm推出了采用Armv8-R架構(gòu)的Cortex-R52。Cortex-R52相對之前的處理器引入了很多
    的頭像 發(fā)表于 06-05 09:57 ?2084次閱讀
    在<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
    安庆市| 临沭县| 淅川县| 鸡东县| 吴堡县| 河北区| 苏州市| 常州市| 泸西县| 乌什县| 凤凰县| 从化市| 无为县| 江川县| 灯塔市| 克东县| 灵宝市| 兴文县| 江孜县| 五华县| 温州市| 南皮县| 沙坪坝区| 安康市| 乐山市| 卓资县| 民乐县| 遂溪县| 贺兰县| 松桃| 托克托县| 穆棱市| 清丰县| 恩平市| 兰考县| 秭归县| 清新县| 灌南县| 海丰县| 尼木县| 宝鸡市|