資料介紹
1、摘要
Cortex-M內核實現了一個高效異常處理模塊,可以捕獲非法內存訪問和數個程序錯誤條件。本應用筆記從程序員角度描述Cortex-M Fault異常,并且講述在軟件開發周期中的Fault用法。
2、簡介
Cortex-M3(以下簡稱CM3)和Cortex-M4(以下簡稱CM4)內核的Fault異常可以捕獲非法內存方法和非法編程行為。Fault異常能夠檢測到以下情況:
總線Fault:在取址、數據讀/寫、取中斷向量、進入/退出中斷時寄存器堆棧操作(入棧/出棧)時檢測到內存訪問錯誤。
存儲器管理Fault:檢測到內存訪問違反了MPU定義的區域。
用法Fault:檢測到未定義的指令異常,未對齊的多重加載/存儲內存訪問。如果使能相應控制位,還可以檢測出除數為零以及其他未對齊的內存訪問。
硬Fault:如果上面的總線Fault、存儲器管理Fault、用法Fault的處理程序不能被執行(例如禁能了總線Fault、存儲器管理Fault、用法Fault異常或者在這些異常處理程序執行過程中又出現了Fault)則觸發硬Fault。
本應用筆記描述CM3和CM4的Fault異常用法。系統控制寄存器組中的寄存器可以控制Fault異常或者提供引發異常的原因信息。
更深入的文檔
完整的異常描述見《Cortex - M3 Technical Reference Manual》或者《Cortex -M4 Technical Reference Manual》,這兩本參考手冊都可以在中找到。
另一個很好的參考書是由Joseph Yiu編寫的《The Definitive Guide to the ARM Cortex-M3》 (這本書有中文版:宋巖譯的《ARM Cortex-M3權威指南》)。
3、Cortex-M Fault異常和寄存器
每個符合CMSIS規范的編譯器所提供的啟動文件(Startup_device)都會定義好設備所有的異常和中斷向量。這些向量表定義了異常或中斷處理程序的入口地址。下表給出了一個典型的向量表,Fault異常向量用藍色標注。
:
:
__Vectors DCD __initial_sp ; 棧頂
DCD Reset_Handler ; 復位處理程序入口
DCD NMI_Handler ; NMI 處理程序入口
DCD HardFaul t_Handler ; 硬Fault處理程序入口
DCD MemManage_Handler ; 存儲器管理處理程序入口
DCD BusFault_Handler ; 總線Fault 處理程序入口
DCD UsageFault_Handler ; 用法 Fault 處理程序入口
DCD 0 ; 保留
:
:
通常總是使能硬Fault異常的,硬Fault異常具有固定的優先級,并且優先級高于其它Fault異常以及???斷,但低于NMI。硬Fault異常處理程序在以下情況下會被執行:其它非硬Fault異常(非硬Fault異常是指總線、存儲器管理和用法Fault 異常,下同。)被禁能,并且這些Fault異常被觸發;在執行一個非硬Fault異常處理程序???又產生非硬Fault異常。
所有非硬Fault具有可編程的優先級。當Cortex-M內核復位后,這些非硬Fault被禁能,你可以在應用軟件中通過設置“系統Handler控制及狀態寄存器(SHCSR)”來使能非硬Fault異常。這個寄存器屬于系統控制模寄存器組(SCB)
3.1 Fault異常的控制寄存器
在這里有必要介紹一下系統控制模塊寄存器組(SCB)的成員,這個寄存器組的定義可以在core_cm3.h文件中,該文件屬于CMSIS Cortex-M3 內核外設接口抽象層的一部分(關于不清楚CMSIS的,可以自行查找資料)。定義如下:
(1)定義系統控制寄存器組結構體
/** @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) 定義系統控制寄存器組物理空間基地址
(3) 定義指向系統控制寄存器組的指針
#define SCB ((SCB_Type *)SCB_BASE) /*!
通過以上三步,我們就可以使用結構體指針SCB來訪問系統控制寄存器組的寄存器了,比如給系統控制寄存器SCR賦值:SCB->SCR=0xFF;
SCB->CCR寄存器控制除數為零和未對齊內存訪問是否觸發用法Fault。
SCB->SHCSR寄存器可用來使能非硬Fault異常。如果一個非硬Fault異常被禁能并且相關Fault發生,這時異常會升級為硬Fault。SCB->SHP寄存器組控制異常的優先級。
Fault異常控制寄存器列表:
地址/訪問
寄存器
復位值
描述
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- Cortex-M4和Cortex-M3內核的systick不進中斷的軟件延時
- ARM Cortex-M4內核MCU
- Cortex-M3 技術參考手冊 17次下載
- Cortex-M3技術參考手冊下載 8次下載
- Cortex-M3工作模式、異常與中斷介紹資料下載
- Cortex-M3與Cortex-M4對比資料下載
- ARM cortex-M3 異常處理分析資料下載
- Cortex-M3的異常和中斷資料下載
- 《ARM Cortex-M3權威指南》筆記資料下載
- Cortex-M3(M0)匯編-啟動代碼分析資料下載
- Cortex-M3 NVIC與中斷控制資料下載
- AN-1160: 基于Cortex-M3的ADuCxxx串行下載協議
- Cortex-M3技術參考手冊免費下載 180次下載
- Cortex-M4處理器教程之Cortex-M4培訓課件免費下載 42次下載
- 淺談Cortex-M3和Cortex-M4在高性能信號處理中 0次下載
- 強大的Arm? Cortex?-M3內核(下) 670次閱讀
- STM32基礎知識總結 673次閱讀
- Cortex-M3中斷優先級的相關知識 2233次閱讀
- 美信cortex-m3內核芯片的啟動過程及連接文件介紹 1319次閱讀
- 基于FPGA搭建ARM Cortex-M3 SoC軟核 2335次閱讀
- 如何定制一顆ARM Cortex-M3 SoC軟核 1975次閱讀
- 米爾科技ARM Cortex-M3教程指南 2628次閱讀
- 米爾科技Cortex-M Prototyping System +介紹 1661次閱讀
- 米爾科技NXP LPC1857 LPC1850 Cortex-M3開發板概述 4170次閱讀
- Cortex-M3處理器中斷和FreeRTOS中斷優先級配置 6920次閱讀
- 學習Cortex-M3時,我們必須要知道必要的縮略語 4342次閱讀
- STM32的Cortex-M3中斷異常處理 7958次閱讀
- DesignStart Cortex-M3軟件開發網上課程 5729次閱讀
- 為什么說Cortex-M是低功耗應用的首選 3409次閱讀
- ARM Cortex M3/M4微控制器最大效率設計三秘訣 3515次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多