1) DSP('5402)的软件中断和硬件中断在使用时,有什么区别?2)'5402的中断向量地址是否和8051单片机一样,是固定的?3)中断如何调用?
1).软件中断通常用于调试过程中或者程序有模拟中断要求时。软中断有点想DOS下的INT 21H,它的入口地址是确定的,不会受代码长度的影响。
2).不是,0X0FF80是固定的,也就是说默认情况下中断起始在0X0FF80,但可通过改变PMST中的中断向量位置设置改变它。
3).中断调用和单片机的一样呀,呵呵
请问关于pmst中iptr设置中断向量表,具体这九位如何对应实际向量地址的?怎么计算?比如1ff是ff80,为什么00011000就是0c00了呢?
iptr存放中断向量区的高9位地址,在其后补七个零即是实际中断向量地址:
实际地址:1111 1111 1000 0000 (ff80h)iptr存放:1111 1111 1 (1ffh)再举一例:实际地址:0000 1100 0000 0000 (0c00h)iptr存放:0000 1100 0 (018h)
c5402的中断复位区域为rom,(ff80~)调试时无法写入代码的,那如果我要调试中断怎么办?比如说产生了一个中断,系统便要去ff80+n去找中断服务程序的入口,而那个区域在调试的时候不能写入,怎么办?
要先重定向到ram区域才行,你可在程序的开始重定向。
就是在程序一开始设置PMST:
首先定义:K_IPTR .set 00011000b<<07 ;point 0C00H 新的向量区K_MP_MC .set 0b<<06 K_OVLY .set 1b<<05 K_AVIS .set 0b<<04 K_DROM .set 0b<<03 K_CLKOFF .set 0b<<02 K_PMST_RESR .set 00b<<0 K_PMST .set K_IPTR|K_MP_MC|K_OVLY| K_AVIS|K_DROM|K_CLKOFF|K_PMST_RESR
在程序的开始:STM #K_PMST,PMST ;从此向量区就改了!
明白了吗?
是否自己定义的中断都要在中断向量表中说明,但中断向量表是在 On-chip ROM(因为要用bootloader,所以要映射在片ROM)上的,如何重定向,定向在何处。
自己定义的中断必须在中断向量表中说明。Pmst的高9位可以决定了向量表的位置。对C54X你可以任意修改高位地址来决定中断向量表。例如,C54X复位后 PMST的15-7BIT全为1,所以中断向量表的位置在FF80。