u-boot.img文件头解析

u-boot.img文件头解析
        昨天用mount解压cramfs镜像文件失败之后,我用UE打开此cramfs镜像文件,发现此文件不仅含有文件系统,还含有64字节的头,今天我就来解释一下,这64字节是什么,还有怎么通过命令来做这个头
1、在mkimage源码包里的image.h就对这64个字节进行了定义

2、查看u-boot.img文件头内容,每一个红色方框对应以上每一个定义

1)27 05 19 56 :ih_magic 固定不变
2)C5 8B C7 0C:ih_hcrc 头部校验,也就是这64个字节的CRC32校验
3)54 58 26 67: ih_time 创建此文件时的时间
4)00 00 50 00:ih_size 镜像文件大小
5)00 77 00 00:ih_load 镜像在内存中的加载地址
6)00 7B 00 00:ih_ep 镜像运行的入口点地址
7)0C A7 AE 20:ih_dcrc 镜像文件CRC32校验码
8)操作系统类型 9)CPU类型 10)镜像类型 11)镜像压缩方式 12)镜像名
3、如何编译生成文件头内容
#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' //对应CPU类型
-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                           ARM 
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、script、filesystem

-C 指定映象压缩方式:

可以取以下值:
none 不压缩
gzip 用gzip的压缩方式
bzip2 用bzip2的压缩方式

-a 指定映象在内存中的加载地址

映象下载到内存中时,要按照用mkimage制作映象时,这个参数所指定的地址值来下载

-e 指定映象运行的入口点地址

这个地址就是-a参数指定的值加上0x40(因为前面有个mkimage添加的0x40个字节的头)

-n 指定映象名

-d 指定制作映象的源文件

4、好!按照以上的文件头,总的编译命令如下:
#mkimage -n 'linux' -A arm -O linux -T standalone -C gzip -a 0x00770000 -e 0x007B0000 -d test.cramfs test.cramfs.img
5、Success!
6、文件头校验码计算方法
参考mkimage的源码内容和mkimage执行文件:http://download.csdn.net/detail/cinberella/8171909
可以发现文件头的CRC32校验方式为:把校验码的那四个字节填为00,然后保存头(含有创建时间),再把此文件头进行校验,此校验值即为ih_hcrc的值
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
u-boot-2016.11.tar.bz2是一个开源软件项目的压缩文件。该压缩文件u-boot引导加载程序的源代码和相关文件的打包形式。u-boot(Universal Bootloader)是一款用于嵌入式系统的开源引导加载程序,用于初始化硬件并启动操作系统。 u-boot-2016.11.tar.bz2文件的扩展名.tar.bz2表示它是使用tar和bzip2两种工具进行压缩的。.tar是一个常用的文件打包工具,它可以将多个文件和目录打包成一个文件。.bz2是一个压缩工具,可以将文件进行高效压缩。 要使用u-boot-2016.11.tar.bz2文件,首先需要将其解压缩。可以使用tar命令进行解压缩,命令为tar -xjf u-boot-2016.11.tar.bz2。这将解压缩文件,并将源代码和其他相关文件提取到当前目录下。 解压缩后,可以在提取出的文件中找到u-boot引导加载程序的源代码和相关文件。可以根据需要进行定制和编译,生成适合特定硬件平台的引导加载程序。u-boot支持多种处理器架构和开发板,可以根据需要进行配置。 根据u-boot-2016.11.tar.bz2文件的版本号来看,它是2016年11月发布的版本。这意味着该版本已经存在一段时间,并可能具有稳定性和经过验证的特性。对于需要使用u-boot的开发者和嵌入式系统制造商,这个版本可以作为一个可靠的基础进行开发和定制。 总之,u-boot-2016.11.tar.bz2是u-boot引导加载程序的源代码和相关文件的压缩包。解压缩后,可以通过定制和编译源代码,生成适合特定硬件平台的引导加载程序。这个版本已经存在一段时间,并可能具有可靠的特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值