共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:

共2条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
分享一种检测按键状态的方法被打赏20分 | |
周末总结一下,STM32C0系列的开发经验被打赏50分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下定时器配置被打赏20分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下PWM配置被打赏20分 | |
【Cortex-M】Systick Timer使用被打赏10分 | |
分享汽车防盗系统的组成与分类(一)被打赏5分 | |
VOFA+波形显示+JYD-31蓝牙发送和解析不定长数据被打赏10分 | |
【换取手持数字示波器】-STM32F4PWM控制LED灯管亮度被打赏22分 | |
【换取手持数字示波器】STM32F4驱动RPR-0521RS照度、接近一体型传感器被打赏23分 | |
宏定义和const关键字定义被打赏5分 |