Cortex-M3和Cortex-M4 Fault異常應(yīng)用之基礎(chǔ)知識(shí)資料下載
2021-04-23 |
pdf |
154.17KB |
次下載 |
2積分
資料介紹
1、摘要
Cortex-M內(nèi)核實(shí)現(xiàn)了一個(gè)高效異常處理模塊,可以捕獲非法內(nèi)存訪問(wèn)和數(shù)個(gè)程序錯(cuò)誤條件。本應(yīng)用筆記從程序員角度描述Cortex-M Fault異常,并且講述在軟件開(kāi)發(fā)周期中的Fault用法。
2、簡(jiǎn)介
Cortex-M3(以下簡(jiǎn)稱CM3)和Cortex-M4(以下簡(jiǎn)稱CM4)內(nèi)核的Fault異常可以捕獲非法內(nèi)存方法和非法編程行為。Fault異常能夠檢測(cè)到以下情況:
總線Fault:在取址、數(shù)據(jù)讀/寫、取中斷向量、進(jìn)入/退出中斷時(shí)寄存器堆棧操作(入棧/出棧)時(shí)檢測(cè)到內(nèi)存訪問(wèn)錯(cuò)誤。
存儲(chǔ)器管理Fault:檢測(cè)到內(nèi)存訪問(wèn)違反了MPU定義的區(qū)域。
用法Fault:檢測(cè)到未定義的指令異常,未對(duì)齊的多重加載/存儲(chǔ)內(nèi)存訪問(wèn)。如果使能相應(yīng)控制位,還可以檢測(cè)出除數(shù)為零以及其他未對(duì)齊的內(nèi)存訪問(wèn)。
硬Fault:如果上面的總線Fault、存儲(chǔ)器管理Fault、用法Fault的處理程序不能被執(zhí)行(例如禁能了總線Fault、存儲(chǔ)器管理Fault、用法Fault異?;蛘咴谶@些異常處理程序執(zhí)行過(guò)程中又出現(xiàn)了Fault)則觸發(fā)硬Fault。
本應(yīng)用筆記描述CM3和CM4的Fault異常用法。系統(tǒng)控制寄存器組中的寄存器可以控制Fault異常或者提供引發(fā)異常的原因信息。
更深入的文檔
完整的異常描述見(jiàn)《Cortex - M3 Technical Reference Manual》或者《Cortex -M4 Technical Reference Manual》,這兩本參考手冊(cè)都可以在中找到。
另一個(gè)很好的參考書(shū)是由Joseph Yiu編寫的《The Definitive Guide to the ARM Cortex-M3》 (這本書(shū)有中文版:宋巖譯的《ARM Cortex-M3權(quán)威指南》)。
3、Cortex-M Fault異常和寄存器
每個(gè)符合CMSIS規(guī)范的編譯器所提供的啟動(dòng)文件(Startup_device)都會(huì)定義好設(shè)備所有的異常和中斷向量。這些向量表定義了異常或中斷處理程序的入口地址。下表給出了一個(gè)典型的向量表,F(xiàn)ault異常向量用藍(lán)色標(biāo)注。
:
:
__Vectors DCD __initial_sp ; 棧頂
DCD Reset_Handler ; 復(fù)位處理程序入口
DCD NMI_Handler ; NMI 處理程序入口
DCD HardFaul t_Handler ; 硬Fault處理程序入口
DCD MemManage_Handler ; 存儲(chǔ)器管理處理程序入口
DCD BusFault_Handler ; 總線Fault 處理程序入口
DCD UsageFault_Handler ; 用法 Fault 處理程序入口
DCD 0 ; 保留
:
:
通??偸鞘鼓苡睩ault異常的,硬Fault異常具有固定的優(yōu)先級(jí),并且優(yōu)先級(jí)高于其它Fault異常以及???斷,但低于NMI。硬Fault異常處理程序在以下情況下會(huì)被執(zhí)行:其它非硬Fault異常(非硬Fault異常是指總線、存儲(chǔ)器管理和用法Fault 異常,下同。)被禁能,并且這些Fault異常被觸發(fā);在執(zhí)行一個(gè)非硬Fault異常處理程序???又產(chǎn)生非硬Fault異常。
所有非硬Fault具有可編程的優(yōu)先級(jí)。當(dāng)Cortex-M內(nèi)核復(fù)位后,這些非硬Fault被禁能,你可以在應(yīng)用軟件中通過(guò)設(shè)置“系統(tǒng)Handler控制及狀態(tài)寄存器(SHCSR)”來(lái)使能非硬Fault異常。這個(gè)寄存器屬于系統(tǒng)控制模寄存器組(SCB)
3.1 Fault異常的控制寄存器
在這里有必要介紹一下系統(tǒng)控制模塊寄存器組(SCB)的成員,這個(gè)寄存器組的定義可以在core_cm3.h文件中,該文件屬于CMSIS Cortex-M3 內(nèi)核外設(shè)接口抽象層的一部分(關(guān)于不清楚CMSIS的,可以自行查找資料)。定義如下:
(1)定義系統(tǒng)控制寄存器組結(jié)構(gòu)體
/** @brief System Control Block (SCB) register structure definition */
typedef struct
{
__I uint32_t CPUID; /*!
__IO uint32_t ICSR; /*!
__IO uint32_t VTOR; /*!
__IO uint32_t AIRCR; /*!
__IO uint32_t SCR; /*!
__IO uint32_t CCR; /*!
__IO uint8_t SHP[12]; /*!
__IO uint32_t SHCSR; /*!
__IO uint32_t CFSR; /*!
__IO uint32_t HFSR; /*!
__IO uint32_t DFSR; /*!
__IO uint32_t MMFAR; /*!
__IO uint32_t BFAR; /*!
__IO uint32_t AFSR; /*!
__I uint32_t PFR[2]; /*!
__I uint32_t DFR; /*!
__I uint32_t ADR; /*!
__I uint32_t MMFR[4]; /*!
__I uint32_t ISAR[5]; /*!
} SCB_Type;
(2) 定義系統(tǒng)控制寄存器組物理空間基地址
(3) 定義指向系統(tǒng)控制寄存器組的指針
#define SCB ((SCB_Type *)SCB_BASE) /*!
通過(guò)以上三步,我們就可以使用結(jié)構(gòu)體指針SCB來(lái)訪問(wèn)系統(tǒng)控制寄存器組的寄存器了,比如給系統(tǒng)控制寄存器SCR賦值:SCB->SCR=0xFF;
SCB->CCR寄存器控制除數(shù)為零和未對(duì)齊內(nèi)存訪問(wèn)是否觸發(fā)用法Fault。
SCB->SHCSR寄存器可用來(lái)使能非硬Fault異常。如果一個(gè)非硬Fault異常被禁能并且相關(guān)Fault發(fā)生,這時(shí)異常會(huì)升級(jí)為硬Fault。SCB->SHP寄存器組控制異常的優(yōu)先級(jí)。
Fault異??刂萍拇嫫髁斜恚?
地址/訪問(wèn)
寄存器
復(fù)位值
描述
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- Cortex-M4和Cortex-M3內(nèi)核的systick不進(jìn)中斷的軟件延時(shí)
- Cortex-M3處理器內(nèi)核與基于Cortex-M3的MCU關(guān)系
- ARM Cortex-M4內(nèi)核MCU
- Cortex-M3 技術(shù)參考手冊(cè) 17次下載
- Cortex-M3技術(shù)參考手冊(cè)下載 8次下載
- Cortex-M3工作模式、異常與中斷介紹資料下載
- Cortex-M3與Cortex-M4對(duì)比資料下載
- ARM cortex-M3 異常處理分析資料下載
- Cortex-M3的異常和中斷資料下載
- Cortex-M3(M0)匯編-啟動(dòng)代碼分析資料下載
- Cortex-M3 NVIC與中斷控制資料下載
- Cortex-M3技術(shù)參考手冊(cè)免費(fèi)下載 186次下載
- Cortex-M4處理器教程之Cortex-M4培訓(xùn)課件免費(fèi)下載 44次下載
- 為何選擇Cortex-M4內(nèi)核 6次下載
- 淺談Cortex-M3和Cortex-M4在高性能信號(hào)處理中 0次下載
- 如何使用Ozone分析Cortex-M異常 2.6k次閱讀
- 強(qiáng)大的Arm? Cortex?-M3內(nèi)核(下) 2.4k次閱讀
- STM32基礎(chǔ)知識(shí)總結(jié) 1.8k次閱讀
- Cortex-M3中斷優(yōu)先級(jí)的相關(guān)知識(shí) 3.8k次閱讀
- 美信cortex-m3內(nèi)核芯片的啟動(dòng)過(guò)程及連接文件介紹 2.4k次閱讀
- 基于FPGA搭建ARM Cortex-M3 SoC軟核 4k次閱讀
- 如何定制一顆ARM Cortex-M3 SoC軟核 3.5k次閱讀
- 米爾科技ARM Cortex-M3教程指南 3.7k次閱讀
- 米爾科技Cortex-M Prototyping System +介紹 2.5k次閱讀
- 米爾科技NXP LPC1857 LPC1850 Cortex-M3開(kāi)發(fā)板概述 5.5k次閱讀
- Cortex-M3處理器中斷和FreeRTOS中斷優(yōu)先級(jí)配置 7.9k次閱讀
- STM32的Cortex-M3中斷異常處理 9k次閱讀
- DesignStart Cortex-M3軟件開(kāi)發(fā)網(wǎng)上課程 6.3k次閱讀
- 為什么說(shuō)Cortex-M是低功耗應(yīng)用的首選 4k次閱讀
- ARM Cortex M3/M4微控制器最大效率設(shè)計(jì)三秘訣 4k次閱讀
下載排行
本周
- 1冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 2安川A1000變頻器中文版說(shuō)明書(shū)
- 20.16 MB | 3次下載 | 3 積分
- 3直流電路的組成和基本定律
- 1.67 MB | 2次下載 | 免費(fèi)
- 4丹佛斯2800系列變頻器說(shuō)明書(shū)
- 8.00 MB | 1次下載 | 5 積分
- 5PC8011同步開(kāi)關(guān)型降壓3.5A單節(jié)鋰電池充電管理電路技術(shù)手冊(cè)
- 0.74 MB | 1次下載 | 免費(fèi)
- 6ES7243E+ES8311音頻錄制與播放電路資料
- 0.06 MB | 1次下載 | 5 積分
- 7SDM02 激光測(cè)距模塊產(chǎn)品手冊(cè)
- 0.43 MB | 1次下載 | 免費(fèi)
- 8SDFM 激光測(cè)距模塊模組手冊(cè)
- 0.54 MB | 1次下載 | 免費(fèi)
本月
- 1CH341編程器軟件NeoProgrammer_2.2.0.10
- 20.47 MB | 170次下載 | 1 積分
- 22025智能家居傳感器市場(chǎng)分析及創(chuàng)新應(yīng)用
- 3.11 MB | 43次下載 | 免費(fèi)
- 3RV1126B系列開(kāi)發(fā)板產(chǎn)品資料
- 4.19 MB | 18次下載 | 免費(fèi)
- 4CH341編程軟件下載
- 2.50 MB | 16次下載 | 5 積分
- 5全志系列-米爾基于T153核心板開(kāi)發(fā)板 四核異構(gòu)、3路千兆網(wǎng),賦能多元化工業(yè)場(chǎng)景
- 3.05 MB | 12次下載 | 免費(fèi)
- 6【開(kāi)源】60余套STM32單片機(jī)、嵌入式Linux、物聯(lián)網(wǎng)、人工智能項(xiàng)目案例及入門學(xué)習(xí)資源包
- 10.55 MB | 8次下載 | 免費(fèi)
- 7冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 8特斯拉MODEL S車載充電機(jī)主電路回路原理圖
- 0.81 MB | 4次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233094次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191448次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183356次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81604次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73824次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問(wèn)
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論