温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

STM32开发中hex文件、bin文件和axf文件的区别

发布时间:2021-08-30 14:35:51 来源:亿速云 阅读:194 作者:chen 栏目:互联网科技

本篇内容主要讲解“STM32开发中hex文件、bin文件和axf文件的区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“STM32开发中hex文件、bin文件和axf文件的区别”吧!


 

编译的过程

STM32开发中hex文件、bin文件和axf文件的区别


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

STM32开发中hex文件、bin文件和axf文件的区别


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

STM32开发中hex文件、bin文件和axf文件的区别

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

STM32开发中hex文件、bin文件和axf文件的区别


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

STM32开发中hex文件、bin文件和axf文件的区别

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

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

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

STM32开发中hex文件、bin文件和axf文件的区别


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

STM32开发中hex文件、bin文件和axf文件的区别


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

STM32开发中hex文件、bin文件和axf文件的区别

 

可烧录的文件

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

  • axf文件:包含调试信息。
  • hex文件:包含地址信息。
  • bin文件:最直接的代码映像。

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

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

STM32开发中hex文件、bin文件和axf文件的区别


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

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

STM32开发中hex文件、bin文件和axf文件的区别


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

STM32开发中hex文件、bin文件和axf文件的区别


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

 

离线文件的烧录方法

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

STM32开发中hex文件、bin文件和axf文件的区别


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

STM32开发中hex文件、bin文件和axf文件的区别


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

STM32开发中hex文件、bin文件和axf文件的区别

到此,相信大家对“STM32开发中hex文件、bin文件和axf文件的区别”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI