TriCore中斷向量表
由圖1可知,TriCore中的BIV寄存器(Base Interrupt Vector Table Pointer )指向中斷向量表的入口地址,中斷向量大小可設置為32或者8字節,由BIV.VSS位決定。
不同優先級中斷向量所對應的地址,可經下方公式計算可得。
if(BIV.VSS==1’b0) ISR_Entry_PC={BIV[31:1],1’b0}|{PIPN<<5}; else ISR_Entry_PC?=?{BIV[31:1],1’b0}?|?{PIPN<<3};Fig1
中斷定義與實現
使用ADS (AURIX Development Studio) 導入SMU_IR_Alarm工程為例,打開SMU_IR_Alarm.c可以發現是宏IFX_INTERRUPT(isr, vectabNum, prio)用來定義中斷處理函數IFX_INTERRUPT(ISR_SMU_Alarm, 0, ISR_PRIORITY_SMU_INT0)。
#defineIFX_INTERRUPT(isr,vectabNum,prio)IFX_INTERRUPT_INTERNAL(isr,vectabNum,prio) #defineIFX_INTERRUPT_FAST(isr,vectabNum,prio)void__interrupt_fast(prio)__vector_table(vectabNum)isr(void)
編譯后,查看MAP文件可知ISR_SMU_Alarm函數存放于0x80001a82,
Fig2
通過上面的公式計算優先級ISR_PRIORITY_SMU_INT0(10)中斷向量的地址為0x802fe140 = 0x802fe000 |(0xa << 5) 。
在優先級ISR_PRIORITY_SMU_INT0(10)中斷觸發后,TriCore中的PC指針會變成0x802fe140,并執行中斷向量中的匯編指令使得PC指針跳轉到中斷函數ISR_SMU_Alarm中運行。
Fig3
CSA運行機制圖解
進入ISR_SMU_Alarm中斷處理函數時,PCXI,FCX寄存器由于要保存CSA而變化如下,
Fig4 Enter Interrupt
同時CSA鏈表結構也需相應的調整。
Fig4 進入中斷處理函數時的CSA鏈表
當退出ISR_SMU_Alarm中斷處理函數后,PCXI,FCX寄存器會恢復,如下所示,
Fig5 Exit Interrupt
CSA鏈表結構也會跟著變化。
Fig6 退出中斷處理函數時的CSA鏈表
可以發現在進入中斷處理函數后,Upper CSA和Lower CSA雙雙被保存,小編在《TriCore的CSA機制介紹》提到過Upper CSA為硬件自動保存,而Lower CSA需要開發者自己手動保存的,但是查看ISR_SMU_Alarm中斷處理函數代碼,并沒有發現保存Lower CSA的代碼,那到底是怎么一回事呢?
voidISR_SMU_Alarm(void) { IfxSmu_clearAlarmStatus(IfxSmu_Alarm_Software_Alarm0);/*Clearalarmstatusflag*/ IfxSmu_clearAlarmExecutedStatus(IfxSmu_AlarmExecutionStatus_irq0);/*ClearAlarmExecutionStatusregisterbit*/ IfxPort_setPinState(LED,IfxPort_State_low);/*TurnonLED(LEDislow-levelactive)*/ }
其實這跟編譯器有關,在實際使用時,Tasking編譯器會為中斷和Trap自動生成svlcx保存Lower CSA,如ISR_SMU_Alarm中斷處理函數對應的匯編指令所示。
Fig7 中斷處理函數的匯編指令
總結
在本文中,小編介紹了在ADS (AURIX Development Studio)中如何定義中斷處理函數,并解釋了中斷發生時的PC指針跳轉過程和CSA鏈表結構變化,希望對小伙伴能有所幫助,最后再提醒一下,在開發過程,針對相同CPU,避免對同一中斷優先級定義不同的中斷處理函數。
審核編輯:湯梓紅
-
寄存器
+關注
關注
31文章
5317瀏覽量
120008 -
中斷
+關注
關注
5文章
895瀏覽量
41394 -
函數
+關注
關注
3文章
4306瀏覽量
62430 -
指針
+關注
關注
1文章
480瀏覽量
70510 -
TriCore
+關注
關注
0文章
15瀏覽量
11737 -
Aurix
+關注
關注
1文章
71瀏覽量
10896
原文標題:AURIX Development Studio中的中斷處理函數實現
文章出處:【微信號:MCU頻道,微信公眾號:MCU頻道】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論