完成MSP430的IAP升级程序(总结)

  这几天测试写好的IAP升级程序,真是一个糟,能将程序下载进去,但无法运行。

  经过各种测试,修改终于找到了问题的原因,现在大致总结下我在写IAP程序的时候

遇到的问题和解决方案。首先要实现单片机的IAP升级程序,我们要知道自己的IDE如何能

将程序的函数或者变量的编译地址固定,因为对于bootload程序,我们要固定它的地址,

还有从bootload跳转到的程序运行的地址。

  对于MSP430,在测试中我程序复位时跳转到rts430x.lib:boot.obj (.text:_isr:

_c_int00_noexit)这样一个启动函数,之后执行_syatem_pre_int->_auto_init->main,

在_auto_init过程中,程序会执行memcpy函数(将.cinit段赋值到RAM里),就是初始化RAM

中的全局变量了。我的程序主要错在这个过程里,导致更新后问题不断,还有对于.cinit段和

.const段,我们也要固定地址,因为memcpy函数初始化ram的地址被固定了,且bootload

是不能更新的,所以固定.cinit段后,我们memcopy操作地址就固定,不然当程序变化重新编译

后可能就会事.cinit段的地址发生变化,导致ram初始化错误。

  这样修改后,程序大致就能自升级了,程序只升级运行部分的程序,对bootload程序不升级。

转载于:https://www.cnblogs.com/nixianmin/archive/2012/08/17/2643743.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值