【ARMv8M Cortex-M33 系列 2.1 -- Cortex-M33 使用 .hex /.srec 文件介绍】


请阅读【嵌入式开发学习必备专栏 之Cortex-M33 专栏】


文章目录

    • HEX 文件介绍
      • 英特尔十六进制文件格式
      • 记录类型
      • hex 示例
      • Cortex-M 系列hex 文件的使用
    • hex 文件和srec 文件生成
      • Motorola S-Record (srec) 格式

HEX 文件介绍

.hex 文件通常用于微控制器编程,包括 ARM Cortex-M 系列微控制器。这种文件格式是一种文本记录,用于在编程时传递二进制信息。.hex 文件格式最常见的是英特尔十六进制(Intel Hex)格式,它由英特尔公司开发,用于在80x86和相关处理器系列中传输二进制数据。

英特尔十六进制文件格式

英特尔十六进制文件包含一系列的记录(record),每条记录都在新的一行开始。每条记录有一定的格式,如下所示:

:LLAAAATT[DD...]CC 

这里,各字段的含义如下:

  • ::记录开始的标记。
  • LL:记录中数据字节的数量,用两个十六进制数字表示。
  • AAAA:地址字段,记录的数据应放置在内存的哪个位置。
  • TT:记录类型,定义这条记录的数据是用于数据记录、文件结束记录,还是其他。
  • [DD...]:数据字段,它包含了 LL 字段指定数量的数据字节。
  • CC:校验和,一条记录的所有字节相加后取反再加一,仅保留最低一个字节。

记录类型

记录类型 TT 可以是以下几种之一:

  • 00:数据记录,含有应写入内存的数据。
  • 01:文件结束记录,无数据字段,表明文件结束。
  • 02:扩展段地址记录,用于指定后续数据记录的高16位基地址。
  • 03:起始段地址记录,为80x86 CPU 指定初始CS:IP。
  • 04:扩展线性地址记录,改变后续数据记录的高16位基地址。
  • 05:起始线性地址记录,为32位CPU指定初始EIP。

hex 示例

下面是一个简单的英特尔十六进制文件的例子:

:10010000214601360121470136007EFE09D2190140 
:100110002146017E17C20001FF5F16002148011928
:00000001FF 

这个例子包含两条数据记录和一条文件结束记录。第一条记录表示在地址 0x0100 开始,有16个字节的数据要写入。第二条记录也是类似的数据记录,但是数据和地址不同。最后一条记录是文件结束记录,它标志着 .hex 文件的结束。

Cortex-M 系列hex 文件的使用

对于 ARM Cortex-M 系列微控制器,.hex 文件通常由编译器或链接器生成,用于在微控制器上编程应用程序。

以在 RT-Thread 中编译 ra4m2 生成的 hex文件为例,其开始及结束部分如下:

00000000: 3030313a 30303030 31303930 32303033  :100000009013002
00000010: 33353830 30303045 34444530 30303032  0853E0000ED42000
00000020: 30374230 30303038 0d433730 30313a0a  0B70800007C..:10
00000030: 30313030 33393030 30304533 33393030  001000933E000093
00000040: 30304533 33393030 30304533 33393030  3E0000933E000093
00000050: 30304533 43393030 313a0a0d 32303030  3E00009C..:10002
...0021cc0: 46464646 45414646 303a0a0d 43324143  FFFFFFAE..:0CA2C
00021cd0: 46303030 46464646 46464646 46464646  000FFFFFFFFFFFFF
00021ce0: 46464646 46464646 39464646 3a0a0d45  FFFFFFFFFFF9E..:
00021cf0: 30303430 33303030 30303030 35384533  0400000300003E85
00021d00: 0a0d3633 3030303a 30303030 0d464631  36..:00000001FF.
00021d10:       0a     

可以使用 JTAG 或 SWD 调试器,比如 SEGGER’s J-Link,或者使用内置的引导加载程序通过USB或串行接口将 .hex 文件烧录到微控制器上。
在这里插入图片描述

这些文件包含了应用程序代码(机器代码)、常量、以及可能的初始化数据。在微控制器启动时,这些数据会被加载到其闪存或RAM中,以便执行。

hex 文件和srec 文件生成

arm-none-eabi-objcopy 是一个用于处理对象文件的工具,它是 GNU 二进制工具集(Binutils)的一部分,常用于嵌入式 ARM 开发。这个工具可以用来转换文件格式、提取部分内容、删除段等。其中,ihexsrec 参数用于将二进制对象文件转换为 Intel HEX 格式或者 Motorola S-Record 格式。

使用 arm-none-eabi-objcopy 将 ELF 格式的文件转换为 Intel HEX 格式的命令如下:

arm-none-eabi-objcopy -O ihex input_file.elf output_file.hex 

在这个命令中:

  • -O ihex 选项指定输出文件应为 Intel HEX 格式。
  • input_file.elf 是输入文件,通常是编译链接生成的 ELF 文件。
  • output_file.hex 是转换后的 Intel HEX 文件。

Motorola S-Record (srec) 格式

Motorola S-Record 是另一种文本文件格式,用于表示内存的内容。与 Intel HEX 类似,每行包含了长度、地址、数据以及校验和。S-Record 格式同样适用于微控制器和其他设备上的编程和数据传输。

将 ELF 格式的文件转换为 S-Record 格式的命令如下:

arm-none-eabi-objcopy -O srec input_file.elf output_file.srec 

在这个命令中:

  • -O srec 选项指定输出文件应为 Motorola S-Record 格式。
  • input_file.elf 是输入文件。
  • output_file.srec 是转换后的 S-Record 文件。

注意事项

  • 在使用 arm-none-eabi-objcopy 转换文件格式时,确保输入文件是正确的并且已经包含了所有必要的内容,因为 objcopy 只是转换文件格式,并不会解决链接错误或丢失的段和符号等问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蜕变,我的2023

作者:苍何,前大厂高级 Java 工程师,阿里云专家博主,CSDN 2023 年 实力新星,土木转码,现任部门技术 leader,专注于互联网技术分享,职场经验分享。 🔥热门文章推荐&#xf…

react-router-dom5升级到6

前言 升级前版本为5.1.2 下载与运行 下载 npm install react-router-dom6运行 运行发现报错: 将node_modules删除,重新执行npm i即可 运行发现如下报错 这是因为之前有引用react-router-dom.min,v6中取消了该文件,所以未找到文件导致报错。…

抖音详情API:开发环境搭建与工具选择

随着短视频的流行,抖音已经成为了一个备受欢迎的社交媒体平台。对于开发人员而言,利用抖音详情API开发定制化的抖音应用具有巨大的潜力。本文将为你详细介绍开发抖音应用的开发环境搭建与工具选择,帮助你顺利地开始开发工作。 一、开发环境搭…

【网络安全 | Misc】miss_01 太湖杯

解压时提示输入密码: 如果 frFlags 或 deFlags 不为0会导致zip的伪加密 将deFlags的值修改为0 将9改为0,另存为123.zip: 即可绕过加密: 得到一个zip一个docx,但zip需要密码: 因此看docx有无敏感信息&#x…

机器学习、人工智能、深度学习的关系

人工智能(Artificial Intelligence,AI) 人工智能范围很广,它是一门新的科学与工程,是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的技术科学,研究内容涵盖语音识别、图像识别、自然语言处理、智能搜索和…

计算机毕业设计------ssm茶叶溯源系统

项目介绍 茶叶溯源系统,分为前台与后台。普通用户可在前台通过18位的编码查询茶叶的出售历史。 后台分为两种角色,管理员与经销商; 管理员主要功能包括: 主界面; 管理员管理:管理员列表、添加管理员&am…

跨域请求:Go语言下的“通天大道”

开场白:嘿,各位Go语言的爱好者们,你们是否曾经遇到过这样的困扰:当你的Go应用试图与另一个域的API进行交流时,突然跳出一个“未允许的跨域请求”的警告?别担心,今天,我们将一起在这条…

005、数据类型

1. 关于数据类型 Rust中,每个值都有其特定的数据类型,Rust会根据数据的类型来决定如何处理它们。 Rust是一门静态类型语言,它在编译程序的过程中就需要知道所有变量的具体类型。在大部分情况下,编译器可以根据我们如何绑定、使用变…

软件测试/测试开发丨Python 内置装饰器 学习笔记

内置类装饰器 不用实例化、直接调用提升代码的可读性 内置装饰器含义classmethod类方法staticmethod静态方法 普通方法 定义: 第一个参数为self,代表 实例本身 调用: 要有实例化的过程,通过 实例对象.方法名 调用 # 1. 定义 c…

unity控制摄像机几种视角实现方式

目录 1、按下鼠标右键可以实现摄像机上下左右旋转 2、自由视角 3、摄像头跟随视角 4、跟随自由视角 5、第一人称跟随视角 python学习汇总连接: 1、按下鼠标右键可以实现摄像机上下左右旋转 这段代码定义了一个名为CameraRotate的脚本,用于控制摄像…

2023年终总结 —— 我和CSDN相遇的第一年之“技术学习和个人成长的回顾与展望”

​ ​ 🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 🎊对2023的总结与回顾🎊 🏅获奖记录 📚学…

机器学习库【03】:-NumPy-算术运算

一、说明 与常规数学一样,数组算术本质上是关于加法、减法、乘法和除法。在 中NumPy,此类操作是按元素执行的 [2]: NumPy 是 Numerical Python 的缩写,是 Python 生态系统中一个功能强大的库,它提供对大型多维数组和矩…

CentOS虚拟机硬盘管理

CentOS虚拟机硬盘管理 一、创建虚拟机时分配硬盘 创建虚拟机时,在下图这个页面需要重新选择一下硬盘,可以对硬盘进行配置。 默认自动分区 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e9ce72af3d934e75be95f7f86860e92b.png 选择确认分…

EasyExcel详解(结合官方文档)

EasyExcel 零、前言 文章是根据官方文档&#xff0c;加上自己的测试运行总结出来的&#xff0c;目前只总结的EasyExcel读的部分&#xff0c;写的部分还未完结&#xff0c;后续会更新1、官方文档 https://easyexcel.opensource.alibaba.com/2、EasyExcel的maven依赖 <!--…

私有部署ELK,搭建自己的日志中心(三)-- Logstash的安装与使用

一、部署ELK 上文把采集端filebeat如何使用介绍完&#xff0c;现在随着数据的链路&#xff0c;继续~~ 同样&#xff0c;使用docker-compose部署&#xff1a; version: "3" services:elasticsearch:container_name: elasticsearchimage: elastic/elasticsearch:7.9…

git基础概念和常用命令(日常开发收藏备用)

目录 ### 常用命令 ### 远程仓库与克隆 ### 分支管理 ### 子模块&#xff08;Submodule&#xff09; ### 其他高级操作 ### 交互式暂存&#xff08;Interactive Staging&#xff09; ### cherry-pick ### rebase ### reflog与reset ### 子树合并&#xff08;Subtree …

【LearnOpenGL基础入门——5】着色器

目录 一.简介 二.GLSL 三.数据类型 四.输入与输出 五.Uniform 六.更多属性 一.简介 着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说&#xff0c;着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立…

【基础】【Python网络爬虫】【5.数据解析】bs4、Xpath、Parsel模块、正则表达式(附大量案例代码)(建议收藏)

Python网络爬虫基础 数据解析1. 为何数据解析2. 常见的数据类型结构化数据半结构化数据非结构化数据 3. 爬虫项目实现步骤 数据解析模块1. Bs4环境安装bs4解析流程案例 - bs4碧血剑文本爬取 2. Xpath环境安装xpath解析的编码流程xpath表达式如何理解&#xff1f;案例 - 简历模板…

第3课 使用FFmpeg获取并播放音频流

本课对应源文件下载链接&#xff1a; https://download.csdn.net/download/XiBuQiuChong/88680079 FFmpeg作为一套庞大的音视频处理开源工具&#xff0c;其源码有太多值得研究的地方。但对于大多数初学者而言&#xff0c;如何快速利用相关的API写出自己想要的东西才是迫切需要…

Android studio 多界面的跳转和返回

一、新建一个Empty Activity项目&#xff1a; 二、修改activity_main.xml布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/a…