This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,我现在调试时遇到一个问题,在刷新boot程序时程序跑飞了,设计逻辑如下:
目前产品的BootLoader升级是自定义的,由于boot程序存在问题需要修改,但是产品密封,所以需要使用app程序去刷新boot程序
原程序中boot以及app cmd文件如下:其中boot跳转app指令: asm(" mov &0xEDFE, PC;");
现在需要重新更新boot程序,但是由于新的boot程序内存空间比原boot空间大,不能直接在app中进行刷新boot,所以设计两个app:app1,app2。其中app1主要作为中转,原boot程序跳转到app1中,然后在app1重定向中断向量,然后跳转到app2;app2程序主要作用为接收数据存储到内存地址(内存空间为原boot+app1)。相关cmd文件如下:
C里面的boot与app标反了,app开始地址为:0xc400-0xed00,boot开始地址:0xef00,0xed00-0xef00空间为中断的一些数据信息。
测试发现:如果控制器烧录C框架之后,再使用C中的app去刷新boot空间的程序,一切工作正常
不会,目前猜测可能是由于INT区域造成的,在app进行刷新boot时使用了中断,可能由于刷写是重新编写了中间app1的INT那一段中断向量,中断找不到导致跑飞。
在app进行刷新boot时使用了中断,可能由于刷写是重新编写了中间app1的INT那一段中断向量,中断找不到导致跑飞。
app2刷新boot时,还用到了app1的中断向量吗?
我们这边不建议您在升级boot时依赖"INT (APP1)" 0xF400-0xF300这种方式来重定向中断。
SYSRIVECT可以被用来改变中断向量表的位置:
您有尝试使用过BSL吗:https://www.ti.com.cn/tool/zh-cn/MSPBSL
只需要如下6个引脚便可以实现烧录:
使用BSL的基本操作步骤:https://blog.csdn.net/qq_36931625/article/details/103582535
对于定制Boot,请您留意第一个链接中的:第 3 步:自定义 MSP BSL,尤其是主存储器BSL这一部分:
相关的文档及资源包:
MSP430FRBoot – Main Memory Bootloader and Over-the-Air Updates for MSP430 FRAM (Rev. E)
您可以参考一下