浅析hex和bin文件格式以及使用Keil编译生成hex和bin文件

浅析hex和bin文件格式以及使用Keil编译生成hex和bin文件

目录

概述

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

编译项目后,其所在的文件路径,可点击如下图标查看

❈ ❈ ❈

相关文章

✧ ✧ ✧
冰箱回气管结霜是什么原因 冰箱回气管结霜原因分析【详解】
交完电费该如何自行复电
beat365手机版

交完电费该如何自行复电

📅 07-26 👁️ 5503
.中国中文域名
beat365手机版

.中国中文域名

📅 10-15 👁️ 6947