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…

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

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

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

现象其结定相同的不一果却&#xff0c;水泥现象现象现象确定模糊机现非随随机&#xff0c;下同的条件在相&#xff0c;称为。、越细越快也效期望强度联性某价C激励激励、关值B水平&#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…

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

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

计算机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 数据文…

a5d2 mac 驱动分析

2.6内核以后的多数驱动都是基于平台总线驱动模型(platform)&#xff0c;对于平台总线来说&#xff0c;无非是两块组成 platform_driver和platform_device&#xff0c;在a5d2的bsp中&#xff0c;因为引入了device tree&#xff0c;因此&#xff0c;代码里已经看不到 platform_…

10以内的分解与组成怎么教_【一年级数学】(上)10以内的分与合技巧及练习题...

《10以内的分与合》知识点数的组成&#xff1a;一个数(1除外)分成几和几&#xff0c;先把这个数分成1和几&#xff0c;依次分到几和1为止。例如&#xff1a;5的组成有1和4、2和3、3和2、4和1。把一个数分成几和几时&#xff0c;要有序地进行分解&#xff0c;防止重复或遗漏。《…

交通与计算机杂志社,交通信息与安全

期刊名称&#xff1a;交通信息与安全主管单位&#xff1a;中华人民共和国教育部主办单位&#xff1a;武汉理工大学;交通计算机应用信息网期刊级别&#xff1a;国家级国际刊号&#xff1a;ISSN&#xff1a;1674-4861国内刊号&#xff1a;CN&#xff1a;42-1781/U邮发代号&#x…

k1658停运到什么时候_最近网传的春节快递停运时间表,是假的!

“我有货&#xff0c;你有钱&#xff0c;其间没有快递员。”最近&#xff0c;杭州市民梁先生的朋友圈里&#xff0c;突然火了一张图片。标记为2019年日历的这张图片上&#xff0c;1月25日和2月12日之间的日期都被白线框定&#xff0c;并打出了“其间没有快递员”的字样。还有一…

a5d2 phy驱动

1. 下面代码实现了phy驱动的实现和注册 2. device tree实现了phy的device 3. 在mdio总线注册后&#xff0c;总线会调用总线驱动的match函数&#xff0c;进行device和driver的匹配 static int mdio_bus_match(struct device *dev, struct device_driver *drv) return (phydrv-…

vs2008配置winddk

Vs2008配置winddk 1、 安装winddk&#xff0c;我安装在了c盘下&#xff1b; 2、 电脑-》属性-》环境配置里 系统变量里加入 DDKBASE&#xff0c;其值是 3、 path变量里增加 ;C:\WinDDK\7600.16385.1; 第二大步&#xff1a;&#xff08;非常关键&#xff09; 1、 vs2008里 工具…

android跨进程事件注入(程序模拟用户输入)

转载请注明出处 早想写这篇&#xff0c;一直没空&#xff0c;现在总结下。 需求&#xff1a; 需要在程序内模拟用户输入&#xff0c;比如点击屏幕&#xff0c;或者输入键盘。模拟用户的滑动等。具体的需求&#xff0c;比如测试的时候&#xff0c;测试打开浏览器1000次。或者通过…

三菱d700变频器接线图_图解PLC与变频器通讯接线

plc与变频器两者是一种包含与被包含的关系&#xff0c;PLC与变频器都可以完成一些特定的指令&#xff0c;用来控制电机马达&#xff0c;PLC是一种程序输入执行硬件&#xff0c;变频器则是其中之一。但是PLC的涵盖范围又比变频器大&#xff0c;还可以用来控制更多的东西&#xf…

a5d2启动分析

A5D2对外部存储设备的启动顺序如下图&#xff1a; SDMMC_1接的sd卡&#xff0c;SDMMC_0接的emmc, SPI_0接的串行flash,当外部存储都不可用或没有启动程序的话&#xff0c;会直接进入sam-ba monitor&#xff0c;就可以执行sam-ba提供的各种烧写脚本了。 目前我们使用的烧写脚本…

软件测试菲律宾,英雄联盟手游菲律宾测试资格怎么得 菲律宾测试资格获取攻略[多图]...

英雄联盟手游菲律宾服务器将先行开放测试&#xff0c;所有想体验游戏的玩家可以申请获得测试资格来优先体验&#xff0c;下面各位玩家一起来看一下测试资格的获取方法吧。目前游戏只能够在外服测试&#xff0c;而且是菲律宾的服务器才行&#xff0c;这是国外游戏测试的一个老套…