430远程更新实验失败

2019-07-15 15:08发布

最近在做这个远程更新的实验,资料也从网上找了一大堆,下面上传文档,文档里面还有程序的下载地址,但是这个没实验成功,不知道哪位大神做过这块,给指导下.
还有就是我感觉这个文档里面有好多地方说的有些模糊 MSP430单片机实现远程升级.pdf (277.47 KB )
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
cz0519博睿康
2019-07-15 17:50
这个用到代码的绝对定位,B程序写成一个.C文件,这个文件里每个函数定义的后面都加上@"UPDATECODE",这个UPDATECODE是自己定义的,在149的xcl文件里改,xcl文件在IAR的安装目录里找,在里面找到这一段
//  Code
-Z(CONST)UPDATECODE=1100-1FFF
-Z(CODE)CSTART=2000-FFDF
-Z(CODE)CODE=2000-FFDF
// Constant data
-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=2000-FFDF
你找到你的xcl文件对比一下不同就知道了。
这样A和B编译完之后,B就在UPDATECODE里了,关于代码的绝对定位网上能找到资料,我的IAR是3.4版本的,可以这样做。5以上的版本好像还需要改设置什么的,具体的记不清了,查查资料吧。
然后就是C怎么写到程序区,其实吧TXT文件打开,里面的数据都是和flash地址从前往后对应的,比如里面有@2000开头,那么下面的代码数据就是从flash的2000地址开始写直到写完。最后的是中断向量表,比如@ffd0,那么就把下面的数据从ffd0开始写。中断向量表是flash的最后32个字还是字节来着忘了。
你需要把这个txt文件进行整理,去掉B的代码,总之就是要保证程序区一个地址对应txt里一个字节数据就行了。我的这个工作是用自己写的软件处理的(公司的东西就不方便发了)至于串口怎么接受,进了更新,主程序和中断向量被擦了,串口中断肯定是不能用了,就用查询方式。我是开了个515字节的缓存,一次串口发送512个字节+3个校验和(因为430flash一段是512字节,只能按段擦除),加上校验,校验正确了就把512字节写进flash里,然后通知软件发送下一个512字节。依次类推直到写完。当然这个用什么方法写无所谓,只要能保证写进去而且写对了就可以了。
可能我也表述不清楚,你也别想太复杂,简单点就是想办法把txt文件里的数据写到对应的地址里就行了,写对了就更新完成了

一周热门 更多>