引用:http://blog.csdn.net/hmg25/article/details/6429493

1.内核编译完成后可以生成 arch/arm/boot/compressed/vmlinux, arch/arm/boot/Image, arch/arm/boot/zImage

其中vmlinux 是一个elf格式的文件,Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。zImage 是ARMLinux常用的一种压缩映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明 这个映像文件的类型、加载位置、生成时间、大小等信息。

2.他们之间的关系:

LDvmlinux
SYSMAP System.map
SYSMAP .tmp_System.map
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/head.o
GZIP arch/arm/boot/compressed/piggy.gz
AS arch/arm/boot/compressed/piggy.o
CC arch/arm/boot/compressed/misc.o
AS arch/arm/boot/compressed/head-xscale.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage

3.objcopy是GNU实用工具程序,objcopy的作用是拷贝一个目标文件的内容到另一个目标文件中。用于将object的部分获全部内容拷贝到另一个object,从而可以实现格式的变换。

objcopy可用用于将文件转换成S-record格式或者raw二进制格式。

例如,

xxxx-elf-objcopy –O srec test.o test.s19

则将test.o转换成s-record文件中。通常涉及到text段。

xxxx-elf-objcopy –O binary test.o test.bin

则将test.o转换成raw binary文件格式。

当将object文件转换成raw binary格式时,通常将去除掉symbols和relocation信息。在生成s-record过程中,有时需要用选项“-S”,“-R”去除掉binary文件,s-record文件不需要的相应信息。

4.mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。

mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个映象是针对哪个CPU体系结构的,哪个OS的,哪种类型,加载内存中的哪个位置, 入口点在内存的那个位置以及映象名是什么
root@Glym:/tftpboot# ./mkimage
Usage: ./mkimage -l image
-l ==> list image header information
./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image
-A ==> set architecture to 'arch'
-O ==> set operating system to 'os'
-T ==> set image type to 'type'
-C ==> set compression type 'comp'
-a ==> set load address to 'addr' (hex)
-e ==> set entry point to 'ep' (hex)
-n ==> set image name to 'name'
-d ==> use image data from 'datafile'
-x ==> set XIP (execute in place)
参数说明:
-A 指定CPU的体系结构:
取值 表示的体系结构
alpha Alpha
arm A RM
x86 Intel x86
ia64 IA64
mips MIPS
mips64 MIPS 64 Bit
ppc PowerPC
s390 IBM S390
sh SuperH
sparc SPARC
sparc64 SPARC 64 Bit
m68k MC68000
-O 指定操作系统类型,可以取以下值:
openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos
-T 指定映象类型,可以取以下值:
standalone、kernel、ramdisk、multi、firmware、、filesystem
-C 指定映象压缩方式,可以取以下值:
none 不压缩
gzip 用gzip的压缩方式
bzip2 用bzip2的压缩方式
-a 指定映象在内存中的加载地址,映象下载到内存中时,要按照用mkimage制作映象时,这个参数所指定的地址值来下载
-e 指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个mkimage添加的0x40个字节的头)
-n 指定映象名
-d 指定制作映象的源文件

更多相关文章

  1. Android(安卓)录音实现方法、仿微信语音、麦克风录音、发送语音
  2. 可执行的android C 程序
  3. mac 无法连接android手机进行调试 解决方案
  4. Android(安卓)抓包的一些命令 及 adb使用的一些注意事项
  5. Android(安卓)build/envsetup.sh分析
  6. varnish 配置使用 Chrome,iphone,android 请求响应各自的页面
  7. android studio 官方用户指南翻译学习(四)创建 Android(安卓)libra
  8. Android(安卓)SD卡操作 (Environment 状态)
  9. ionic上拉翻页及下拉刷新

随机推荐

  1. Android长度单位详解(dp、sp、px、in、pt
  2. Android(安卓)实现文件上传功能(upload)
  3. android中TextView实现单行跑马灯
  4. android简介
  5. android简介
  6. Android的SQLite学习及使用方法(1)
  7. Android画图学习总结
  8. Android的Handler总结
  9. Android应用程序组件概述
  10. Android的UI设计与后台线程交互