我正在为 MSP430开发一个小型引导加载程序。 由于工程的引脚限制、我无法使用 BSL 加载程序。
目前、我能够接收固件、将其写入闪存并进行验证。 然后、我使用 UNIFASHER 转储闪存、并在开发期间再次进行验证。 所有这些都运行良好。
我一直在将程序计数器设置到新固件位置、希望一切正常。 但是、它似乎无法正常工作。 实际上、我的当前程序只是重置。 起初、我以为这是调试的一个赝像、但即使在没有连接调试器的情况下使用固件、我也遇到了同样的问题。 下面是我如何从软件跳转到程序。
__disable_interrupt();
((void (*)())0xCA20)();
我也尝试了其他一些东西。
- 设置程序计数器后启用看门狗
- 直接使用汇编指令(br 和 MOV)、编译相同、因此无论如何都不会产生影响。
通常、我只需单步执行汇编并将其计算出来、但在本例中、我认为调试会产生效果。 任何帮助都很棒!