新聞中心

ARM中斷的基本過程

作者: 時間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
ARM中斷基本過程

在IRQ0腳給個上升沿后,過程是這樣的(比較通用的過程)。
1)如果你沒有打開該中斷的使能寄存器,沒有任何反應(yīng)。
2)如果你打開了使能寄存器,但在對應(yīng)的屏蔽寄存器中屏蔽了該中斷,也沒有任何反應(yīng)。
3)上述兩個寄存器都設(shè)置正確了,中斷產(chǎn)生了,CPU保存當(dāng)前程序運行環(huán)境,跳到中斷入口,ARM芯片一般是0x?地址處。
4)如果你沒有設(shè)置中斷向量,即0x?處不是你的代碼,程序就會飛掉,當(dāng)然也可能正常運行,這種情況一般發(fā)生在正好飛到正常代碼處。
5)設(shè)置好中斷向量了,中斷向量一般是個跳轉(zhuǎn)語句,跳到你的正式的中斷處理過程,在這里你可以關(guān)閉所有中斷,清中斷,處理等等,然后退出。記住某些處理器一定要清中斷,否則下次再給個上升沿就沒有反應(yīng)了。

本文引用地址:http://butianyuan.cn/article/201611/316763.htm

中斷路徑

如果是irq中斷

產(chǎn)生irq異常中斷 轉(zhuǎn)到 0x18 1 跳 中斷跳

如果啟用向量中斷模式

自動轉(zhuǎn)向?qū)?yīng)向量地址 每地址對應(yīng)一條跳轉(zhuǎn)指令 2 跳

跳轉(zhuǎn)到中斷處理程序

如果使用匯編編寫中斷處理程序

在該處即可編寫處理程序

如果使用c語言編寫中斷處理程序

需要添加與c語言接口程序 3 跳

方法:1 匯編編寫

在內(nèi)存空間定義一向量表,用來存放各中斷c語言中斷處理程序入口地址[即函數(shù)入口地址],

在上述程序跳轉(zhuǎn)到處編寫 將c語言處理程序入口地址放入pc (即跳轉(zhuǎn)到c函數(shù)處)。

2 c編寫

在內(nèi)存空間定義指針表[與匯編向量表對應(yīng)],用來存放各中斷匯編轉(zhuǎn)向c函數(shù)入口地址,

編寫中斷處理函數(shù),將對應(yīng)中斷指針內(nèi)容放入函數(shù)入口地址。

如果不啟用中斷向量模式

從0x18直接轉(zhuǎn)向中斷處理程序即可

小結(jié): 上述1 跳為向量中斷模式自動完成,可加快尋找中斷源。

2 跳為與c語言相結(jié)合,匯編和c利用共同定義的中斷向量地址表完成掛鉤。



關(guān)鍵詞: ARM中斷基本過

評論


技術(shù)專區(qū)

關(guān)閉