Cortex M3異常筆記

2021-07-05 21:44:26 字數 594 閱讀 1527

異常型別

cortex-m3編號為1-15對應系統異常,大於等於16的全部是核心級額外部中斷,除個別異常(復位,nmi,硬fault)的優先順序被定死之外,其他異常優先順序都是可以程式設計的。

如果乙個發生的異常不能即刻響應,就稱它被「懸起」(pending)。少數異常時不能被懸起的。乙個異常被懸起的原因有:

1.系統當前正在執行乙個更高優先順序異常的服務例程。

2.相關掩蔽位的設定導致該異常被除能。

異常被懸起時,「懸起狀態暫存器」儲存了該異常請求,待到該異常能被響應時執行其服務例程。

2.異常的優先順序

優先順序對於異常來說,它會決定乙個異常是否被掩蔽,以及在未掩蔽的情況下何時可以可以響應。

m3規定最少使用3個位來表達優先順序,即至少要支援8級優先順序。

搶占優先順序與子優先順序

nvic 中有乙個暫存器是「應用程式中斷及復位控制暫存器」(內容見表 7.5),它裡面有乙個位段名為「優先順序組」。該位段的值對每乙個優先順序可配置的異常都有影響——把其優先順序分為 2 個 位段: msb所在的位段(左邊的)對應搶占優先順序,而 lsb 所在的位段(右邊的) 對應子優先順序。

Cortex M3復位序列

在離開復位狀態後,cm3 做的第一件事就是讀取下列兩個32 位整數的值 從位址 0x0000,0000 處取出msp 的初始值。從位址 0x0000,0004 處取出pc 的初始值 這個值是復位向量,lsb 必須是1。然後從這個值所對應的位址處取指。請注意,這與傳統的arm 架構不同 其實也和絕大多...

Cortex M3核心異常與外部中斷剖析

本文所有的測試是基於stm32f103測試的,因為stm32f103是cortex m3核心的晶元,而且恰好我手裡有這個晶元,所以就用它了。為了清晰明了,全部使用暫存器方式測試。在使用cortex m3系列核心晶元的時候必須掌握其中的nvic中斷向量控制器。必須搞清楚其中的每乙個細節。nvic管理2...

qemu除錯cortex m3程式

1.安裝arm none eabi arm 2011.09 69 arm none eabi.bin 2.安裝qemu 3.建立原始檔 4.arm none eabi gcc o main.elf hello.c g mcpu cortex m3 mthumb t generic hosted.ld...