共2条
1/1 1 跳转至页
430 【求助】430用c编译器程序固定程序位置的问题!
问
各位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的远程升级
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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |