今天发现,DM6437的warm reset,对应的到复位中断时可以发现,此处的中断复位服务程序并不会起到作用。为何,因为DM6437一旦发生RESET引脚拉低就会出现ISTP复位到默认值(0x00100000)。
涉及到CPU Core核心中断寄存器如下,属于其的控制寄存器组,不同于一般的外设寄存器,有CPU负责,和A,B寄存器组类似。
IER(中断使能寄存器)
IFR(中断标志寄存器)
ISR(中断设置寄存器)
ICR(中断清除寄存器)
ISTP(中断向量表起始地址寄存器)中断向量程序的地址可以通过 ISTP寄存器进行重新映射
按道理,复位后,程序该从_c_int00再到main执行,其实不然,对于DM6437来说,启动从boot模式下面进行。一旦Warm reset。就从0x00100000的RBL所在处开始执行,表明dsp从新运行了一次。
理想状况下是,dsp复位,产生的复位中断在中断向量表IST中,能再次跳入到main函数去执行,而抛弃掉前面的RBL和SBL。
故依次,总结出,DM6437的复位中断可以不配置任何的服务程序。因为当对ISTP进行relocate后,一旦复位ISTP的ISTB回归到0x00100000时,即找不到复位中断的服务程序,也就没有意义。要不就是不进行relocate,但这样没有意义,因为复位了都是重新开始RBL执行的,这个默认位置是不允许建立向量表的,是BOOT ROM区域。所以一句话,不需要初始化复位的中断服务程序,向量表可以relocate到任意位置。其他中断就可以正常工作啦.