×

关于FreeRTOS使用IAP的时候,程序跑飞的问题(2)

zxjy辉 zxjy辉 发表于2023-03-13 19:54:09 浏览301 评论0

抢沙发发表评论

主要问题是在于FreeRTOS的堆栈使用问题,在从app跳转到Boot的时候,堆栈没有复位的问题

stm32有两个堆栈,一个是主堆栈MSP,另一个是进程堆栈PSP

在FreeRTOS中,主堆栈MSP是用于系统栈空间,进程堆栈PSP是给任务栈使用的,在从app跳转回Boot的时候,只是重置了MSP

没有对PSP进行重置,使用了FreeRTOS的app跳转到boot,很大的可能原因就是堆栈问题,在跳转回boot的时候重新设置堆栈指针

__set__PSP(*(volatile unsigned int *)bootloader_address);     //               bootloader_address: 堆栈的起始地址

__set__CONTROL(0);                              //选择堆栈指针为主堆栈,1是PSP

__set__MSP(*(volatile unsigned int *)bootloader_address);   

就没问题了

#好好学习!

群贤毕至

访客