1、话题引入

在使用Keil集成开发环境中大伙使用频率高的文件大概就是.hex吧,如果考虑内存布局等会使用到.map文件,如果遇到了疑难bug还会在仿真过程中看一看汇编窗口栏。

然而bin文件作为嵌入式最为直接的固件,同样也是我们非常需要获得的文件,比如进行远程升级等等,一方面可以直接通过其他hex转bin工具转化,另一方面通过集成开发环境自带的功能进行转化即可。

同样有时候我们不想通过debug状态下的汇编栏进行汇编查看,而是想直接分析每个源文件编译所生成的汇编文件来定位问题和优化性能,集成开发环境能够有生成汇编文件的功能就再方便不过了。

2、生成bin文件

1、formelf.exe介绍

fromelf.exe即keil下的一个处理elf文件的工具,elf文件英文名为Executable and Linking Format ,该文件包括符号表,调试信息,汇编等等,所以通过使用fromelf.exe可以输出较多信息文件,比如hex、bin、asm等。

对于此工具详细的说明文件可以参考:using_the_fromelf_utility.pdf

该文档网上很容易搜索到,这里就不板书了。

如果你想省点事,可以直接使用cmd输出formelf.exe的帮助信息,过程如下。

2、formelf.exe详细说明

1、首先在windows运行栏中找到cmd命令输入。

2、输入命令行.fromelf.exe --help

bug菌对上面的输出简单的注释了下。

ARM image conversion utilityfromelf [options] input_file

Options: --help display this help screen //【显示帮助信息】 --vsn display version information//【显示版本信息】 --output file the output file. (defaults to stdout for -text format)//【输出文件。(-text格式默认为stdout)】 8 --nodebug do not put debug areas in the output image//【不在输出映像中放置调试域】 --nolinkview do not put sections in the output image//【不在输出映像中放置段信息】

Binary Output Formats: --bin Plain Binary//【bin文件】 --m32 Motorola 32 bit Hex//【motol格式的hex文件】 --i32 Intel 32 bit Hex//【Intel格式的hex文件】 --vhx Byte Oriented Hex format//【面向字节的hex格式】

--base addr Optionally set base address for m32,i32

Output Formats Requiring Debug Information --fieldoffsets Assembly Language Description of Structures/Classes --expandarrays Arrays inside and outside structures are expanded

Other Output Formats: --elf ELF --text Text Information

Flags for Text Information -v verbose -a print data addresses (For images built with debug)//【打印数据地址信息】 -c disassemble code//【输出汇编代码】 -d print contents of data section//【打印数据域内容】 -e print exception tables//【打印异常表】 -g print debug tables//【打印调试表】 -r print relocation information//【打印重定位信息】35 -s print symbol table//【打印符号表】 -t print string table//【打印字符串表】 -y print dynamic segment contents//【打印动态段内容】 -z print code and data size information//【打印代码与数据大小信息】

输出bin和汇编

在keil中进行如下配置 ,表示在工程编译以后所执行的命令行。

命令行如下,方便大伙copy:

fromelf --text -c -o “$L@L.asm” “#L”

fromelf --bin -o “$L@L.bin” “#L”

确定配置好以后重新编译,最终编译器输出如下信息。

从输出信息来可以了解到bin文件和asm文件均由.axf文件通过fromelf工具转化而来,相信转化命令的通配符大家也可以理解了,输出结果如下:

这样看来.axf文件所包含的信息非常之多,其全称为:Arm executable File,其实.axf文件与gcc中的elf文件是类似的,Keil默认生成.axf文件。

如果在Keil中没有勾选hex文件的生成,那么就用.axf文件来进行烧录。

而如果勾选了Hex文件生成,其实就是Keil通过调用fromelf将axf转换为hex文件,所以编译后可以在输出文件中同时看到axf和hex文件。

3、C与汇编混合展示

我们打开前面的.asm文件如下图所示:

零零散散我们可以看到几个C函数,不过阅读起来稍微有点吃力,大伙应该还是比较喜欢阅读debug时候汇编框中C语言与汇编语言一一对应的形式,这样也更好理解汇编语言。

1、生成.txt和.i文件

我们在keil中勾选如下几项,然后进行重新编译。

其中在工程目录的*.txt即为汇编与C混合文件,而*.i为经过了预处理的文件。

2、对比.c和.i文件

对于预处理过程主要是去掉注释和展开宏等,下面我们对比一下源文件与.i文件。

3、查看.txt文件

生成的.txt即为C代码与汇编的混合文件。

原文标题:用Keil生成bin、汇编、C与汇编混合文件,再也不想debug了!

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

keil转换c为汇编语言,如何用Keil生成bin、汇编、C与汇编混合文件?相关推荐

  1. keil将c语言转换成hex文件格式,如何用keil烧写hex文件格式

    描述 如何将现成的hex文件用keil烧写 开发单片机的第一步就是用Keil软件编写汇编程序,并形成最终的"*.hex"目标文件,然后用编程器将该文件烧写到单片机中就行了,最后将烧 ...

  2. keil4c语言和汇编混合,keil C语言与汇编语言混合编程

    keil C语言与汇编语言混合编程 1. C语言中嵌入汇编 1.在 C 文件中要嵌入汇编代码片以如下方式加入汇编代码: #pragma ASM ; Assembler Code Here #pragm ...

  3. keil下C与汇编语言混合编程

    文章目录 前言 一.在c函数中调用汇编函数 1.调用不带参数的汇编函数 2.调用带形参的汇编函数 二.在汇编函数中调用c函数 三.汇编函数与c函数混合调用 总结 前言 如今C语言很强大,在嵌入式编程当 ...

  4. keil MDK中如何生成*.bin格式的文件

    在Realview MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件.虽然这两个格式的文件非常有利于ULINK2仿真器的下载和调试,但是ADS的用户更习惯 ...

  5. keil 生成bin找不到afx文件_【学习笔记】Keil不能正确生成.bin文件的解决办法

    前段时间我写过如何利用CW.IAR和Keil生成image文件,效果还不错,有些用户反馈挺有帮助的,毕竟待项目开发到最后是需要生成image文件用来量产烧写,我们总不至于到最后使用调试下载吧(不过还别 ...

  6. Keil如何生成bin文件【Keil生成Bin文件的方法】

    使用过Keil的同鞋都知道,现在Keil中默认可以输出.axf的调试文件和可以通过钩选输出的.hex可执行文件,没有bin(二进制)文件的输出选项.可是偏偏某些时候需要或者习惯性的使用.bin文件来进 ...

  7. 在KEIL中生成bin文件的方法

    生成hex文件 KEIL中默认生成的是axf文件. 如果想要生成hex文件,则只需要简单地勾一下: 生成bin文件 要生成bin文件,则需要用到fromelf. Keil自带了一个小工具,可以通过执行 ...

  8. Keil使用 fromelf 生成bin文件

    一.语法格式如下: fromelf    [options]    input_file [options] 选项如下,可以组合使用,两者之间用空格隔开: 二.在Keil中的使用过程 1.配置Outp ...

  9. Keil MDK5生成bin文件时生成了*.bin文件夹

    在Keil魔术棒中通过以下方式生成bin文件时,看提示命令执行成功,却生成了一个*.bin文件夹,文件夹内部是两个bin文件,当时感觉很奇怪,第一次遇到这种情况. 使用的命令:fromelf.exe ...

  10. KEIL / MDK生成BIN文件的两种方式

    KEIL / MDK生成BIN文件的两种方式 1 KEIL工程配置入口 点击"魔术棒"图标(Option for Target) 在After Build/Rebuild选项卡中, ...

最新文章

  1. Spring Boot 工程集成全局唯一ID生成器 Vesta
  2. DeepMind丢掉了归一化,让图像识别训练速度提升了8.7倍 | 已开源
  3. sqlalchemy mysql配置中怎么设置utf8_sqlalchemy 的设置及使用
  4. 设计模式(装饰模式)
  5. c# 获取html中指定标签信息,c# – 如何解析图像标签的HTML字符串以获取SRC信息?...
  6. java的封装性的优点_18、Java的三大特性之封装
  7. [Vue.js] 基础 -- 案例之Tab选项卡
  8. 网络编程学习记录-1
  9. python zip函数_python内置函数-zip
  10. 工作心得_在做算法工程师的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?
  11. JS判断一个页面是否已经打开
  12. FreeSWITCH 初步
  13. 科来数据包生成器找不到网卡适配器
  14. 人工神经网络算法的应用,人工神经网络发展历史
  15. 如何去掉firefox启动就是360主页 小白实操记录
  16. 基于Python生成Markdown的标题序号
  17. 敏捷无敌之橄榄球与软件开发(9)
  18. 孙式无极桩站桩要领--林泰年
  19. Ardupilot固定翼无人机L1制导律原理及代码解读
  20. 少儿编程中项目式学习的创造性

热门文章

  1. cad自动标注界址点_CAD自带“块属性”即可实现自动标注坐标
  2. 完全卸载VS 2015各版本
  3. Siamese Network(孪生网络)
  4. 安卓网络测试工具_专业网速测试工具高级版,支持5G网络测试网速
  5. 8款超好用的SVG编辑工具用起来
  6. linux c post上传文件,Linux C语言Http POST上传图片
  7. MT6757_MT6763处理器资料分享
  8. 机器学习中的数据及其处理
  9. mysql如何源码安装_超详细的MySQL源码编译安装与配置 值得收藏!
  10. 干货分享好用的绘图工具