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后缀的文件,拉到最后面,就有算好的大小)

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

    关注

    5091

    文章

    19176

    浏览量

    307259
  • 二进制
    +关注

    关注

    2

    文章

    796

    浏览量

    41746
  • bin
    bin
    +关注

    关注

    1

    文章

    33

    浏览量

    13421

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

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

收藏 人收藏

    评论

    相关推荐

    嵌入式Linux根文件系统构建指南

    嵌入式 Linux 根文件系统布局,建议还是按照FHS标准来安排,事实上大多数嵌入式Linux都是这样做的。但是,嵌入式系统可能并不需要桌面/服务器那样庞大系统的全部目录,可以酌情对系
    发表于 02-22 09:41 624次阅读

    2016嵌入式赛项文件

    2016年全国职业技能大赛嵌入式应用开发比赛的比赛文件及样题。
    发表于 05-13 16:40 6次下载

    详解嵌入式linux文件类型

    学习嵌入式linux系统开发,对于linux文件类型需要有很深的理解。Linux文件类型常见的有普通文件、目录文件、符号链接
    发表于 06-11 16:29 1033次阅读
    详解<b class='flag-5'>嵌入式</b>linux<b class='flag-5'>文件</b>类型

    嵌入式文件系统及特点

      近年来,计算机嵌入式逐渐被人们所追捧,想要学习嵌入式当然离不开嵌入式系统啦,下面尚观教育小编带同学们了解嵌入式文件系统及其特点。  
    发表于 09-06 14:29 1222次阅读

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

    习惯于使用*.bin格式的文件,甚至有些嵌入式软件开发者已经拥有了*.bin格式文件的调试或烧写工具。为了充分地利用现有的工具,同时发挥Re
    发表于 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 5587次阅读
    <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>操用

    嵌入式文件操作

    嵌入式】串口间的通信1. 操作内容2. 操作步骤3. 操作结果1. 操作内容通过编写文件读写及上锁的程序,熟悉Linux中文件I/O相关的应用开发;掌握fopen()、fread()、fwrite
    发表于 10-20 15:21 1次下载
    【<b class='flag-5'>嵌入式</b>】<b class='flag-5'>文件</b>操作

    嵌入式Linux系统移植-(Linux文件系统)

    嵌入式Linux系统移植-(Linux文件系统)嵌入式文件系统概述·文件是有组织、有次序地存储在某种介质上的一组信息的集合,是用来存储信息的
    发表于 11-02 12:51 16次下载
    <b class='flag-5'>嵌入式</b>Linux系统移植-(Linux<b class='flag-5'>文件</b>系统)

    视频教程-嵌入式Linux文件与串口编程-嵌入式

    嵌入式Linux文件与串口编程 嵌入式工程师、嵌入式讲师、10多年
    发表于 11-02 15:06 15次下载
    视频教程-<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>文件</b>与串口编程-<b class='flag-5'>嵌入式</b>

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

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

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

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

    常用的BIN文件操作总结

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

    浅析HEX和BIN文件

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

    keil如何生成bin文件

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