txgc_wm 于 2011-03-07 18:55:56发表:
http://www.itsky2010.cn/embedded-eda/keil-c51/2010/1023/5487.html 详细参考该链接! 注:在第三个run#1处设置!
txgc_wm 于 2011-03-07 18:54:05发表:
3# deepwhite 只是起先的时候,没有找到解决措施。在网上找了一大圈,试了也没通过。结果是发现某些东西设置错了!解决了,就自己回复了一下自己。
txgc_wm 于 2011-03-07 18:49:42发表:
一方面因为,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:\keil\ARM\BIN31\fromelf.exe --bin -o net_gliethttp.bin objects\net_gliethttp.axf Run#2输入 D:\keil\ARM\BIN31\fromelf.exe -z objects\net_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,...]
pallana 于 2011-03-07 10:24:43发表:
有点意思了
deepwhite 于 2011-03-07 08:57:07发表:
自问自答?
txgc_wm 于 2011-03-06 23:31:31发表:
用usb转串口,可以将hex文件烧录到nand flash中吗? 可以! 是否需要相关的配置? 确实需要一些实际的配置,明天发出具体的配置!
txgc_wm 于 2011-03-07 18:55:56发表:
http://www.itsky2010.cn/embedded-eda/keil-c51/2010/1023/5487.html 详细参考该链接!
注:在第三个run#1处设置!
txgc_wm 于 2011-03-07 18:54:05发表:
3# deepwhite
只是起先的时候,没有找到解决措施。在网上找了一大圈,试了也没通过。结果是发现某些东西设置错了!解决了,就自己回复了一下自己。
txgc_wm 于 2011-03-07 18:49:42发表:
一方面因为,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:\keil\ARM\BIN31\fromelf.exe --bin -o net_gliethttp.bin objects\net_gliethttp.axf
Run#2输入 D:\keil\ARM\BIN31\fromelf.exe -z objects\net_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,...]
pallana 于 2011-03-07 10:24:43发表:
有点意思了
deepwhite 于 2011-03-07 08:57:07发表:
自问自答?
txgc_wm 于 2011-03-06 23:31:31发表:
用usb转串口,可以将hex文件烧录到nand flash中吗?
可以!
是否需要相关的配置?
确实需要一些实际的配置,明天发出具体的配置!