工作模式
線程模式(Thread mode):處理器復(fù)位或異常退出時(shí)為此模式。此模式下的代碼可以是特權(quán)代碼也可以是用戶代碼,通過CONTROL[0]控制。
處理模式(Handler mode):出現(xiàn)異常(包括中斷)時(shí)進(jìn)入此模式,此模式下所有代碼為特權(quán)訪問。
代碼權(quán)限
特權(quán)訪問:對處理器資源擁有完全訪問限權(quán);處理器復(fù)位后進(jìn)入此訪問模式;清零 CONTROL[0]進(jìn)入用戶模式。
用戶訪問:禁止訪問多數(shù)系統(tǒng)寄存器。只能通過進(jìn)入異常(中斷)來返回特權(quán)模式。進(jìn)入異常前是用戶級訪問,則退出異常時(shí)自動回到用戶及,除非在異常中修改CONTROL[0]位。
工作狀態(tài)
Thumb狀態(tài)(正常執(zhí)行指令狀態(tài))和調(diào)試狀態(tài)。
寄存器
r0-r12:通用寄存器,其中r8-r12只能被32位指令訪問。
r13(SP):堆棧指針;線程模式時(shí)可以在線程堆棧和主堆棧之間切換,但處理模式只使用主堆棧。兩個(gè)堆棧同一時(shí)刻只有一個(gè)可見,進(jìn)入、退出異常時(shí)自動切換堆棧。
r14(LR):鏈接寄存器,保存子程序或異常的返回地址(要實(shí)現(xiàn)嵌套,必須入棧)。
r15(PC):程序計(jì)數(shù)器。
xPSR:特殊用途的程序狀態(tài)寄存器。
異常
進(jìn)入異常步驟:
1.處理器在當(dāng)前堆棧上把xPSR、PC、LR、r12、r3~r0八個(gè)寄存器自動依次入棧。
2.讀取向量表(如果是復(fù)位中斷,更新SP值)。
3.根據(jù)向量表更新PC值。
4.加載新PC處的指令(2、3、4步與1步同時(shí)進(jìn)行)。
5.更新LR為EXC_RETURN(EXC_RETURN表示退出異常后返回的模式及使用的堆棧)。
退出異常步驟
1.根據(jù)EXC_RETURN指示的堆棧,彈出進(jìn)入中斷時(shí)被壓棧的8個(gè)寄存器。
2.從剛出棧的IPSR寄存器[8:0]位檢測恢復(fù)到那個(gè)異常(此時(shí)為嵌套中斷中),若為0則恢復(fù)到線程模式。
3.根據(jù)EXC_RETURN,選擇使用相應(yīng)SP。
末尾連鎖(Tail-chaining):當(dāng)前正在執(zhí)行中斷,又有一個(gè)中斷到來且這個(gè)中斷優(yōu)先級比正在執(zhí)行的中斷優(yōu)先級低(如果有其他被壓棧的低優(yōu)先級中斷則要比這些中斷優(yōu)先級高),這個(gè)中斷暫時(shí)被掛起,等到當(dāng)前中斷執(zhí)行完后不再執(zhí)行堆棧操作,而直接進(jìn)入掛起的中斷。
遲來:前一個(gè)中斷還沒有進(jìn)入執(zhí)行階段(但處理器狀態(tài)已經(jīng)保存),后面來了一個(gè)高優(yōu)先級中,則前一個(gè)中斷被搶占,后來的高優(yōu)先級中斷不需要再保存寄存器狀態(tài)。
中斷
Cortex-M3中有兩個(gè)優(yōu)先級的概念——搶占式優(yōu)先級和響應(yīng)優(yōu)先級,有人把響應(yīng)優(yōu)先級稱作'亞優(yōu)先級'或'副優(yōu)先級',每個(gè)中斷源都需要被指定這兩種優(yōu)先級。
具有高搶占式優(yōu)先級的中斷可以在具有低搶占式優(yōu)先級的中斷處理過程中被響應(yīng),即中斷嵌套,或者說高搶占式優(yōu)先級的中斷可以嵌套低搶占式優(yōu)先級的中斷。
當(dāng)兩個(gè)中斷源的搶占式優(yōu)先級相同時(shí),這兩個(gè)中斷將沒有嵌套關(guān)系,當(dāng)一個(gè)中斷到來后,如果正在處理另一個(gè)中斷,這個(gè)后到來的中斷就要等到前一個(gè)中斷處理完之后才能被處理。如果這兩個(gè)中斷同時(shí)到達(dá),則中斷控制器根據(jù)他們的響應(yīng)優(yōu)先級高低來決定先處理哪一個(gè);如果他們的搶占式優(yōu)先級和響應(yīng)優(yōu)先級都相等,則根據(jù)他們在中斷表中的排位順序決定先處理哪一個(gè)。
-
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124563 -
中斷
+關(guān)注
關(guān)注
5文章
905瀏覽量
42813 -
Cortex-M3
+關(guān)注
關(guān)注
9文章
276瀏覽量
60271
原文標(biāo)題:Cortex-M3的一些關(guān)鍵概念!
文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Cortex-M3處理器是什么
STM32的核心Cortex-M3處理器是什么
Cortex-M3處理器中斷與FreeRTOS中斷優(yōu)先級配置
STM32的核心Cortex-M3處理器的標(biāo)準(zhǔn)化是什么意思
基于ARM Cortex-M3內(nèi)核的STM32處理器有何性能
制造一種基于Cortex-M0和Cortex-M3處理器的SoC
基于ARM Cortex-M3處理器的電源設(shè)計(jì)及應(yīng)用

STM32系列ARM Cortex-M3處理器微控制器原理與實(shí)踐

基于Cortex-M3處理器的開關(guān)磁阻電機(jī)控制器設(shè)計(jì)

STM32系列Cortex-M3處理器編程手冊免費(fèi)下載

Cortex-M3處理器內(nèi)核與基于Cortex-M3的MCU關(guān)系

評論