我想在我的 STM32 闪存中有两个应用程序,一个基本上是引导,另一个是“主”应用程序。我已经想出了如何将它们中的每一个加载到闪存的不同区域,并且在进行内存转储之后,一切看起来都在正确的位置。
因此,当我进行重置时,它会加载引导,此时引导所做的只是跳转到应用程序。调试启动,这一切似乎工作正常。但是,在我跳转到应用程序之后问题就来了,它只执行一条指令(汇编),然后跳回引导。它应该无限期地留在应用程序中。
那么我的问题是,我应该在应用程序中“跳转”到哪里?
似乎有一些潜在的地方,例如中断向量、重置处理程序、应用程序的主要功能。实际上,我已经尝试了所有这些都没有成功。
希望这是有道理的,如果没有,我会更新问题。
感谢您的帮助!理查德
更新:
- 我在调试器中玩了一下,并手动将程序计数器更改为应用程序的主程序,这很有魅力,所以它让我觉得我的跳转有问题,为什么程序计数器没有继续运行跳跃后?
- 实际上它似乎是 PSR,“T”在跳转时被重置,如果我在跳转后再次设置它,它会按照我的意愿继续使用应用程序
- 好的找到了一个解决方案,似乎您需要在执行分支时将 PC LSB 设置为 1,否则它会进入“ARM”模式(32 位指令而不是像“拇指”模式中的 16 位指令。相当晦涩的小问题,谢谢分享给大家!