GD32F470芯片,IAP程序跳到带有RT thread系统的APP区,运行一会儿就卡死了。跳到裸机程序的APP程序,是没有问题的。
查遍了网上相关问题,尝试了各种修改都没有用。
IAP跳转部分代码如下:
if ((*(__IO uint32_t *)(APPLICATION_ADDRESS) & 0x2FFE0000) == 0x20000000)
{
__set_PRIMASK(1); // 屏蔽所有中断
JumpAddress = *(__IO uint32_t *)(APPLICATION_ADDRESS + 4); // 设置跳转指针
//delay_1ms(200);
__disable_irq(); // 关闭中断(空函数,自己写)
Jump_To_Application = (pFunction)JumpAddress; // 设置跳转函数
__set_MSP(*(__IO uint32_t *)APPLICATION_ADDRESS); // 初始化用户程序系统栈堆
NVIC_ClearPendingIRQ(USART2_IRQn); // 清除所有挂起中断(自己写)
NVIC_ClearPendingIRQ(TIMER1_IRQn); // 清除所有挂起中断(自己写)
__set_PRIMASK(0); // 取消中断屏蔽
Jump_To_Application(); // 跳转至APP
}
APP区修改:


跳转到APP打印信息如下:


实在没有办法了,看看大家有没有好的解决思路?谢谢
1) 不加boot直接烧录的系统程序是能正常运行的。
2) 卡死的现象是: 灯不会闪了,不会打印了。正常情况下是灯会闪、会循环打印的。
3)带boot的app程序,怎么单步调试,这个不太会,我网上查一下吧。