ELF文件和BIN文件

文件的内容:
1. BIN文件是 raw binary 文件,这种文件只包含机器码。
2. ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。

所以ELF文件的体积比对应的BIN文件要大。

文件的执行:
1. 执行raw binary很简单,只需要将程序加载到其起始地址,就可以执行;
    FILE *fp = fopen("vmlinux.bin", "rb");
    fread(VMLINUX_START, 1, VMLINUX_SIZE, fp);
    ((void (*)(void))VMLINUX_START)();
2. 执行ELF程序则需要一个ELF Loader。

现在知道了吧,uboot和Linux kernel启动的时候是没有ELF Loader的
所以烧在flash上的文件只能是raw binary格式的,即镜像文件image

文件的转换:
1. 通过gcc编译出来的是elf文件
2. 通过objcpy可以把elf文件转换为bin文件

  1. CC=ppc-gcc
  2. LD=ppc-ld
  3. OBJCOPY=ppc-objcopy

  4. $(CC) -g $(CFLAG) -c boot.S
  5. #先将boot.S文件生成boot.o

  6. $(LD) -g -Bstatic -T$(LDFILE) \
  7. -Ttext 0x12345600 boot.o \
  8. --start-group -Map boot.map -o boot.elf 
  9. #再将boot.o生成boot.elf

  10. $(OBJCOPY) -O binary -R .note -R .comment -S boot.elf boot.bin
  11. #接着将 boot.elf 转换为 boot.bin
  12. #使用 -O binary (或--out-target=binary) 输出为原始的二进制文件
  13. #使用 -R .note  (或--remove-section)    输出文件中不要.note这个section,缩小了文件尺寸
  14. #使用 -S        (或 --strip-all)        输出文件中不要重定位信息和符号信息,缩小了文件尺寸
编译完uboot后生成:
     u-boot         ELF文件可用来调试
     u-boot.bin     BIN文件用来烧在Flash上

编译linux生成:
     vmlinux        ELF文件可用来调试
     vmlinux.bin    BIN文件,没直接用过

     zImage/vmlinuz/bzimage
          将vmlinux.bin压缩,并加上一段解压代码得到的,不可和bootloader共存?

     uImage         
          uboot专用的内核镜像,在zImage前加了一个64字节的头,描述内核版本、加载地址
          生成时间,文件大小等等。 其0x40后的内容和zImage一样
          它是由uboot的工具mkImage生成的。 

uImage相对于zImage的优点在于:uImage可以和uboot共存。

网上的一个图片很强大,讲解了arm平台的uImage的生成:


ppc平台uImage有点不同,make uImage后查看源代码目录的verbose.log
  1. ........省略

  2. make -f scripts/Makefile.build obj=arch/ppc/boot/images arch/ppc/boot/images/uImage
  3. ppc_85xx-objcopy -O binary vmlinux arch/ppc/boot/images/vmlinux.bin (第一步)
  4. gzip -f -9 < arch/ppc/boot/images/vmlinux.bin > arch/ppc/boot/images/vmlinux.gz.$ && mv arch/ppc/boot/images/vmlinux.gz.$ arch/ppc/boot/images/vmlinux.gz (第二步)
  5. rm -f arch/ppc/boot/images/uImage
  6. /bin/sh /root/project/eldk4.2/ppc_85xx/usr/src/8541-reduece-ppc-linux-2.6.24/scripts/mkuboot.sh -A ppc -O linux -T kernel -C gzip -a 00000000 -e 00000000 -n 'Linux-2.6.24.2' -d arch/ppc/boot/images/vmlinux.gz arch/ppc/boot/images/uImage (第三步)


文件的调试:
1. 我们调试一般都是使用elf文件,比如:
  1. nm elf文件         #得到符号表
  2. objdump -D elf文件 #反汇编,且汇编代码与源码混排

2. bin文件比较杯具,里面全是机器码,所以只能反汇编
  1. objdump -b binary -m powerpc uboot.bin
全是汇编代码......+_+

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

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

相关文章

计算机辅助项目管理课程方案,天津大学计算机辅助管理研究生课程简介

8 / 14【育明教育】中国考研考博专业课辅导第一品牌 官方网站&#xff1a;http://www.doczj.com/doc/e25fb4dad4d8d15abe234eb2.html8《翻译硕士英语》重点考察考生的英语水平&#xff0c;内容包括&#xff1a;词汇语法、阅读理解、英语写作等&#xff0c; 总分 100 分。 二、考…

android list 替换元素_Python数据结构(一)List使用(大厂面试解答)

List是什么&#xff1f;List顾名思义就是列表&#xff0c;那么它具体描述是什么呢&#xff1f;列表是一个线性的集合&#xff0c;它允许用户在任何位置插入、删除、访问和替换元素。在Python中list是保留字&#xff0c;List中的每个元素都有自己的编号&#xff0c;很像C、C、ja…

河北2018年职称计算机开始,2018河北职称计算机考试操作题答案(8页)-原创力文档...

PAGEPAGE 131、说明&#xff1a;以下文件名及文件夹名均不区分大小写&#xff0c;而且所有字母和数字都是英文半角字符1、?在ComputerA文件夹下建立如下的文件夹结构&#xff1a;(4分)????ComputerA?———北京——海淀区??????????????|?????????…

mkenvimage

mkenvimage -s bin文件size -o uboot-env.bin uboot-env.txt

关于php的字符串编码

PHP中的字符串可以用四中方式来定义&#xff1a; 单引号&#xff0c;双引号&#xff0c;Nowdoc结构 &#xff0c; heredoc 结构 也就说用这四中方式命名的字符串不管有没有值&#xff0c;都是字符串类型的变量。 但是&#xff0c;字符串遍历是已经定义好了怎么操作这些字符串&a…

java 获取打印机缺纸_JAVASE 语言概述和JAVA

第一章&#xff1a;开发前言计算机分为硬件和软件&#xff0c;一般来说。硬件就是组成计算机的可见的物理组件。我们的电脑、手机、电子设备都算一个小的计算机。而软件提供看不见的指令&#xff0c;这些指令控制硬件并且通过硬件完成特定任务。常见硬件&#xff1a;CPU、内存、…

计算机图形处理与应用程序,计算机图形处理与应用

本文主要介绍了计算机图形图像处理的基本概念;导出三维图形几何变换矩阵的一般形式;简要介绍了消隐技术;介绍了AutoLISP语言的功能、特点及绘图程序,并结合简单实例,展示了开发的实际效果。计算机图形处理及其应用摘要计算机图像处理技术产生于上个世纪80年代末&#xff0c;经历…

ARM Linux 3.x的设备树(Device Tree)

宋宝华 Barry Song <21cnbaogmail.com>1. ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”&#xff0c;引发ARM Linux社区的地震&#xff0c;随后ARM社区进行了一系列的重大修正。在…

冯诺依曼原理中计算机包括功能部件,水泥越细,强度发展越快,对混凝土性能也越好...

现象其结定相同的不一果却&#xff0c;水泥现象现象现象确定模糊机现非随随机&#xff0c;下同的条件在相&#xff0c;称为。、越细越快也效期望强度联性某价C激励激励、关值B水平&#xff0c;需要学习得到的机脱产会”“我非常是否属于。下面不是哪个功能够完成的操作页能开始…

win7连接sftp_SFTP远程连接服务器上传下载文件-vs2013项目实例

本项目仅测试远程连接服务器&#xff0c;支持上传&#xff0c;下载文件&#xff0c;更多功能开发请看API自行开发。环境&#xff1a;win7系统&#xff0c;vs2013vs2013项目实例下载地址&#xff1a;CSDN下载如果没有CSDN积分&#xff0c;百度网盘下载(密码&#xff1a;uqob)文件…

累觉不爱

不知不觉已经九年了&#xff0c;再过一个年头就满十了。 记得刚入职AI的时候&#xff0c;看着有人捧着个十年奉献奖的时候&#xff0c;心里还是有些小小的鄙夷的。那时候朝气蓬勃&#xff0c;充满自信&#xff0c;什么都是不放在眼里的。 在AI的前五年&#xff0c;即是成长最快…

南科大计算机系实力a,五大竞赛学科A+高校排行榜发布!北大实力碾压,科大赶超清华...

什么是学科评估&#xff1f;学科评估是教育部官方针对全国大学的专业实力进行分档而得到的&#xff0c;在评价高校的单一专业实力方面非常权威。学科评估分为A、A、A-、B等共9个等级&#xff0c;每个等级内的高校不再另做排名&#xff0c;只为等级不排名次。其中学科评估为A的要…

设置最大值_变频器用远传压力表控制恒压供水参数设置

变频器控制恒压供水的应用介绍在这里以台达变频器为例&#xff0c;利用远传压力表作为反馈信号。控制要求&#xff1a;① 恒压供水变频器的启动和停止&#xff0c;要求用数字面板操作器来控制启停&#xff1b;② 设定压力值要求用数字面板上下键来设定压力(数字0-50对应0-压力表…

为什么中国的程序员总被称为码农?

实际上IT行业在中国并不是特别差的行业&#xff0c;而程序员的工资也并不低&#xff0c;但为什么中国的程序员总被称作码农或者说是苦逼的程序员&#xff1f;中国的程序员生活和欧美的有什么不一样&#xff1f; 编程活动和机械电子一样可以视为一种工艺&#xff08;craftsmansh…

pin controller driver代码分析

一、前言 对于一个嵌入式软件工程师&#xff0c;我们的软件模块经常和硬件打交道&#xff0c;pin control subsystem也不例外&#xff0c;被它驱动的硬件叫做pin controller&#xff08;一般ARM soc的datasheet会把pin controller的内容放入GPIO controller的章节中&#xff09…

计算机调节音量找不到,电脑右下角的小喇叭不见了?教你这样操作,轻松调节音量!...

原标题&#xff1a;电脑右下角的小喇叭不见了&#xff1f;教你这样操作&#xff0c;轻松调节音量&#xff01;一般情况下&#xff0c;如果我们需要调节音量&#xff0c;可以直接通过电脑右下角的小喇叭调节&#xff0c;它是电脑声音设备的图标。但是&#xff0c;最近有位朋友想…

lm opencv 算法_OpenCV进行图像相似度对比的几种办法

// PSNR.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include // Console I/O#include // String to number conversion#include // Basic OpenCV structures#include // Image processing methods for the CPU#include // Read images#include // GPU…

android程序获取WIFI的IP地址和MAC地址

转自&#xff1a;http://my.oschina.net/chenj/blog/68680 近日在鼓捣这玩意&#xff0c;拿出来大家分享一下&#xff0c;代码比较简单&#xff0c;如果有不懂的再问 <Button android:id"id/btn"android:text"获取IP"android:layout_width"fill_pa…

计算机d,计算机词汇d

data block 数据块data connection 数据连接Data Control Language (DCL) 数据控制语言 (DCL)data definition 数据定义data definition language (DDL) 数据定义语言 (DDL)data dictionary 数据字典data dictionary view 数据字典视图data explosion 数据爆炸data file 数据文…