zoukankan      html  css  js  c++  java
  • 嵌入式文件格式说明

    文件格式
    (1)BIN文件:binary文件,即二进制文件。Bin目录用来保存项目生成后程序集,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。
     
    (2)HEX文件:hex的全称是Intel HEX,此类文件通常用于传输将被存于ROM或者EPROM中的程序和数据。是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。大多数EPROM编程器或模拟器使用Intel HEX文件。 HEX文件记录由对应机器语言码和/或常量数据的十六进制编码数字组成。
     
    (3)ELF文件: 是Linux的主要可执行文件格式。 ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。
     
    (4)bin文件和elf文件的区别见:http://blog.chinaunix.net/uid-24148050-id-362928.html
    重点摘要:
    执行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是密切相关的。
    • Code:代表执行的代码,程序中所有的函数都位于此处。
    • RO-data: 代表只读数据,程序中所定义的全局常量数据和字符串都位于此处。
    • RW-data:代表已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量位于此处。
    • ZI-data:代表未初始化的读写数据,程序中定义了但没有初始化的全局变量和静态变量位于此处。

    (9)obj目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置

    一、下载到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后缀的文件,拉到最后面,就有算好的大小)
     
    引自:https://blog.csdn.net/eleanoryss/article/details/69568450
  • 相关阅读:
    HDU 1058 Humble Numbers
    HDU 1160 FatMouse's Speed
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1003 Max Sum
    HDU 1297 Children’s Queue
    UVA1584环状序列 Circular Sequence
    UVA442 矩阵链乘 Matrix Chain Multiplication
    DjangoModels修改后出现You are trying to add a non-nullable field 'download' to book without a default; we can't do that (the database needs something to populate existing rows). Please select a fix:
    opencv做的简单播放器
    c++文件流输入输出
  • 原文地址:https://www.cnblogs.com/zzdbullet/p/9641726.html
Copyright © 2011-2022 走看看