OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3533|回复: 3

keil5怎么设置生成固定大小的bin文件

[复制链接]

2

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-1-13
在线时间
2 小时
发表于 2017-1-13 16:15:01 | 显示全部楼层 |阅读模式
东芝TMPM369FDFG芯片  Cortes-M3内核  
用keil5编译后:Program Size: Code=160046 RO-data=7518 RW-data=2968 ZI-data=33664296  


而实际生成的bin文件却有452k:

WVKRW4IM)PI4HV@2U5Y.M.png


生成的hex文件 有1M多 ,用hex装bin工具转后,也是452k。

用ue把bin文件打开后,

{)O1OTT5MO(%LSZPU}Z)@{W.png



在0x0028540行之后 就全是0了  这里刚好差不多是 161k左右的数据。

一直到0x0070000之后到0x0070D90有3472个字节的数据是用于远程升级的一段代码数据  中间这一段全是0。   

ZSN[WA%@TJCMMJ9CO~9]EYR.png


stm32的远程升级 我了解过 是两个工程 两个bin文件分别下载到不同flash地址里 程序内部实现跳转。

这个系统的远程升级我就看不懂了  升级程序跟实际用的主程序 放在同一个bin文件里,而且中间还添加了那么多0。现在导致452k的数据 远程升级会失败。希望有大神能帮我指点一二。
还有keil5能设置生成的bin文件为固定大小么?  回到最开始的问题,怎么实现bin文件大小 > code+ RO_data + RW_data.


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2015-8-29
在线时间
5 小时
发表于 2017-1-17 23:47:01 | 显示全部楼层
如果最后那段代码和你实际主程序没什么关联的话,就把代码定位到前面一点
从不发帖,发帖必申酷。
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-1-18 08:28:33 | 显示全部楼层
正常像boot代码是放在API代码之前,因为boot代码大小波动不大,用户代码波动比较大,这样整合的bin就会接近用户代码。
应该是你升级代码定位的地址是0x0070000,这样就是每次编译用户代码与boot代码直接就是空白的,所以定位升级代码位置很关键。
不过对应升级只要升级用户代码就行,所以将还得看你升级擦除方式,如果自升级用户代码区,那升级代码就只升级前面的区域。
让我们的思维驾驭在电的速度之上!
回复 支持 反对

使用道具 举报

2

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2016-12-24
在线时间
22 小时
发表于 2017-2-27 13:36:46 | 显示全部楼层
顶3楼。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-23 19:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表