编译生成uImage过程——mips平台

在使用tftp移植过程中,tftp移植的镜像格式uImage,在使用厂家提供的kernel编译时,直接make 生成uImage是行不通的
一、直接生成uImage
1.选这对应的板子以mips为例,下图是不同板子的内核配置
编译生成uImage过程——mips平台_第1张图片
2.选定一个类型的板子复制配置到.config中
在这里插入图片描述
3.make menguconfig 是刚才复制过来的.config生效
编译生成uImage过程——mips平台_第2张图片
4.编译uImage,make uImage
编译生成uImage过程——mips平台_第3张图片
在这里插入图片描述

二、uImage和zImage的区别
zImage是Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,uImage是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。
uImage通过compressed下的zImage运用 mkimage工具生成。

三、mkimage工具
作用:uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。
编译生成uImage过程——mips平台_第4张图片
mkimage命令参数:
编译生成uImage过程——mips平台_第5张图片
含义解释(下面节选自百度上搜索的资料):

-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、script、filesystem
-C 指定映象压缩方式,可以取以下值:
none 不压缩
gzip 用gzip的压缩方式
bzip2 用bzip2的压缩方式
-a 指定映象在内存中的加载地址,映象下载到内存中时,要按照用mkimage制作映象时,这个参数所指定的地址值来下载
-e 指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个mkimage添加的0x40个字节的头)
-n 指定映象名
-d 指定制作映象的源文件

1、如果加载时的地址与-a参数指定的不相同,则-e必须等于-a。u-boot会把kernel image去掉不包括64字节的信息头后搬移到-e处,直接启动。要注意两个image的存储空间不要重叠,两者之间至少要留image size的空间。

编译环境:
mkimage -A arm -O linux -T kernel -C none -a 0x70008000 -e 0x70008000 -n 'Linux' -d zImage uImage
        cp uImage /tftpboot/       

目标板环境:
tftp   0x72200000  uImage;   bootm   0x72200000;

2、如果加载时的地址与-a参数指定相同,则-e必须是-a + 0x40的地址。这时u-boot不需要再执行搬移的动作,根据-e的地址直接启动。 

        编译环境:

        mkimage -A arm -O linux -T kernel -C none -a 0x0x70008000 -e 0x70008040 -n 'Linux‘ -d zImage uImage

        cp uImage /tftpboot/           

        目标板环境:
        tftp   0x70008000  uImage;    bootm  0x70008000;

mips平台操作
1.复制mkimage到compressed目录下
在这里插入图片描述
2.编译生成uImage
在这里插入图片描述
3.开发板下载运行
编译生成uImage过程——mips平台_第6张图片

你可能感兴趣的:(linux系统相关知识,u-boot)