当前位置: 首页 > news >正文

Bin、Hex、ELF、AXF的区别

1.Bin

Bin文件是最纯粹的二进制机器代码, 或者说是"顺序格式"。按照assembly code顺序翻译成binary machine code,内部没有地址标记。Bin是直接的内存映象表示,二进制文件大小即为文件所包含的数据的实际大小。 BIN文件就是直接的二进制文件,一般用编程器烧写时从00开始,而如果下载运行,则下载到编译时的地址即可。可以直接在裸机上运行。

2.Hex

Intel hex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。 就是机器代码的十六进制形式,并且是用一定文件格式的ASCII码来表示。

简单总结一下这2种文件格式的区别:
1、HEX文件包含地址信息而BIN文件只包含数据本身,烧写或下载HEX文件时,一般不需要用户指定地址,因为HEX文件内部已经包含了地址信息。烧写BIN文件时则需要用户指定烧录的地址信息。
2、HEX文件是用ASCII码来表示二进制的数值。例如8-BIT的二进制数值0x4E,用ASCII来表示就需要分别表示字符‘4’和字符‘E’,每个字符均需要一个字节,因此HEX文件至少需要2倍BIN文件的空间。

3.ELF

ELF(Executableand linking format)文件是x86 Linux系统下的一种常用目标文件(objectfile)格式,有三种主要类型:

(1)适于连接的可重定位文件(relocatablefile),可与其它目标文件一起创建可执行文件和共享目标文件。
(2)适于执行的可执行文件(executable file),用于提供程序的进程映像,加载到内存执行。
(3)共享目标文件(shared object file),连接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件,动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。 

小结:可由elf文件转化为hex和bin两种文件,hex也可以直接转换为bin文件,但是bin要转化为hex文件必须要给定一个基地址。而hex和bin不能转化为elf文件,因为elf的信息量要大。Axf文件可以转化为bin文件,KEIL下可用以下命令fromelf -nodebug xx.axf -bin xx.bin即可。

4.AXF

Axf文件由ARM编译器产生,除了包含bin的内容之外,还附加其他调试信息,这些调试信息加在可执行的二进制数据之前。调试时这些调试信息不会下载到RAM中,真正下载到RAM中的信息仅仅是可执行代码。因此,如果ram的大小小于axf文件的大小,程序是完全有可能在ram中调试的,只要axf除去调试信息后文件大小小于ram的大小即可。

调试信息有以下功用:
1、 可将源代码包括注释夹在反汇编代码中,这样我们可随时切换到源代码中进行调试。
2、 我们还可以对程序中的函数调用情况进行跟踪(通过Watch & Call Stack Window查看)。
3、对变量进行跟踪(利用Watch & Call Stack Window)。

注意:

(1)axf和elf都是编译器生成的可执行文件。区别是:ADS编译出来的是AXF文件。gcc编译出来的是ELF文件。两者虽然很像,但还是有差别的。这是文件格式的差别,不涉及调试格式。

(2)axf/elf是带格式的映象,bin是直接的内存映象的表示。

(3)Linux OS下,ELF通常就是可执行文件,通常gcc -o test test.c,生成的test文件就是ELF格式的,在Linux Shell下输入./test就可以执行。在Embedded中,上电开始运行,没有OS系统,如果将ELF格式的文件烧写进去,包含一些ELF格式的东西,arm运行碰到这些指令,就会导致失败,如果用bin文件,程序就可以一步一步运行。

所以:HEX和bin文件可以在裸机上运行,而ELF文件是在有OS的环境中运行的。

elf(executable  and   link   format)文件里面包含了符号表,汇编,调试信息等,并不能直接运行。
BIN文件是将elf文件中的代码段,数据段,还有一些自定义的段抽取出来做成的一个内存的镜像。

BIN文件需要用objcopy工具,将ELF中的上述信息拷贝出来。(objcopy只是完成两个obj文件内容的拷贝,那如何控制elf生成bin呢?)

下面这个是ELF格式的详细介绍,还有Linux下ELF文件的运行原理和过程。

ELF文件的加载和动态链接过程 - - ITeye博客

相关文章:

Bin、Hex、ELF、AXF的区别

1.Bin Bin文件是最纯粹的二进制机器代码, 或者说是"顺序格式"。按照assembly code顺序翻译成binary machine code,内部没有地址标记。Bin是直接的内存映象表示,二进制文件大小即为文件所包含的数据的实际大小。 BIN文件就是直接的二进制文件&…...

IDEA安装教程

文章目录 1 下载IntelliJ IDEA2 安装3 IDEA配置4 创建项目 1 下载IntelliJ IDEA ​ 官方网站上下载最新版本的IntelliJ IDEA。官方网站提供了两个版本:Community版和Ultimate版。 Community版是免费的,适用于个人和非商业用途。Ultimate版则需要付费购…...

DRF-项目-(1):构建纯净版的drf项目,不再使用django的后台管理,django的认证,django的session等功能,作为一个纯接口项目

项目的目录结构: -HeartFailure |-- apps |--user |--HeartFailure |-- static |--manage.py 一、django项目相关的 1、命令行中创建django项目 #1、切换到指定的虚拟环境中 workon my_drf#2、该虚拟环境已经安装好django和rest_framework了 django-admin startp…...

ubuntu 手动清理内存cache

/proc是一个虚拟文件系统,我们可以通过对它的读写操作来做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。 那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。操作如下: …...

gitBash中如何使用Linux中的tree命令

文章目录 在gitBash中安装tree的目的如何安装安装完成,就可以直接完美适配Linux系统了 在gitBash中安装tree的目的 如下图,powershell虽然可以看做是window下的Linux系统,但是根本就不适配很多Linux中的命令 如何安装 tree.exe安装网址 下载 tree 命令的 二进制包&#xf…...

【鸿蒙应用ArkTS开发系列】- 灌水区,鸿蒙ArkTs开发有问题可以在该帖中反馈

大家好, 这是一篇水贴,给大家提供一个交流沟通鸿蒙开发遇到问题的地方。 新增新增这个文章呢,大家在开发使用ArkTS开发鸿蒙应用或者鸿蒙服务的时候,有遇到疑问或者问题,可以在本文章评论区提问,我看到了如果知道怎么…...

c语言习题1124

分别定义函数求圆的面积和周长。 写一个函数,分别求三个数当中的最大数。 写一个函数,计算输入n个数的乘积 一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息 写一个函数求n! ,利用该函数求1!2&…...

线段树---数据结构学习

线段树的教程可以参照线段树 这里推荐 https://oi-wiki.org/ 这个网站,数据结构讲的非常透。 线段树学了很多次忘了很多次,这次打算记录一下以后方便回顾(leetcode这类题遇见的不算特别多)。 样板例题 leltcode-307 #题目样板 class NumArray {private …...

linux基础5:linux进程1(冯诺依曼体系结构+os管理+进程状态1)

冯诺依曼体系结构os管理 一.冯诺依曼体系结构:1.简单介绍(准备一)2.场景:1.程序的运行:2.登录qq发送消息: 3.为什么需要内存:1.简单的引入:2.计算机存储体系:3.内存的意义…...

JVM-基础

jdk7及以前: 通过-XX:PermSize 来设置永久代初始分配空间,默认值是20.75m -XX:MaxPermSize来设定永久代最大可分配空间,32位是64m,64位是82m jdk8及之后: 通过-XX:MetaspaceSize 来设置永久代初始分配空间&#xff…...

Baidu Comate 基于百度文心一言的智能编码助手

本心、输入输出、结果 文章目录 Baidu Comate 基于百度文心一言的智能编码助手前言产品能力主要功能特性JetBrains IntelliJ IDEA 插件安装相关链接花有重开日,人无再少年实践是检验真理的唯一标准Baidu Comate 基于百度文心一言的智能编码助手 编辑:简简单单 Online zuozuo …...

基本微信小程序的图书馆座位管理系统

项目介绍 图书馆因有良好的学习氛围、大量的学习资源吸引大家前来学习,图书馆还未开馆就有大量的用户在门口排队等待,有限的座位与日益增加的自主学习者之间形成了供不应求的现象,再加上不了解图书馆的座位使用情况和恶意占座等现象,使得有限的学习座位越发紧张。本团队针对此…...

2023年亚太杯数学建模A题水果采摘机器人的图像识别功能(免费思路)

中国是世界上最大的苹果生产国,年产量约为 3500 万吨。同时,中国也是世界上最大的苹果出口国,世界上每两个苹果中就有一个出口到国。世界上每两个苹果中就有一个来自中国,中国出口的苹果占全球出口量的六分之一以上。来自中国。中…...

AWS CLI和EKSCTL的客户端设置

文章目录 小结过程安装AWS CLI安装EKSCTL在两个Kubernetes Cluster之间切换 参考 小结 在Linux环境中对AWS CLI和EKSCTL的客户端进行了设置。 过程 安装AWS CLI 使用以下指令安装: curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"…...

分组背包问题学习笔记 AcWing 9. 分组背包问题

原题 有 N� 组物品和一个容量是 V� 的背包。 每组物品有若干个,同一组内的物品最多只能选一个。 每件物品的体积是 vij���,价值是 wij���,其中 …...

JSP EL 算数运算符逻辑运算符

除了 empty 我们这边还有一些基本的运算符 第一种 等等于 jsp代码如下 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %> <%request.setCharacterEncoding("UTF-8");%> <!DOCTYPE html> <html> …...

ubuntu22.04 arrch64版在线安装node

脚本 #安装node#下载node、npm国内镜像&#xff08;推荐&#xff09;# 判断是否安装了nodeif type -p node; thenecho "node has been installed."elsemkdir -p /home/zenglg cd /home/zenglgwget https://registry.npmmirror.com/-/binary/node/v10.14.1/node-v10.…...

腾讯云轻量数据库开箱测评,1核1G轻量数据库测试

腾讯云轻量数据库1核1G开箱测评&#xff0c;轻量数据库服务采用腾讯云自研的新一代云原生数据库TDSQL-C&#xff0c;轻量数据库兼100%兼容MySQL数据库&#xff0c;实现超百万级 QPS 的高吞吐&#xff0c;128TB海量分布式智能存储&#xff0c;虽然轻量数据库为单节点架构&#x…...

Linux安全之AIDE系统入侵检测工具安装和使用

一、AIDE 系统入侵检测工具简介 AIDE&#xff0c;全称为Advanced Intrusion Detection Environment&#xff0c;是一个主要用于检测文件完整性的入侵检测工具。它能够构建一个指定文件的数据库&#xff0c;并使用aide.conf作为其配置文件。AIDE数据库能够保存文件的各种属性&am…...

【Flink】状态管理

目录 1、状态概述 1.1 无状态算子 1.2 有状态算子 2、状态分类 ​编辑 2.1 算子状态 2.1.1 列表状态&#xff08;ListState&#xff09; 2.1.2 联合列表状态&#xff08;UnionListState&#xff09; 2.1.3 广播状态&#xff08;BroadcastState&#xff09; 2.2 按键分…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...