
keil生成的.axf或者.elf都是可以执行的镜像文件。1 t6 H, r( u P! z- a' [* S IAP User Program 需要注意的问题 g* D7 _0 {. j! @9 L* c2 T 要设置好好中断向量的问题,假设User Program 开始地址是(0x08008000),那么中断向量就必须设在在0x08008000处,中断向量要设置program的开始的位置。 User Program到IAP主要是要设置好中断向量,跳转前要注意设置中断向量在IAP程序(0x08000000)的开始地方即(0x08000000)。还要关闭所有中断,如下操作:9 {( O! `' V6 Q NVIC_SetVectorTable(0x08000000, 0x00); 6 q3 g; o$ i) _8 A __disable_irq();4 ~! D4 x- Q: h) n, e- b# C ; _$ V- ]- E( D 这样子就可以设置好了。注意programIAP 没有升级 然后直接IAP到program,会导致program没有正常工作,目前的解决方法是:programIAP后,IAP可以让系统重启,然后就可以了。 系统重启的函数如下:, f, ~2 F* x7 d2 R static __INLINE void NVIC_SystemReset(void) {# g3 V! d7 Y+ r( J SCB->AIRCR = ((0x5FA AIRCR & SCB_AIRCR_PRIGROUP_Msk) | SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ __DSB(); /* Ensure completion of memory access */ while(1); /* wait until reset */6 o5 i+ ^) m F6 L# E! e" N" K }& X2 `8 F @: ^& L" S1 e& w 此函数可以让系统重启。 IAP可以设置任何串口用于升级不用设置时钟,只需要启动外设即可。 |
RE:程序的跳转