关注、星标公众号,直达精彩内容

来源:嵌入式大杂烩 | ZhengN

在STM32开发中,经常会碰到hex文件、bin文件与axf文件,这些都是可以烧写到板子里运行的文件。这三个文件有什么区别呢?在这之前,先来一起回顾一下C语言编译的过程:

编译的过程

在之前的C语言笔记《C程序的编译过程》中,有简单的分析了C程序编译的几个过程:

STM32也是用C语言来开发,也会经过类似的编译过程,只不过我们常常用MDK或者其它IDE来编译,其编译过程如下:

例如,我们的LED程序编译过程如下:

在IDE中进行编译时,我们只需点击编译按钮即可完成这些过程,编译过程用到的工具(.exe文件)在IDE的安装目录下的某个文件夹下,比如我们这里用的MDK的编译工具路径:

一般这些IDE或者工具集的一些编译工具都放在bin文件夹。再比如我们MinGW工具集(里面包含gcc/g++编译器,可以编译在电脑上运行的程序)的编译工具所在路径为:

回归正题,我们的MDK编译时就是使用安装路径下的这些编译工具来完成我们的编译过程。

究其本质,我们在cmd命令窗口也是可以通过命令来编译我们的STM32程序的(前提是配好环境变量,否则得到编译工具所在的路径下进行编译)。

但是我们不会这样干,因为IDE已经给我们提供了很大的便利。比如:

下面看一下我们在cmd窗口下运行armcc命令看会发生什么:

我们看到了很多关于armcc命令的提示说明,有些常用的编译选项已经集成在MDK里供我们选择,比如:

可烧录的文件

axf文件、hex文件与bin文件都是可以运行在我们的stm32上的,它们都存储了编译器根据源代码生成的机器码,根据应用场合的不同,它们又有所区别。

  • axf文件:包含调试信息。

  • hex文件:包含地址信息。

  • bin文件:最直接的代码映像。

axf文件是编译默认生成的文件,不仅包含代码数据,而且还包含着调试信息,在MDK里进行debug调试用的就是这个文件。

hex文件在MDK里要勾选如下选项才可以生成:

hex 文件是一种使用十六进制符号表示的代码记录, 记录了代码应该存储到FLASH 的哪个地址,下载器可以根据这些信息辅助下载。

bin文件是根据axf文件生成的,需要在MDK下添加类似如下格式命令来生成对应的bin文件:

bin文件就是最小的可以运行的文件了,其包含最直接的代码映像。这三个文件中axf文件最大,hex文件次之,bin文件最小,如:

关于它们的区别这里只是简单的阐述说明,有时间、有精力、有兴趣的朋友可以去分析它们里面的内容。

离线文件的烧录方法

hex文件的烧录,我们可以使用FlyMcu工具通过串口来下载:

FlyMcu不可以烧bin文件,因为上面说过了bin文件只包含最直接的代码映像,不包含地址信息,会出现如下错误:

bin文件可以使用STM32CubeProgrammer软件通过STLINK进行下载:

以上就是本次的分享,如有错误欢迎指出,谢谢!

声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

关注我的微信公众号,回复“加群”按规则加入技术交流群。

欢迎关注我的视频号:

点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

hex文件、bin文件、axf文件的区别?相关推荐

  1. Hex、bin、axf、elf格式文件小结

    一.HEX Hex文件,一般是指Intel标准的十六进制文件.Intelhex 文件常用来保存单片机或其他处理器的目标程序代码.它保存物理程序存储区中的目标代码映象.一般编程器均支持生成此种格式文件. ...

  2. bin、hex、elf、axf文件解析

    冰冻三尺非一日之寒,滴水穿石非一日之功 文章目录 引言 文件分类 1.bin文件 2.hex文件 3.axf文件 4.elf文件 总结 参考资料:深度理解编译过程 参考资料:深度理解编译文件 引言 b ...

  3. 程序编译生成的Hex、Bin、axf和elf格式

    一.Bin Bin文件是最纯粹的二进制机器代码,按照程序执行顺序存放.编译器把高级语言翻译成汇编,再把汇编代码翻译成二进制机器代码保存成bin文件,因此Bin是没有经过处理或附加信息程序原本的大小.B ...

  4. .axf文件_Keil开发环境如何生成BIN文件

    为什么需要BIN文件呢? 有些烧录器只支持BIN文件. 进行OTA远程升级时,只能使用BIN文件. 使用JLink脚本文件进行一键烧录时,只支持BIN文件. BIN文件要比HEX和AXF文件小的多. ...

  5. Hex和Bin的区别

    转自:http://blog.csdn.net/spdian/article/details/52963467 HEX文件和BIN文件是我们经常碰到的2种文件格式.因为自己也是新手,所以一直对这两个文 ...

  6. axf文件、hex文件、bin文件区别

    axf文件.hex文件与bin文件都可以运行在stm32,都存储了源代码通过编译器生成的机器码. axf文件:编译默认生成的文件,包含代码数据和调试信息,在MDK里进行debug调试用的文件. hex ...

  7. HEX和BIN文件的区别

    上一篇文章中演示的是裸板开发过程中可能遇到的两个问题的解决办法. 1,是在keil中编写程序并编译连接成可以下载到开发板的  .hex 文件,然后用jlink仿真器下载:2,是在ubuntu中编写编译 ...

  8. hex和bin文件的区别和读取

    1.hex文件格式 数据格式如下: 文件有若干行字符串数据,每行都采用如下的固定格式: MARK | RECLEN | OFFSET | RECTYP | DATA | CHKSUM . 类型 长度 ...

  9. hex文件格式剖析,以及hex与bin文件互相转换

    大家好,我是学电子的小白白. 熟悉单片机开发的朋友,应该经常见到*.hex后缀的文件,它是单片机和嵌入式工程编译输出的一种常见的目标文件格式(比如keil就能编译输出hex文件),通过烧写工具把它下载 ...

  10. .axf文件_干货!STM32晶振的更改,BIN文件的生成

    STM32因为硬件设计的不同,要根据实际安装晶振修改程序参数, 一般使用的晶振是8M,如果遇到使用24M晶振的时候程序配置要怎么去修改呢? 一共有两处需要修改,如果是24M就把这个修改为24,同理8M ...

最新文章

  1. ubuntu中的fi语法_Shell脚本语法--if/then/elif/else/fi
  2. Python调用C语言
  3. 主机Window不能访问该虚拟机Linux Samba文件服务提供了一个文件夹
  4. Linux学习笔记---Cortex-A7 常用汇编指令
  5. 脑波控制机械手,双手打字也无法自证清白| Science Robotics
  6. rk修改launcher_RK launcher V 0.41 官方版
  7. 使用监听器生成请求记录日志
  8. 新手小白学JAVA API手册使用方式说明
  9. Mac使用终端连接远程LInux,FTP连接
  10. JavaScript获取完整当前域名
  11. 基于PID控制的车辆LKA算法
  12. 《分布式资本链周刊》第二期
  13. android studio : amend commit
  14. 原理 CDN加速原理
  15. 易语言 html 服务器,易语言模拟网页Web服务器源代码
  16. 查看mysql数据库所占内存,以及每个表所占内存
  17. esp8266点灯LCD12864心知天气+农历+空气质量ArduinoJson6
  18. 怎么卸载光速头条_教你怎么卸载光速浏览器
  19. 4. Python脚本学习实战笔记四 新闻聚合
  20. 都这个点了,尽然还写博客啊,总结

热门文章

  1. mbedtls入门和使用
  2. windows命令提示符运行.cpp文件
  3. 一起学libcef--搭建自己的libcef运行环境(Win32程序,错误C2220解决方案)
  4. ctf 逆向 回顾与总结
  5. sql server windows nt 64bit 内存占用过高
  6. thinkphp5前台index模板文件template配置
  7. Cold Diffusion: Inverting Arbitrary Image Transforms Without Noise【重点笔记】
  8. 网页开发(三)——实现网页前端和数据库的数据交换
  9. Hi3519AV100开发记录
  10. 国产ERP有没有机会击败SAP ?