中斷的概念
指 cpu 在正常執行程式時,由於內部或外部事件引起 cpu 暫時中止執行現行程式,轉
去執行請求 cpu 為其服務的那個外設或事件的服務程式,待該服務程式執行完後又返
回到被中止的程式這樣乙個過程。
中斷的優先順序:
為使系統能及時響應並處理發生的所有中斷,系統根據引起中斷事件的重要性和緊迫程度,硬體將中斷源分為若干個級別,稱作中斷優先順序。
中斷的巢狀:
是指中斷系統正在執行乙個中斷服務時,有另乙個優先順序更高的中斷提出中斷請求,這時會暫時終止當前正在執行的級別較低的中斷源的服務程式,去處理級別更高的中斷源,待處理完畢,再返回到被中斷了的中斷服務程式繼續執行,這個過程就是中斷巢狀。
preserve8
先是在啟動**裡設定異常向量表
start
b reset
b halt
b halt
b halt
b halt
b halt
b _irq
b halt
reset
(關閉看門狗)
ldr sp,=(0x32000000+0x100000) ;在reset中設定reset異常的棧指標
mov r0,#0x53 ; 設定 arm9 的工作模式和中斷允許
msr cpsr_cxsf,r0
_irq
ldr sp,=(0x31000000+0x100000)
s***b sp!,
import do_irq
bl do_irq
ldmia sp!,^ ;壓棧內容出棧
halt
b halt
void do_irq() //中斷服務函式
{ unsigned int i;
for(i=0; i<4; i++) //四個按鍵
{ if(srcpnd1 & (1<
ARM9 中斷管理
s3c2410的中斷異常處理模組總共由以下暫存器構成 srcpnd source pending register intmod interrupt mode register intmsk interrupt mask register priority priority register int...
ARM9學習筆記之 MMU
我記得有一次我去應聘arm linux軟體工程師。結果被問到arm中的虛擬記憶體是怎麼管理的。由於我只對x86平台下的mmu了解,所以我被問倒了。原來我所學的只是皮毛。還有很多東西值得我去深入。要做arm linux下的驅動,熟悉虛擬記憶體應該是必須的。arm9中的虛擬記憶體是怎麼實現的呢?以下是我...
ARM9學習筆記之 彙編
arm系列晶元與pc系列 可能我說法不太準確 晶元在指令設計上就有本質的區別。arm中每條指令是精簡指令集要麼是32位,要麼是16位。而pc的指令是複雜指令集,一條指令可以由多個位元組組成。1.關於函式呼叫方法 在arm彙編中,函式呼叫非常靈活。1 bl指令 bl initmem 呼叫 initme...