本帖最后由 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 打钩 Select Folder for Object 为选择文件路径, Name of Executable 中的Name 为生成Hex文件的名字,如下图所示。 选择正确的路径后,点击全编译,我们就可以在OBJ文件中找到以LED为命名的Hex文件。
生成bin文件方式 1、以KEIL软件为例 打开工程文件,先点击魔术棒,然后点击User,fromelf.exe --bin -o "$ L@L.bin" "#L"输入到AfterBuil/Rebuild中,并且是有前缀的,前缀为fromelf文件存在位置,一般为KEIL软件的安装位置,如下图所示。 点击编译选项,若文件路径不对,则会提示如下错误信息,提示不能打开某个文件,如下图所示。 若文件位置正确,则会提示下图,0 error(s),0 warning(s)
其他的还有使用软件将hex文件转为Bin文件的,在这就不举例了。
三、Hex/Bin文件区别 1、HEX文件 HEX文件中同时包含的数据和地址信息,所以 在烧写或下载HEX文件的时候,一般都不需要用户指定地址,是由编译器转换而成的一种用于下载到处理器里面的ASCII文本文件,文件格式是由一行一行的十六进制数据组成,每行包含:开始、长度、数据、类型、校验和等重要信息,hex文件用两个字符才能表示1个字节,再加上地址信息,所以hex文件的大小一般是bin文件的2至3倍。 数据类型: 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,直接烧录会导致程序出错,因此需要我们在烧录时加上。 因为hex文件自带地址,我们在烧写程序时,一般有限选择Hex文件烧写,可以避免人为错误,在远程升级、U盘升级时,Bin文件更为适合,文件小,因为最终烧写进Flash的是Bin文件,省略了解析Hex文件的时间,烧录更快。
四、烧写 1、烧写Hex文件 stlinK烧录器以SWD方式连接MCU,打开ST-LINK Utility软件,打开hex文件,点击Target ->Connect,出现以下提示,则证明连接成功。 点击Program Verity ,选择hex文件路径,可以看到下载的起始地址不能被更改。 点击Start。
出现下图方框中信息,则说明程序下载成功,这是一个LED闪烁程序,可以在主板上看到LED在闪烁。
2、烧写Bin文件 打开LED的bin文件
和hex文件烧录区别是,Bin文件Start Address地址默认为0,我们需要修改为08000000。 其他操作一样,正常下载即可。
我们在KEIL在线仿真时,下载的文件为axf文件,它的文件大小相比与hex、bin文件是最大的,是默认生成的。axf格式文件是针对ARM编译器的一种格式文件,它是由 ARM 编译器产生。axf文件除了包含程序数据(bin)和地址(hex)等数据之外,还包含调试信息。 axf文件内的调试信息附加在程序文件中,有助于分析和调试。
以上就是对hex、Bin文件生成、下载的介绍,如有错误请指教。
|
很全面
hex、Bin文件生成、下载步骤,以及两种文件的异同对比。