哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

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

電子工程師 ? 來(lái)源:IAR愛(ài)亞系統(tǒng) ? 作者:IAR愛(ài)亞系統(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)等。在錯(cuò)誤異常處理上,Cortex-M提供了強(qiáng)大的錯(cuò)誤異常機(jī)制,幫助提升系統(tǒng)的穩(wěn)健性。

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

關(guān)于 Cortex-M Fault

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

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

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

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

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

- 未定義的指令

- 非法未對(duì)齊訪問(wèn)

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

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

- 除零操作

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

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

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

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

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

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

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

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

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

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

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

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

注意事項(xiàng)

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

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

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

總結(jié)

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

審核編輯 :李倩

聲明:本文內(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)投訴
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    3052

    瀏覽量

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

    關(guān)注

    5

    文章

    414

    瀏覽量

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

    關(guān)注

    2

    文章

    234

    瀏覽量

    31177

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Cortex-M0+處理器的HardFault錯(cuò)誤介紹

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

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

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

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

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

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

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

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

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

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

    隨著嵌入式系統(tǒng)變得越來(lái)越智能,對(duì)嵌入式處理器的要求也越來(lái)越高。為了更好應(yīng)對(duì)汽車、醫(yī)療和工業(yè)機(jī)器人等領(lǐng)域?qū)η度胧教幚砥鞯囊螅?b class='flag-5'>Arm推出了采用Armv8-R架構(gòu)的Cortex-R52。Cortex-R52相對(duì)之前的處理器引入了很多
    的頭像 發(fā)表于 06-05 09:57 ?2035次閱讀
    在<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ù)與變量?jī)?nèi)存布局優(yōu)化精控方法

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

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

    2025年4月22日,全場(chǎng)景智能車芯引領(lǐng)者芯馳科技與全球嵌入式軟件開(kāi)發(fā)解決方案領(lǐng)導(dǎo)者IAR正式宣布,IAR Embedded Workbench for
    的頭像 發(fā)表于 04-23 15:45 ?1614次閱讀
    周至县| 安新县| 敖汉旗| 永泰县| 洪洞县| 武山县| 定西市| 尉氏县| 满城县| 陇西县| 泰州市| 仁怀市| 阜新市| 武胜县| 吉木萨尔县| 房山区| 濮阳市| 麻江县| 东港市| 乐业县| 同心县| 尚志市| 灵宝市| 若尔盖县| 西乌珠穆沁旗| 榆中县| 潜山县| 陆河县| 富源县| 青龙| 阿拉善左旗| 百色市| 沧州市| 广饶县| 浦北县| 古浪县| 伊吾县| 方山县| 涟水县| 文成县| 新泰市|