目录
概述
1 hex文件和bin文件
1.1 认识.hex文件
1.1.1 hex文件内容
1.1.2 hex文件格式介绍
1.1.3 认识几个数据类型
1.2 .bin文件
2 Keil 开发工具生成.hex和.bin
2.1 生成.hex文件
2.2 生成.bin文件
概述
本位主要介绍.hex文件和.bin文件的相关内容,重点介绍了hex文件的格式,其非常有利于学习如何解析.hex文件,还介绍使用keil编译生成hex和bin文件的方法。
1 hex文件和bin文件
使用Keil V5.38编译项目时,其仅仅生成.hex文件,但是在实际项目开发过程中,有时需要生成.bin文件。在MCU中,实际运行的代码也是.bin文件。那么hex文件与.bin文件有啥区别呢?
1.1 认识.hex文件
1.1.1 hex文件内容
打开一个.hex文件,查看其文件内容,笔者使用notepad++打开.hex文件,打开文件后,其内容如下:
文件起始部分内容
文件结束部分内容
1.1.2 hex文件格式介绍
笔者以如下语句介绍.hex文件内容的格式特点
数据格式
该数据对应的字节数据为:
10 00F0 00 87030008870300088703000887030008 B8
字节位置内容描述Byte010数据长度Byte1~Byte200F0该行数据的偏移地址Byte300数据类型Byte4~Byte n87 ... 08数据内容Byte n+1B8和校验位 ( Byte0 + Byte1 + .. + Byte n)
上表中byte3表示数据类型,hex文件中数据类型有如下6种:
数据值描述00Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录01End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾02Extended Segment Address Record: 用来标识扩展段地址的记录03Start Segment Address Record:开始段地址记录04Extended Linear Address Record: 用来标识扩展线性地址的记录05Start Linear Address Record:开始线性地址记录
1.1.3 认识几个数据类型
1) 扩展线性地址
02 0000 04 0800 F2
根据数据格式分析:
数据长度: 02
数据类型: 04
数据内容: 0800
校验位: F2
字节含义内容描述数据长度02数据为2个字节数据类型04扩展段地址数据内容0800扩展地址位 address = 0x0800<<16校验位F2Val = ~(0x02 + 0x04 + 0x08 + 0x00) + 0x01
2)开始线性地址
04 0000 05 08000299 54
根据数据格式分析:
数据长度:04
数据类型: 05
数据内容: 08000299
校验位: 54
字节含义内容描述数据长度04数据为4个字节数据类型05开始线性地址记录数据内容08000299扩展开始线性地址 address = 0x08000299校验位54Val = ~(0x04 + 0x05 + 0x08 + 0x00 + 0x02 + 0x99) + 0x01
3) HEX文件的结尾
00 0000 01 54
根据数据格式分析:
数据长度:00
数据类型: 01
校验位: FF
字节含义内容描述数据长度00数据为0个字节数据类型01标识HEX文件的结尾校验位FFVal = ~(0x00+ 0x00 + 0x00 + 0x01) + 0x01
1.2 .bin文件
.bin文件就是简单的二进制文件,没有格式,不含任何地址信息。所以,在使用编程器烧写.bin文件时,必须指定烧写地址,而烧写.hex文件时,则不需要这么做。
2 Keil 开发工具生成.hex和.bin
Keil开发工具编译代码时,可生成.hex文件和.bin文件可供用户选择
2.1 生成.hex文件
打开project配置面板,勾选Create HEX File,Kei会编译出.hex文件
编译项目后,其所在的文件路径,可点击如下图标查看
2.2 生成.bin文件
在user 面板配置如下代码:
fromelf --bin --output=$L@L.bin !L
编译项目后,其所在的文件路径,可点击如下图标查看