在str711上使用USB进行IAP,因为使用的是USB进行下载dfu格式目标文件,IAP程序中使用到了usb的中断。用户程序中也有中断要处理,用户程序的中断处理用到了lut1lut“如何利用STR71x的UART进行IAP 补充说明 版本2.0”的方法: extern u32 T0TIMI_Addr; u32 * p = (u32 *)& T0TIMI_Addr; u8 bCounter; u32 offset;
EIC->ICR = 0x00000000; EIC->IER = 0x00000000; EIC->IPR = 0xFFFFFFFF; EIC->FIR = 0x0000000C; EIC->CIPR = 0x00000000; EIC->IVR = 0xEA000000; // IVR = high half of "B offset" instruction
for (bCounter=0;bCounter<32;bCounter++) { offset = (((*p)&0xffff)+0x7E0) >> 2; p++; EIC->SIR[bCounter] = offset << 16; } }
IAP程序vect.s中中断入口改为LDR PC, =0x400040f8;用户程序用户J-link烧写到0x40004000。用户程序的中断都可以响应。这样IAP程序无法使用中断。
然后我将IAP程序vect.s中中断入口还原LDR PC, IRQ_Addr,即将0x40000000。IAP程序的usb中断才能实现,且可以将用户的dfu格式的文件下载到ox40004000,且可以运行,但此时用户的中断是不能响应的。
我的问题是有两套中断系统都要响应:一是IAP程序里的中断,二是用户程序里的中断。请教各位! 不甚感谢! |