基于stm32f405MCU上,利用SPI通信总线对从机进行IAP升级。问题描述:在主机给从机进行升级时,当boot loader接收完固件跳转到APP中,程序正常运行,串口数据正常打印,但是无法进入中断。重新启动后,正常进入中断,也就是从bootloader直接跳转过去正常得,所以定位原因在bootloader中。
跳转之前也已经关闭全局中断(__disable_irq()),跳转后,app一开始使能全局中断(__enable_irq())。由于不进行固件接收再跳转,是正常得,所以进一步定位是接收固件得问题。
最终排查出,从机接收固件是在SPI DMA接收回调中处理得,原理以为回调是在中断外进行得,实际上好像不是。最终在接收完成设置标志位,在中断外进行跳转解决该问题。