TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430FR2633: 刷新boot时程序跑飞

Part Number:MSP430FR2633

您好,我现在调试时遇到一个问题,在刷新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文件如下:

user6341679:

C里面的boot与app标反了,app开始地址为:0xc400-0xed00,boot开始地址:0xef00,0xed00-0xef00空间为中断的一些数据信息。

测试发现:如果控制器烧录C框架之后,再使用C中的app去刷新boot空间的程序,一切工作正常

,

Yale Li:

您好,您是通过什么方法监测到程序跑飞的?

跑飞后能监测到程序停在哪里吗?

,

user6341679:

你好,在更新boot时用打印调试信息监控程序,发现程序接收到boot程序数据之后程序无法运行,断电后重启也不能继续运行

,

Yale Li:

我注意到您所说的程序跑飞的地方是在您原来boot中分配给FRAM的起始地址。假如boot程序大小和原来一样,直接更新的话会遇到这种情况吗?

,

user6341679:

不会,目前猜测可能是由于INT区域造成的,在app进行刷新boot时使用了中断,可能由于刷写是重新编写了中间app1的INT那一段中断向量,中断找不到导致跑飞。

,

Yale Li:

我和资深工程师讨论后给您答复

,

Yale Li:

user6341679 说:在app进行刷新boot时使用了中断,可能由于刷写是重新编写了中间app1的INT那一段中断向量,中断找不到导致跑飞。

app2刷新boot时,还用到了app1的中断向量吗?

,

user6341679:

,

Yale Li:

我们这边不建议您在升级boot时依赖"INT (APP1)" 0xF400-0xF300这种方式来重定向中断。

SYSRIVECT可以被用来改变中断向量表的位置:

,

user6341679:

boot中中断不用再重定向,在app中把该位置1即可用是吗?那么cmd文件又应该如何设置,可否提供一下相关的示例

,

Yale Li:

您有尝试使用过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)

MSPFRBOOT/1.03.00.00

您可以参考一下

赞(0)
未经允许不得转载:TI中文支持网 » MSP430FR2633: 刷新boot时程序跑飞
分享到: 更多 (0)