打印

c编译器有没有这个功能

[复制链接]
2027|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wyjie|  楼主 | 2018-5-4 16:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
午夜粪车| | 2018-5-4 16:36 | 只看该作者
有这个功能,改烧写地址

使用特权

评论回复
板凳
huangchui| | 2018-5-4 16:42 | 只看该作者

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,将取出的中断向量数组,也放在主项目的程序的里

使用特权

评论回复
地板
huangchui| | 2018-5-4 16:49 | 只看该作者

6,正常情况下跑的是主项目,要升级时,先将中断向量数组写入FLASH的中断向量区域

7,软复位

9,复位后程序就开始执行用于升级的项目了

使用特权

评论回复
5
lizye| | 2018-5-4 16:56 | 只看该作者
要实现远程升级的,这个貌似不可以的。

使用特权

评论回复
6
yszong| | 2018-5-4 17:04 | 只看该作者
要实现远程升级的,这个要么特定设计要么就选择带有可以远程升级的MCU的。

使用特权

评论回复
7
dengdc| | 2018-5-4 17:07 | 只看该作者

淡然这个是建立在无线数据传输基础上的,这个是很关键的。

使用特权

评论回复
8
wyjie|  楼主 | 2018-5-4 17:09 | 只看该作者
哦,知道了

使用特权

评论回复
9
hellosdc| | 2018-5-5 23:22 | 只看该作者
c编译器没有这个功能

使用特权

评论回复
10
uiint| | 2018-5-5 23:22 | 只看该作者
是无线的升级吗?

使用特权

评论回复
11
51xlf| | 2018-5-5 23:22 | 只看该作者
需要修改BootLoader呢

使用特权

评论回复
12
i1mcu| | 2018-5-5 23:23 | 只看该作者
lizye 发表于 2018-5-4 16:56
要实现远程升级的,这个貌似不可以的。

能够实现的,这个有实现的方案了。

使用特权

评论回复
13
pmp| | 2018-5-5 23:23 | 只看该作者
yszong 发表于 2018-5-4 17:04
要实现远程升级的,这个要么特定设计要么就选择带有可以远程升级的MCU的。
...

需要修改BootLoader的

使用特权

评论回复
14
mmbs| | 2018-5-5 23:24 | 只看该作者
主要是单片机和上位机之间的信息交互

使用特权

评论回复
15
1988020566| | 2018-5-5 23:24 | 只看该作者
级程序,简称boot代码,也叫作bootloader,启动引导程序

使用特权

评论回复
16
lzbf| | 2018-5-5 23:25 | 只看该作者
通过UART串口升级

使用特权

评论回复
17
houjiakai| | 2018-5-5 23:25 | 只看该作者
固件升级的三种方法,1,JTAG, 2BSL,3,自定义固件升级

使用特权

评论回复
18
youtome| | 2018-5-5 23:25 | 只看该作者
其实现原理是在目标芯片中放置两段代码:一段为应用程序;另一段为升级程序。

使用特权

评论回复
19
i1mcu| | 2018-5-5 23:25 | 只看该作者
lizye 发表于 2018-5-4 16:56
要实现远程升级的,这个貌似不可以的。

TI的无线升级方案。

使用特权

评论回复
20
51xlf| | 2018-5-5 23:25 | 只看该作者
IAR c编译器解决不了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

927

主题

12706

帖子

5

粉丝