浅析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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/536261.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python+Django+Html网页版人脸识别考勤打卡系统

程序示例精选 PythonDjangoHtml人脸识别考勤打卡系统 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonDjangoHtml网页版人脸识别考勤打卡系统》编写代码&#xff0c;代码整洁&#xf…

【Ubuntu】 Github Readme导入GIF

1.工具安装 我们使用 ffmpeg 软件来完成转换工作1.1 安装命令 sudo add-apt-repository ppa:jonathonf/ffmpeg-3sudo apt-get updatesudo apt-get install ffmpeg1.2 转换命令 &#xff08;1&#xff09;直接转换命令&#xff1a; ffmpeg -i out.mp4 out.gif(2) 带参数命令&…

怎么在外地控制自家的电视

怎么在外地控制自家的电视 随着科技的进步和智能家居的普及&#xff0c;远程控制家中的电器设备已经成为现实。电视作为家庭娱乐的中心&#xff0c;远程控制功能更是备受关注。那么&#xff0c;如何在外地控制自家的电视呢&#xff1f;本文将为你提供详细的步骤和有价值的信息…

中国网站数量竟然比2022年多了10000个

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 CNNIC发布了最新中国互联网报告&#xff0c;报告显示&#xff1a; 2018年中国有523万个网站&#xff0c;2023年13月下降到388万个&#xff0c;5年时间网站数量下降30%&#xff0c;但相比于2022年12月&#xff0c;竟…

Java后端基础知识(String类型)

String类的创建方式 String的特点 1.引用数据类型 2.是final类&#xff0c;一旦创建内容不可修改 3.String类对象相等的判断用equals&#xff08;&#xff09;方法完成&#xff0c;是判断地址数值 String的创建方式 1.直接创建 String str"hello";注意&#xff…

【ELFK】Filebeat+ELK 部署

FilebeatELK 部署 Node1节点&#xff08;2C/4G&#xff09;&#xff1a;node1/192.168.67.11 Elasticsearch Kibana Node2节点&#xff08;2C/4G&#xff09;&#xff1a;node2/192.168.67.12 Elasticsearch Apache节点&#xff1a;apache/192.168.67.10 …

二叉树的前序

1.递归 public boolean isSymmetric(TreeNode root) {if(root null){return true;}return deepCheck(root.left,root.right);}boolean deepCheck(TreeNode left, TreeNode right){//递归的终止条件是两个节点都为空//或者两个节点中有一个为空//或者两个节点的值不相等if(lef…

DePIN打猎之旅:AI算力作饵,道阻且长

出品&#xff5c;OKG Research 作者&#xff5c;Hedy Bi 香港Web3嘉年华已告一段落&#xff0c;然而Web3自由的脉搏还在跳动&#xff0c;并不断向其他行业渗透。和上一轮周期相比&#xff0c;本轮牛市开启的逻辑是由“原生创新叙事”转变成“主流认可&#xff0c;资金驱动”的…

ios包上架系列 四、虚拟机涉及网站

一、网站相关 苹果开发者平台 https://developer.apple.com/ 谷歌邮箱 https://mail.google.com/mail/u/0/#inbox 微云在线或者安装QQ https://www.weiyun.com/disk 下载下的为zip文件&#xff0c;需要复制里面的内容出来使用 二、环境配置 1、ios-upload 配置&#x…

水利自动化控制系统平台介绍

水利自动化控制系统平台介绍 在当今社会&#xff0c;水资源的管理和保护日益成为全球关注的重要议题。随着科技的进步和信息化的发展&#xff0c;水利监测系统作为一种集成了现代信息技术、自动化控制技术以及环境监测技术的综合性平台&#xff0c;正在逐步改变传统的水利管理模…

【Dijkstra单源最短路径解法】蓝桥杯2022年第十三届决赛真题-出差

我也来贡献一份题解&#xff1a;Dijkstra单源最短路径的简单变式【简单C代码】 这道题的前置知识的Dijkstra单源最短路径算法 如果还没学过&#xff0c;建议去看AcWing算法教程的**图论(2)**中最短路径问题的讲解,u1s1–y总讲的是真的通透&#xff01; 思路 这道题和单源最短路…

IJKPLAYER源码分析-iOS端显示

1 简介 1.1 EAGL(Embedded Apple Graphics Library) 与Android系统使用EGL连接OpenGL ES与原生窗口进行surface输出类似&#xff0c;iOS则用EAGL将CAEAGLLayer作为OpenGL ES输出目标。 与 Android EGL 不同的是&#xff0c;iOS EAGL 不会让应用直接向 BackendFrameBuffer 和 F…

Socks5代理IP如何获取?如何使用?

当我们在互联网上浏览网页、下载文件或者进行在线活动时&#xff0c;隐私和安全问题常常被提及。在这样的环境下&#xff0c;一个有效的解决方案是使用Sock5IP。本教程将向您介绍Sock5IP的使用方法&#xff0c;帮助您保护个人隐私并提升网络安全。 一、什么是Sock5IP&#xff1…

Elasticsearch部署安装

环境准备 Anolis OS 8 Firewall关闭状态&#xff0c;端口自行处理 Elasticsearch&#xff1a;7.16.1&#xff08;该版本需要jdk11&#xff09; JDK&#xff1a;11.0.19 JDK # 解压 tar -zxvf jdk-11.0.19_linux-x64_bin.tar.gz# 编辑/etc/profile vim /etc/profile# 加入如下…

Linux内核之Binder驱动红黑树:rb_root用法实例(四十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

SpringBoot - Logback 打印第三方 Jar 日志解决方案

问题描述 最近碰到一个很苦恼的问题&#xff0c;就是第三方的 Jar 在自己项目里日志可以正常输出&#xff0c;但是一旦被引用到其他项目里&#xff0c;就日志死活打不出来…… 解决方案 这是原来的配置 - logback.xml <?xml version"1.0" encoding"UTF-8…

【JavaScript】DOM编程-什么是事件

今天几号 实现效果&#xff1a; 在这个示例中我们的事件三要素都是什么呢&#xff1f; &#xff08;1&#xff09;事件源&#xff0c;事件被触发的对象 谁&#xff1a;按钮 &#xff08;2&#xff09;事件类型&#xff0c;如何触发&#xff0c;什么事件&#xff0c;比如鼠标…

SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测

SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测预测效果基本介绍模型描述程…

详解小度Wi-Fi内部芯片及电路原理图分析

小度随身WiFi是一款便携式USB路由器&#xff0c;它实现了用户跨终端联网&#xff0c;随身携带&#xff0c;可以在室内实现免费WiFi覆盖。外形美观&#xff0c;小巧便携。 这一款小度WiFi采用的主芯片是MT7601UN&#xff0c;一款高度集成的Wi-Fi单芯片&#xff0c;支持150 Mbp…

Java工具类:批量发送邮件(带附件)

​ 不好用请移至评论区揍我 原创代码&#xff0c;请勿转载&#xff0c;谢谢&#xff01; 一、介绍 用于给用户发送特定的邮件内容&#xff0c;支持附件、批量发送邮箱账号必须要开启 SMTP 服务&#xff08;具体见下文教程&#xff09;本文邮箱设置示例以”网易邮箱“为例&…