完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
浅析keil下RV MDK如何直接编译生成bin文件
网上好多人都想用hex转成bin,这样做不好, 一方面因为,Hex2bin程序对hex大小有限制(我的200k的hex就不能转换) 另一方面既然做的是arm那就应该使用纯正的arm格式, hex转bin总有些不伦不类, 至少我一直都认为bin和elf才是arm的正统文件, 只需做如下简单配置即可将axf这个elf文件直接转换为bin文件, 选择"Options for Target" ==> "User" ==> "Run User Programs After Build/Rebuild"将 选中Run#1和Run#2,分别输入: Run#1输入 D:keilARMBIN31fromelf.exe --bin -o net_gliethttp.bin objectsnet_gliethttp.axf Run#2输入 D:keilARMBIN31fromelf.exe -z objectsnet_gliethttp.axf Project==>Clean Target 但不知道为什么,将.o全部清空之后,执行多次Rebuild All,每次结果都不一样,生成的hex也都不一样, 第一次编译生成的.bin文件比较大,以后再编译数据大小就正常了,奇怪![luther.gliethttp] 然后Rebuild All 第1次编译bin结果为Code=50916,RW=220所以最后bin文件大小50916+220=51136 第2次编译bin结果为Code=36076,RW=220所以最后bin文件大小36076+220=36296 第3次编译bin结果为Code=35860,RW=220所以最后bin文件大小35860+220=36080 第4次编译bin结果为Code=35896,RW=220所以最后bin文件大小35896+220=36116 第4次编译bin结果为Code=35888,RW=220所以最后bin文件大小35888+220=36108 第5次编译bin结果为Code=35896,RW=220所以最后bin文件大小35896+220=36116 第6次编译bin结果为Code=35888,RW=220所以最后bin文件大小35888+220=36108 第7次编译bin结果为Code=35896,RW=220所以最后bin文件大小35896+220=36116 第8次编译bin结果为Code=35888,RW=220所以最后bin文件大小35888+220=36108 所以从这里看到keil编译出来的大小每次都不一样,挺怪的,但是我们也可以看到规律, 前3次执行Rebuild All出来的结果不可用,从第4次开始出现交替结果[luther.gliethttp] 优化选项,进一步深入缩减bin代码空间: Options for Target 1. Output==> Create Executable将 x Debug Information 去掉 x Create Hex file 去掉--对于arm的bin文件hex一点用也没有 x Browse Information去掉 2. C/C++ ==> Language/Code Generation ==> Optimization选择Level 3(-O3) 附录: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0382ac/BABBDAAH.html fromelf 命令行语法如下: fromelf [build-options] [debug-options] [diagnostic-options] [help-options] [image-content-options] [license-option] [output-options] [privacy-options] [project-template-options] input_file build-options 使用下列选项控制生成属性的输出格式: *--decode_build_attributes *--dump_build_attributes *--extract_build_attributes debug-options 使用下列选项控制输出文件中的调试信息: *--[no_]debug *--debugonly diagnostic-options 使用下列选项控制输出文件中的诊断信息: *--diag_style={arm|ide|gnu} *--diag_suppress=tag[,tag,...] *--compare=option[,option,...] *--continue_on_error * --ignore_section=option[,option,...] * --ignore_symbol=option[,option,...] * --relax_section=option[,option,...] * --relax_symbol=option[,option,...] * --show_cmdline help-options 使用下列选项显示编译器的主命令行选项和版本号: *--help *--vsn image-content-options 使用以下选项可控制影响映像内容的其他因素: *--base [[object_file::]load_region_ID=]num *--cad *--cadcombined *--cpu=list *--cpu=name *--device=list * --device=name *--disassemble *--emit=option[,option,...] *--expandarrays *--fieldoffsets *--fpu=list *--fpu=name *--globalize=option[,option,...] *--hide=option[,option,...] *--hide_and_localize=option[,option,...] *--info=topic[,topic,...] *--in_place *--interleave=option *--[no_]linkview *--localize=option[,option,...] *--qualify *--rename=option[,option,...] *--select=select_options *--show=option[,option,...] *--show_and_globalize=option[,option,...] *--source_directory=path *--strip=option[,option,...] *--[no_]symbolversions license-option 要进一步尝试获取浮动许可证,请使用--licretry。 output-options 使用下列选项控制输出格式: *--bin *--bincombined *--bincombined_base=address *--bincombined_padding=size,num *--elf *--i32 *--i32combined *--m32 *--m32combined *--output=destination *--text *--widthxbanks *--vhx privacy-options 使用下列选项保护传递到第三方的映像和对象中的 IP: *--privacy *--strip=option[,option,...] project-template-options 使用以下选项可控制项目模板的使用: *--[no_]project=filename *--reinitialize_workdir *--workdir=directory input_file 指定要处理的 ELF 文件,具体说明见input_file。 |
|
相关推荐
|
|
751 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1330 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1184 浏览 0 评论
899 浏览 0 评论
947 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11865 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 11:39 , Processed in 2.126224 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号