社区导航

 
查看: 1609|回复: 32

[讨论] 大家有没有好的方法减小bin文件的大小

  [复制链接]

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-5-11 11:07:04 | 显示全部楼层 |阅读模式
问题是这样的:          以前用CCS3.3生成bin文件,利用一个脚本,生成规定FLASH空间大小的bin文件。比如规定生成bin文件的FLASH空间起始地址为0x3e8000,长度为0xC000,最后生成的bin文件内容也就是从0x3e8000到0x3F4000。
          现在用CCS6.2生成bin文件,也就是这段代码:"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin.bat" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd2000.exe" "${CG_TOOL_ROOT}/bin/hex2000.exe" "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin.exe",生成的bin文件内容包含整个FLASH空间,请问下各位,有什么办法能让其像CCS3.3那样,生成规定大小的空间,以减少bin文件的内容。

此帖出自DSP论坛


回复

使用道具 举报

5461

TA的帖子

454

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2018-5-11 11:11:46 | 显示全部楼层
优化?

点评

您好,感谢您的回复,我想问下具体怎么优化。 因为bin文件其实本身就为了升级而生成的,整个FLASH我只需要存储flashcode那部分内容生成bin文件就行了,而所有的FLASH除了包含flashcode,还有bootloader、密码以及安  详情 回复 发表于 2018-5-11 11:21


回复

使用道具 举报

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-11 11:21:49 | 显示全部楼层

您好,感谢您的回复,我想问下具体怎么优化。
因为bin文件其实本身就为了升级而生成的,整个FLASH我只需要存储flashcode那部分内容生成bin文件就行了,而所有的FLASH除了包含flashcode,还有bootloader、密码以及安全模块等部分,所以会生成很大一个bin文件


回复

使用道具 举报

5461

TA的帖子

454

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2018-5-11 13:06:21 | 显示全部楼层
CCS \ properties\ optimization里面优化等级能不能修改试试看

点评

您好,我修改到最高优化等级之后,报错 fatal error #10336: The linktime optimization generated object file, "D:/Work/XXX/XXX/XXX/XXX/XXX/output/Obj/XXX.obj", conflicts with an input file name. Please s  详情 回复 发表于 2018-5-11 14:08


回复

使用道具 举报

1万

TA的帖子

146

TA的资源

版主

Rank: 6Rank: 6

技术导师勋章

发表于 2018-5-11 13:25:56 | 显示全部楼层
编译器一般都有优化等级选项,对BIN文件尺寸敏感就尽量选优化等级最高的选项。同时,程序的结构和编写也跟编译后尺寸有关。在过去存储器非常昂贵的时代,怎么编程利于尺寸缩减的技巧很重要,所以当年主要用汇编来编程,以期最强的介入控制。

点评

优化的话只是在原有结构上面,不知道有没有像CCS3.3那样的方法,限制生成bin文件的flash空间范围  详情 回复 发表于 2018-5-11 14:09
上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang


回复

使用道具 举报

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-11 14:08:27 | 显示全部楼层
蓝雨夜 发表于 2018-5-11 13:06
CCS \ properties\ optimization里面优化等级能不能修改试试看

您好,我修改到最高优化等级之后,报错
fatal error #10336: The linktime optimization generated object file, "D:/Work/XXX/XXX/XXX/XXX/XXX/output/Obj/XXX.obj", conflicts with an input file name. Please specify a different object file directory.
请问下这个文件名冲突应该如何修改?



回复

使用道具 举报

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-11 14:09:31 | 显示全部楼层
chunyang 发表于 2018-5-11 13:25
编译器一般都有优化等级选项,对BIN文件尺寸敏感就尽量选优化等级最高的选项。同时,程序的结构和编写也跟 ...

优化的话只是在原有结构上面,不知道有没有像CCS3.3那样的方法,限制生成bin文件的flash空间范围

点评

那种限制是伪限制,并不能真正减小运行代码的尺寸。  详情 回复 发表于 2018-5-11 14:18


回复

使用道具 举报

357

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-5-11 14:11:22 | 显示全部楼层
文本打开bin 文件,把里边不需要升级的空间的二进制代码直接切掉,如何?

点评

这样的话是不是太麻烦了。。。最好能直接生成,减少人工手动操作,以免造成因个人疏忽造成的影响  详情 回复 发表于 2018-5-11 14:39
君应有语,渺万里层云,千山暮雪,知向谁边?


回复

使用道具 举报

5461

TA的帖子

454

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2018-5-11 14:17:57 | 显示全部楼层
那你修改下*.cmd文件看看
或者 把DEBUG修改成release 都试试看

点评

我更改了optimization level ,bin文件并没有减小。。。  详情 回复 发表于 2018-5-11 15:50


回复

使用道具 举报

1万

TA的帖子

146

TA的资源

版主

Rank: 6Rank: 6

技术导师勋章

发表于 2018-5-11 14:18:49 | 显示全部楼层
会飞的石头人 发表于 2018-5-11 14:09
优化的话只是在原有结构上面,不知道有没有像CCS3.3那样的方法,限制生成bin文件的flash空间范围

那种限制是伪限制,并不能真正减小运行代码的尺寸。

点评

我看生成的bin文件,确实代码长度只是在规定区间 之间  详情 回复 发表于 2018-5-11 14:40
上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang


回复

使用道具 举报

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-11 14:39:37 | 显示全部楼层
我的学号 发表于 2018-5-11 14:11
文本打开bin 文件,把里边不需要升级的空间的二进制代码直接切掉,如何?

这样的话是不是太麻烦了。。。最好能直接生成,减少人工手动操作,以免造成因个人疏忽造成的影响

点评

减少人工操作可以写个文本操作工具啊,指定代码区间,不在区间里边的都切掉  详情 回复 发表于 2018-5-11 14:47


回复

使用道具 举报

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-11 14:40:19 | 显示全部楼层
chunyang 发表于 2018-5-11 14:18
那种限制是伪限制,并不能真正减小运行代码的尺寸。

我看生成的bin文件,确实代码长度只是在规定区间 之间

点评

那只不过是巧合而已,不信,大幅减少你的指定区间,看看编译后的代码尺寸能随之减小不。  详情 回复 发表于 2018-5-11 15:33


回复

使用道具 举报

357

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-5-11 14:47:23 | 显示全部楼层
会飞的石头人 发表于 2018-5-11 14:39
这样的话是不是太麻烦了。。。最好能直接生成,减少人工手动操作,以免造成因个人疏忽造成的影响

减少人工操作可以写个文本操作工具啊,指定代码区间,不在区间里边的都切掉

点评

ok,算是一种办法,多谢  详情 回复 发表于 2018-5-11 14:53
君应有语,渺万里层云,千山暮雪,知向谁边?


回复

使用道具 举报

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-11 14:53:31 | 显示全部楼层
我的学号 发表于 2018-5-11 14:47
减少人工操作可以写个文本操作工具啊,指定代码区间,不在区间里边的都切掉

ok,算是一种办法,多谢


回复

使用道具 举报

1万

TA的帖子

146

TA的资源

版主

Rank: 6Rank: 6

技术导师勋章

发表于 2018-5-11 15:33:41 | 显示全部楼层
会飞的石头人 发表于 2018-5-11 14:40
我看生成的bin文件,确实代码长度只是在规定区间 之间

那只不过是巧合而已,不信,大幅减少你的指定区间,看看编译后的代码尺寸能随之减小不。
上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang


回复

使用道具 举报

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-11 15:50:00 | 显示全部楼层
蓝雨夜 发表于 2018-5-11 14:17
那你修改下*.cmd文件看看
或者 把DEBUG修改成release 都试试看

我更改了optimization level ,bin文件并没有减小。。。


回复

使用道具 举报

1730

TA的帖子

0

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2018-5-11 16:16:37 | 显示全部楼层
写个小程序,把不需要的部分切除,只保留想要的部分就可以了


回复

使用道具 举报

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-11 16:21:45 | 显示全部楼层
chunyang 发表于 2018-5-11 15:33
那只不过是巧合而已,不信,大幅减少你的指定区间,看看编译后的代码尺寸能随之减小不。

我改变长度以后,确实bin文件是按照要求生成的,即末尾增加或者减少部分数据

点评

都说了要你大幅减小尺寸要求,你改变的尺寸要求如果落在程序编译的尺寸之外,那没问题,否则不可能。注意,程序分段裁剪可是另外一回事,其尺寸不变,变的只是裁剪点。  详情 回复 发表于 2018-5-11 18:12


回复

使用道具 举报

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-11 16:21:46 | 显示全部楼层
chunyang 发表于 2018-5-11 15:33
那只不过是巧合而已,不信,大幅减少你的指定区间,看看编译后的代码尺寸能随之减小不。

我改变长度以后,确实bin文件是按照要求生成的,即末尾增加或者减少部分数据


回复

使用道具 举报

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-11 16:21:47 | 显示全部楼层
chunyang 发表于 2018-5-11 15:33
那只不过是巧合而已,不信,大幅减少你的指定区间,看看编译后的代码尺寸能随之减小不。

我改变长度以后,确实bin文件是按照要求生成的,即末尾增加或者减少部分数据


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2018-10-20 05:46 , Processed in 0.530430 second(s), 15 queries , Gzip On, MemCache On.

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