发新帖本帖赏金 30.00元(功能说明)我要提问
返回列表
[资料干货]

hex、Bin文件生成、下载的介绍

[复制链接]
1657|7
手机看帖
扫描二维码
随时随地手机跟帖
woai32lala|  楼主 | 2024-3-8 20:48 | 显示全部楼层 |阅读模式
本帖最后由 woai32lala 于 2024-3-8 20:51 编辑

#申请原创#@21小跑堂
hex、Bin文件生成、下载的介绍
一、前期准备

ST-LINK Utility 下载
链接:https://pan.baidu.com/s/1c-NIKXIm0pV6i8aVHvuGrA
提取码:6666

ST-LINK 驱动安装
链接:https://pan.baidu.com/s/1KazMDqA8s_0GOK1lpbe47g
提取码:5ola

二、生成文件方式
生成hex文件方式
下面以KEIL为例进行操作
打开工程文件,先点击魔术棒,然后点击Output,将Creat Hex File 打钩
3849365eb06dd45469.png
264665eb0718e3714.png
Select Folder for Object 为选择文件路径, Name of Executable 中的Name 为生成Hex文件的名字,如下图所示。
2931965eb07122dfcc.png
选择正确的路径后,点击全编译,我们就可以在OBJ文件中找到以LED为命名的Hex文件。

生成bin文件方式
1、以KEIL软件为例
打开工程文件,先点击魔术棒,然后点击User,fromelf.exe --bin -o "$L@L.bin" "#L"输入到AfterBuil/Rebuild中,并且是有前缀的,前缀为fromelf文件存在位置,一般为KEIL软件的安装位置,如下图所示。
2139765eb07518914b.png
1790365eb07584152c.png
点击编译选项,若文件路径不对,则会提示如下错误信息,提示不能打开某个文件,如下图所示。
5962165eb07625184e.png
若文件位置正确,则会提示下图,0 error(s),0 warning(s)
173065eb0767e6c4a.png

其他的还有使用软件将hex文件转为Bin文件的,在这就不举例了。

三、Hex/Bin文件区别
1、HEX文件
HEX文件中同时包含的数据和地址信息,所以  在烧写或下载HEX文件的时候,一般都不需要用户指定地址,是由编译器转换而成的一种用于下载到处理器里面的ASCII文本文件,文件格式是由一行一行的十六进制数据组成,每行包含:开始、长度、数据、类型、校验和等重要信息,hex文件用两个字符才能表示1个字节,再加上地址信息,所以hex文件的大小一般是bin文件的2至3倍。
3953065eb07ee11dd1.png
数据类型:
00:数据01:文件结束02:扩展段地址03:开始段地址04:扩展线性地址05:开始线性地址
经常用到的是00 数据和04地址

2、BIN文件
BIN文件只有纯粹的数据(代码)信息,就是一种没有格式的程序文件,只是包含了程序数据,并不包含地址,所以烧写BIN时就需要指定烧写地址,一般可以在烧写工具上修改。比调试可以用bin烧,因为其不指定写入地址,且可以指定烧录的起始地址;如要修改flash中后段的数据,就可以用bin从中间的地址开始烧,达到修改任意区域内数据的目的,通常用U盘升级,使用BootLoader时使用Bin文件

通过ST-LINK Utility软件打开同一工程的Hex、Bin文件,可以发现Hex文件是带地址的,烧录起始地址为0x8000000,Bin文件是不带烧录起始地址的,默认为0x00000000,直接烧录会导致程序出错,因此需要我们在烧录时加上。
7216365eb089598336.png
因为hex文件自带地址,我们在烧写程序时,一般有限选择Hex文件烧写,可以避免人为错误,在远程升级、U盘升级时,Bin文件更为适合,文件小,因为最终烧写进Flash的是Bin文件,省略了解析Hex文件的时间,烧录更快。

四、烧写
1、烧写Hex文件
stlinK烧录器以SWD方式连接MCU,打开ST-LINK Utility软件,打开hex文件,点击Target ->Connect,出现以下提示,则证明连接成功。
173565eb08aa9d498.png
点击Program Verity ,选择hex文件路径,可以看到下载的起始地址不能被更改。
点击Start。

8259765eb08b22cc6a.png
出现下图方框中信息,则说明程序下载成功,这是一个LED闪烁程序,可以在主板上看到LED在闪烁。
7147365eb08b8d6a28.png
2143565eb08bfe2f2a.png

2、烧写Bin文件
打开LED的bin文件
2213965eb09b1d7695.png 和hex文件烧录区别是,Bin文件Start Address地址默认为0,我们需要修改为08000000。
其他操作一样,正常下载即可。

我们在KEIL在线仿真时,下载的文件为axf文件,它的文件大小相比与hex、bin文件是最大的,是默认生成的。axf格式文件是针对ARM编译器的一种格式文件,它是由 ARM 编译器产生。axf文件除了包含程序数据(bin)和地址(hex)等数据之外,还包含调试信息。
axf文件内的调试信息附加在程序文件中,有助于分析和调试。

以上就是对hex、Bin文件生成、下载的介绍,如有错误请指教。

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 30.00 元 2024-03-12
理由:恭喜通过原创审核!期待您更多的原创作品~

评论
forgot 2024-3-13 09:43 回复TA
很全面 
21小跑堂 2024-3-12 17:40 回复TA
hex、Bin文件生成、下载步骤,以及两种文件的异同对比。 

相关帖子

AProgrammer| | 2024-3-13 09:09 | 显示全部楼层
很好,很详细

使用特权

评论回复
起点116| | 2024-3-18 05:50 | 显示全部楼层
感谢分享

使用特权

评论回复
110xia| | 2024-3-18 22:13 | 显示全部楼层
学习了

使用特权

评论回复
[鑫森淼焱垚]| | 2024-3-22 09:36 | 显示全部楼层
有用的资料,点赞

使用特权

评论回复
发新帖 本帖赏金 30.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

103

主题

519

帖子

5

粉丝