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

本文详细介绍了.hex和.bin文件的区别,包括.hex文件的格式、数据类型以及Keil开发工具如何生成这两种文件。着重讲解了.hex文件的结构和.bin文件的简单二进制特性,以及在实际项目中的应用.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

概述

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

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

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识点解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“橙点同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值