四、DM6437 中断向量表配置
1. 编写中断服务例程
在.c源文件中编写ISR函数c_intXX,用于中断处理,如:
interrupt void c_intXX (void)
{
…;
}
注:对于硬件中断而言,XX = 00~15。
2.初始化中断向量表,并在内存段中的中断向量表中配置好对应的中断向量
首先是把中断向量表定位到某一内存段中,我们可以在cmd文件中配置中断向量表的内存映射,如:
MEMORY
{
VECS:
o = 0x10800000 l = 0x00000400
MEMTEST:
o = 0x10800400 l = 0x00000200
IRAM:
o = 0x10800600 l = 0x0001FA00
DDR2:
o = 0x80000000 l = 0x10000000
}
SECTIONS
{
.bss
>
IRAM
.cinit
>
IRAM
.cio
>
IRAM
.const
>
IRAM
.data
>
IRAM
.far
>
IRAM
.stack
>
IRAM
.switch
>
IRAM
.sysmem
>
IRAM
.text
>
IRAM
.vecs
>
VECS
.ddr2
>
DDR2
}
然后建立一个.asm文件,用以配置中断向量表中的中断向量,我们需要声明一些全局变量,以便其他源文件可以引用这些变量或者引用其他源文件的变量,如:
*-----------------------------------------------------------------* Global symbols defined here and exported out of this file
*--------------------------------------------------------------------
.global _vectors
.global _c_int00
.global _vector1
.global _vector2
;RSVD保留
.global _vector3
;RSVD保留
.global _vector4
.global _vector5
.global _vector6
.global _vector7
.global _vector8
.global _vector9
.global _vector10
.global _vector11
.global _vector12
.global _vector13
.global _c_int14_vencint ; Hookup the c_int14 ISR in main()
.global _vector15
因为引用了rts的_c_int00中断,即RESET中断,因此需要引入这个符号:
.ref
_c_int00 |