一、问题描述
在boot中不使用RTOS,跳转到APP中,APP可以正常运行。但是boot中使用RTOS跳转到APP中,程序配置完时钟后就会进入MemManage_Handler错误中断。
二、解决方法
1.在跳转APP前加__set_CONTROL(0);就不会出错了。
2.如果出现hardfault,或者调试看到程序跳到汇编程序的B指令上,可以查一下是否在boot中用到的中断没有关闭。
三、原因分析
1.加__set_CONTROL(0);的原因是使用操作系统后系统内核会使用PSP模式,跳转到APP后没有恢复到MSP模式就会导致内存异常从而进入到内存异常中断。
2.出现hardfault,或者调试看到程序跳到汇编程序的B指令上,是因为boot中开启了一些中断,而中断跳转到app前没有DISABLE掉这些中断而APP中又没有写中断服务函数,导致跳转到中断时找不到服务函数。
注:关于PSP模式与MSP模式可以参考一下app和bootloader跳转 MSP与PSP - yeshenmeng - 博客园
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)