共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 跳转至页
回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |
我要赚赏金打赏帖 |
|
|---|---|
| 在FireBeetle2ESP32-C5上实现温湿度检测和显示被打赏¥20元 | |
| 在FireBeetle2ESP32-C5上实现光照强度检测及显示被打赏¥21元 | |
| 以FireBeetle2ESP32-C5实现数据识读播报被打赏¥19元 | |
| 【STM32F103ZET6】14:实测STM32F1的串口输出任务的挂起与恢复功能被打赏¥27元 | |
| Chaos-nano在压力容器监控系统中的项目应用被打赏¥23元 | |
| 基于FireBeetle2ESP32-C5的WS2812B彩色灯带控制被打赏¥21元 | |
| SWM221CBT7显示开发板驱动TFT显示屏被打赏¥19元 | |
| SWM221CBT7显示开发板驱动OLED屏显示被打赏¥19元 | |
| SWM221CBT7显示开发板及其使用被打赏¥20元 | |
| 揭秘Chaos-nano:ArduinoProMini轻量级操作系统开发框架深度解析与实战应用被打赏¥19元 | |
我要赚赏金
