这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 430 【求助】430用c编译器程序固定程序位置的问题!

共2条 1/1 1 跳转至

430 【求助】430用c编译器程序固定程序位置的问题!

院士
2006-09-17 18:14:16     打赏
430 【求助】430用c编译器程序固定程序位置的问题!



关键词: 求助     编译器     程序     固定     位置     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 各位DX:小弟在用430f149做用户终端,要实现远程升级的功能。这势必要固定某些程序的位置,试问430的IAR c编译器有没有这个功能。怎么去实现,请DX赐教! 1: 我还没有做到远程升级。但我实现了上下位机升级。我没有用到固定程序位置啊!因为要做升级功能,430里要自己先固化一个程序,用这个程序确定升级程序的位置就可以了啊 2: 我做过远程升级步骤如下:
1,编写用于升级的程序
2,修改用于升级的那个项目的XCL文件!-Z(CODE)CSTART,-Z(CODE)CODE,-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM。这样就可以将程序固定在某个区域,建议放在FLASH的最高的几个段里面
3,将编译生成的TXT文件,取出程序部分,做成数组,取出中断向量部分做成数组
4,将数组用#pragma location固定在你主项目的程序的升级的区域里,这样你的一个FLASH就有两 个项目了,一个主项目,一个用于升级的项目
5,将取出的中断向量数组,也放在主项目的程序的里
6,正常情况下跑的是主项目,要升级时,先将中断向量数组写入FLASH的中断向量区域
7,软复位
9,复位后程序就开始执行用于升级的项目了

上面写的只是个思路,不过我已经由于产品上了,非常好用! 3: 引用: 4: 是的,我在MIAN FLASH区域里放了两个项目,一个是你的主项目,另一个是用于升级的项目。
改中断向量的目的是软复位后开始执行用于升级的程序,在这个用于升级的程序里实现:1,擦除,2程序文件的下载3,程序的写入,全部写入完成后,再将新程序的中断向量写到中断向量区域
,然后在软复位,这样程序更新就完成了!

这种方法有个很好的地方就是,由于两个项目的独立的,因此RAM的占用也是独立的。用于升级的项目只实现升级可以占有所有的RAM资源! 5: 引用: 6: 其实用什么方式下载不重要,我那个项目刚好是用RS485通讯,所以就顺便做了用RS485升级,上位机从网络获取升级文件,不过要自己写程序把MSP430的TXT文件转成BIN文件!
这个升级方法有如下优点:
1,由于两个项目的独立的,因此RAM的占用也是独立的。用于升级的项目只实现升级可以占有所有的RAM资源
2,可以自己定义灵活数据通讯协议,而不是象BSL是固定的协议
3,无须象BSL那样考虑复位时序,真正做到无人的远程升级
4,程序在FLASH中运行,因此所有的中断源都可以用,方便的编程
5,中途升级意外失败,可以恢复,重新升级 7: 引用: 8: 好象有点类似固化在FLASH里面的在应用编程. 9: oldgoat:可不可以给一个demo程序呀,我想做一个rs232的远程升级

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]