0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式bin文件和elf文件重点

Q4MP_gh_c472c21 来源:未知 作者:李倩 2018-05-15 11:04 次阅读

文件格式

(1)BIN文件:binary文件,即二进制文件。

(2)HEX文件:hex的全称是Intel HEX,此类文件通常用于传输将被存于ROM或者EPROM中的程序和数据。是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。大多数EPROM编程器或模拟器使用Intel HEX文件。 HEX文件记录由对应机器语言码和/或常量数据的十六进制编码数字组成。

(3)ELF文件: 是Linux的主要可执行文件格式。 ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。

(4)bin文件和elf文件重点摘要:

执行raw binary很简单,只需要将程序加载到其起始地址,就可以执行; 执行ELF程序则需要一个ELF Loader。 现在知道了吧,uboot和Linux kernel启动的时候是没有ELF Loader的,所以烧在flash上的文件只能是raw binary格式的,即镜像文件image。

a)通过gcc编译出来的是elf文件

b)通过objcpy可以把elf文件转换为bin文件

(5)LDS文件:它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。指定连接文件的存储地址、运行地址,存储地址和运行地址可以相同也可以不同。转自:https://wenku.baidu.com/view/9a8beb125f0e7cd18425369a.html

(6)map文件:map文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,是整个程序工程信息的静态文本,通常由linker生成。 map文件保存整个工程的静态文本信息,里面有所有函数的入口地址。

通过查看map文件,我们可以找到代码段(.text),全局未初始化区(.bss),数据段(.data)。

map文件的作用是,我们可以根据程序产生错误地址在map文件中找到相应的函数、变量地址。

(7)symbol文件:目标文件的值、类型、名字,例如: 00000024 T cleanup_before_linux

00000024是以16进制显示的其值,T为类型表示此函数位于代码区,而cleanup_before_linux是其名字。可以看出,上面显示的cleanup_before_linux这个symbol的值实际上是该函数在text section中的偏移。但是,每个符号的值的具体含义依其类型而异(类型见原文)。当然,对于每个符号的值,其类型、其值以及它们所属的section是密切相关的。

(8)Code:代表执行的代码,程序中所有的函数都位于此处。

RO-data: 代表只读数据,程序中所定义的全局常量数据和字符串都位于此处。

RW-data:代表已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量位于此处。

ZI-data:代表未初始化的读写数据,程序中定义了但没有初始化的全局变量和静态变量位于此处。

一、下载到FLASH中的数据大小是:(Code + RO Data + RW Data)这个数据关系到占用了多少单片机的FLASH,关系到是否可以再添加程序。比如你的单片机FLASH是8K,编译程序后,发现程序已经7K了,但是工程还需要写很多程序,那就可以考虑换个FLASH大点的单片机了。

二、程序运行是要在RAM中运行的大小是:(RW Data + ZI Data) 单片机的两个重要参数,一个是上面的FLASH大小,一个是RAM大小。看了第一条,就知道这条的重要性。

刚入门的,看程序的大小,会看HEX文件在WINDOWS中的占用大小来确定占用FLASH的大小,是不对的。

这个HEX文件在电脑上的大小是4.46KB,但是它只会占用单片机FLSAH的1.57KB,如下图所示:

(提示:在你生成的工程中的Listings文件夹里面,有一个.map后缀的文件,拉到最后面,就有算好的大小)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4981

    文章

    18274

    浏览量

    288344
  • 二进制
    +关注

    关注

    2

    文章

    705

    浏览量

    41248
  • bin
    bin
    +关注

    关注

    1

    文章

    33

    浏览量

    13285

原文标题:嵌入式各种文件扫盲BIN,hex.....

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式系统:11-2 实验-FAT文件系统的使用#嵌入式系统

    嵌入式文件文件系统
    学习电子
    发布于 :2022年11月12日 21:55:48

    嵌入式控制系统及应用:【视频】 7.1 文件的属性#嵌入式系统

    嵌入式文件
    学习电子
    发布于 :2022年11月13日 09:17:04

    嵌入式控制系统及应用:【视频】 7.2 文件操作#嵌入式系统

    嵌入式文件
    学习电子
    发布于 :2022年11月13日 09:20:08

    嵌入式控制系统及应用:【视频】 7.3 文件操作举例#嵌入式系统

    嵌入式文件
    学习电子
    发布于 :2022年11月13日 09:21:59

    嵌入式学习——ElfBoard ELF1板卡 之文件系统的介绍

    文件系统通常提供目录或文件夹用于记录文件,在很多系统中目录本身也是文件,在这些系统中,目录是管理文件系统结构的系统
    发表于 11-24 10:02

    转换M34508 TXT文件BIN文件

    转换M34508 TXT文件BIN文件-TXT To BIN For Renesas M34508
    发表于 12-27 18:32 106次下载

    如何在MDk生成bin格式的文件

    更习惯于使用*.bin格式的文件,甚至有些嵌入式软件开发者已经拥有了*.bin格式文件的调试或烧写工具。为了充分地利用现有的工具,同时发挥R
    发表于 05-16 17:22 4次下载
    如何在MDk生成<b class='flag-5'>bin</b>格式的<b class='flag-5'>文件</b>

    ELF相比Hex、Bin文件格式有哪些不同?

    素材来源:综合CSDN 编辑整理:strongerHuang 关于计算机的文件有很多种,今天分享一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。 一、
    的头像 发表于 10-16 09:54 5162次阅读
    <b class='flag-5'>ELF</b>相比Hex、<b class='flag-5'>Bin</b><b class='flag-5'>文件</b>格式有哪些不同?

    嵌入式C语言-文件操用

    嵌入式C语言-文件操用(嵌入式开发需要什么证书)-嵌入式C语言-文件操用,有需要的可以参考!
    发表于 07-30 11:56 15次下载
    <b class='flag-5'>嵌入式</b>C语言-<b class='flag-5'>文件</b>操用

    支持Hex、Bin、Motorola S文件的开源库使用

    转换。其支持文件信息快速查看、分段数据处理。 镜像文件格式 嵌入式系统中各种系统镜像常用已下几种文件格式来保存: hex格式:包含地址信息,由多行纪录条目组成的文本格式
    的头像 发表于 08-18 09:39 1733次阅读

    在MDK中如何生成bin格式的文件

    更习惯于使用*.bin格式的文件,甚至有些嵌入式软件开发者已经拥有了*.bin格式文件的调试或烧写工具。为了充分地利用现有的工具,同时发挥R
    发表于 09-29 16:29 0次下载

    一文弄懂BIN、HEX、AXF、ELF文件格式的区别

    bin文件是纯粹的机器码,没有地址信息,不能使用记事本直接打开,要使用bin文件阅读器才能打开,如果使用bin
    的头像 发表于 11-21 14:39 2994次阅读

    常用的BIN文件操作总结

    BIN文件,即二进制文件,广泛应用于嵌入式,我们常用的Firmware通常会以BIN文件或者HE
    的头像 发表于 02-28 14:34 2.9w次阅读
    常用的<b class='flag-5'>BIN</b><b class='flag-5'>文件</b>操作总结

    浅析HEX和BIN文件

    BIN文件是单纯的二进制程序文件,内部没有地址信息。如果使用BIN文件烧录程序时,需要指定下载地址。
    的头像 发表于 04-24 17:32 3440次阅读
    浅析HEX和<b class='flag-5'>BIN</b><b class='flag-5'>文件</b>

    keil如何生成bin文件

    Keil是一种集成开发环境(IDE),专为ARM架构的嵌入式系统开发而设计。在Keil中生成bin文件是将代码编译并转换为可执行文件的过程。本文将详细介绍Keil生成
    的头像 发表于 12-15 13:43 3100次阅读