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文章
5336浏览量
120230 -
中断
+关注
关注
5文章
898浏览量
41470 -
函数
+关注
关注
3文章
4327浏览量
62569 -
指针
+关注
关注
1文章
480浏览量
70551 -
TriCore
+关注
关注
0文章
15浏览量
11748 -
Aurix
+关注
关注
1文章
71浏览量
10910
原文标题:AURIX Development Studio中的中断处理函数实现
文章出处:【微信号:MCU频道,微信公众号:MCU频道】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论