Sun May 2 2010
昨天整了一下午,STM32 IAP 信息无法用超级终端接收到,但是可以用串口工具接收到,因此我想是超级终端有问题,从网上狂搜了一堆超级终端软件,结果都是同样的问题,一直到晚上,出去逛了圈,回来继续,想着换个串口试试,因此拿51开发板上带的串口来直接接上STM32的串口引脚,数据终于接受到了,原来之前是USB转串口的兼容性问题,或者也可能是STM32开发板上的串口转换接口问题,不过现在问题解决了。
今天调试IAP下载,要生成BIN格式文件,整了我一早上,那个地址开始没改对,后来偷懒,看到AXF文件在目录下已经有了,想着先编译再运行附加程序浪费时间,就把那行参数放在最上面的参数框里了,也就是在编译之前运行程序,然后就一直没成功过,一直提示无法打开文件,我一直以为还是路径设置不对,想了各种办法改路径,都没成功,实在郁闷,最后想着不行把axf文件放在fromelf.exe的同目录里,要是再有问题我就完全没招了,结果去找发现根本没有axf文件,那个郁闷啊, 让我一下在明白了,fromelf.exe必须在编译后运行,赶紧改过来,编译,转换BIN成功
在Realview MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件。虽然这两个格式的文件非常有利于ULINK2仿真器的下载和调试,但是ADS的用户更习惯于使用*.bin格式的文件,甚至有些嵌入式软件开发者已经拥有了*.bin格式文件的调试或烧写工具。为了充分地利用现有的工具,同时发挥Realview MDK集成开发环境的优势,将*.axf格式文件或*.hex格式文件转换成*.bin格式的文件是十分自然的想法。本文将详细的探讨这种转换方法。
在详细的介绍这种方法之前,先了解一下ARM公司的RVCT开发套件中的fromelf.exe转换工具是十分必要的,因为在Realview MDK中生成*.bin格式文件的工具正是它。
fromelf.exe转换工具的语法格式如下:
fromelf [options] input_file
其中[options]包括的选项及详细描述见表一。
表一 fromelf工具的选项及描述表格
选项
描述
选项
描述
--help
显示帮助信息
--vsn
显示版本信息
--output file
输出文件(默认的输出为文本格式)
--nodebug
在生成的映象中不包含调试信息
--nolinkview
在生成的映象中不包含段的信息
--bin
生成Plain Binary格式的文件
--m32
生成Motorola 32位十六进制格式的文件
--i32
生成Intel 32位十六进制格式的文件
--vhx
面向字节的位十六进制格式的文件
--base addr
设置m32,i32格式文件的基地址
--text
显示文本信息
-v
打印详细信息
-a
打印数据地址(针对带调试信息的映象)
-d
打印数据段的内容
-e
打印表达式表print exception tables
-f
打印消除虚函数的信
-g
打印调试表print debug tables
-r
打印重定位信息
-t
打印字符串表
-y
打印动态段的内容
-z
打印代码和数据大小的信息
在掌握了fromelf转换工具的语法格式以后,下面将介绍它在Realview MDK中的使用方法:
1. 新建一个工程,例如Axf_To_Bin.uv2;
2. 打开Options for Target ‘Axf_To_Bin’对话框,选择User标签页;
3. 构选Run User Programs After Build/Rebuild框中的Run #1多选框,在后边的文本框中输入C:\Keil\ARM\BIN31\fromelf.exe --bin -o ./output/Axf_To_Bin.bin ./output/Axf_To_Bin.axf命令行; 这里有个地方容易搞错,那就是fromelf.exe的地址,首先你得Keil不一定装在C盘,先把Keil安装地址改好,其次 Keil UV3 的地址是上面那BIN31文件夹里的地址,但是Keil UV4 下fromelf.exe的地址是
C:\Keil\ARM\BIN40\fromelf.exe --bin -o ./output/Axf_To_Bin.bin ./output/Axf_To_Bin.axf
但是一直提示 axf文件路径不对无法打开
4. 重新编译文件,在./output/文件夹下生成了Axf_To_Bin.bin文件。
经过上述4步的操作以后,将得到我们希望的Axf_To_Bin.bin格式的文件。
文章评论(0条评论)
登录后参与讨论