内核编译(make)
来源:互联网 发布:汪峰 简单的歌 知乎 编辑:程序博客网 时间:2024/05/18 15:24
内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。
那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。
64字节的头结构如下:
typedef struct image_header {
} image_header_t;
所以,uImage和zImage都是压缩后的内核映像。而uImage是用mkimage工具根据zImage制作而来的。mkimage工具介绍如下:
u-boot里面的mkimage工具来生成uImage
这里解释一下参数的意义:
-A ==> set architecture to 'arch'
-O ==> set operating system to 'os'
-T ==>
-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
-x ==>
对于ARM linux内核映象用法:
-A arm
原来在这个-C这个参数这里不太理解,因为我觉得既然mkimage是用zImage去制作uImage,而本身zImage就是经过压缩了的,为什么这个地方还要有一个压缩了,后来想了下,觉得可能是这个工具也可以根据最原始的Image去制作uImage,所以就有了这个参数,不深究。即使将zImage经过压缩后生成uImage的话,我觉得压缩比也很小。
关于-a和-e这两个参数,具体如下:
-a和-e后面跟的分别是image的载入地址和内核的入口地址,两者可以一样,也可以不一样,依情况而定。
当-a后面指定的地址和bootm xxxx后面的地址一样时,-e后面的地址必须要比-a后面的地址多0x40,也就是映像头的大小64个字节。因为当他们地址一样时,uboot是不会搬运映像的。
当-a后面指定的地址和bootm xxxx后面的地址不一样时,uboot会将bootm xxxx地址处的映像搬运到-a指定的地址处,此时,-e和-a必须要一样,因为映像头并没有搬运过去,载入地址就是内核的入口地址。需要注意的是,因为uboot要重新搬运内核映像,所以要注意bootm xxxx的地址和-a之间的地址不要导致复制时的覆盖。
因为zImage是经过压缩而得到的,所以其自身就有解压缩代码。
- 内核编译(make)
- 内核编译(make)
- 移植linux内核到s3c6410(编译内核make uImage)
- 内核配置与编译-make config /make
- 内核编译 make menuconfig错误
- 修改内核编译配置菜单(make menuconfig)
- 修改内核编译配置菜单(make menuconfig)
- 修改内核编译配置菜单(make menuconfig)
- Ubuntu11.10编译内核:make xconfig错误
- 内核编译错误: make: *** [.tmp_vmlinux1] Error 1
- 编译内核----make config时候报错
- Ubuntu11.10编译内核:make xconfig错误
- Ubuntu11.10编译内核:make xconfig错误
- linux内核编译make menuconfig错误解决
- CentOS内核编译make menuconfig出错解决
- ubuntu 内核编译工具 make-kpkg简介
- 内核编译直接生成uImage----make uImage
- 内核编译make oldconfig的作用
- 将TXT中天气预报内容写入MYSQL数据库
- 5.C语言家族扩展
- 利用命令切换Tab控件 CTabCtrl
- jstl标签的用法(二)
- 递归与分治之 棋盘覆盖
- 内核编译(make)
- web 动
- OpenCV自带例子(二)Load, Modify, and Save an Image
- Activity,Service,Broadcast其创建的背景线程的关系
- VS2005整合SP1的方法
- 上传文件的一些问题
- 提高java代码运行效率(5)
- Authentic Jobs:有创造力的Web开发者来这里找工作
- android user_tag.mk与user编译模式