目录
内核编译:
什么是uImage?
一、产生背景
二、主要特点
三、使用方式
uImage与zImage与Image的区别?
向内核添加新驱动文件:
内核编译:
什么是uImage?
uImage 是一种用于嵌入式系统的 Linux 内核镜像格式。
一、产生背景
在嵌入式系统中,为了满足特定硬件平台的启动需求和提高内核加载效率,出现了 uImage 格式。它通常是由 Linux 内核源代码经过特定的编译和打包过程生成的。
二、主要特点
1. 压缩性:uImage 可以进行压缩,以减少存储空间占用和提高传输效率。在启动时,引导程序会解压缩内核镜像并加载到内存中执行。
2. 头部信息:uImage 包含一个特定的头部信息,其中包含了内核的一些重要参数,如内核大小、加载地址、入口点等。引导程序可以通过读取这些头部信息来正确地加载和启动内核。
3. 适用性:适用于多种嵌入式硬件平台,不同的平台可能需要特定版本的 uImage 以确保兼容性和正确启动。
三、使用方式
在嵌入式系统开发中,通常将 uImage 放置在特定的存储设备(如闪存、SD 卡等)中,然后由引导程序(如 U-Boot)加载并启动内核。开发人员需要根据具体的硬件平台和需求进行内核的配置和编译,以生成合适的 uImage 文件。
uImage与zImage与Image的区别?
Image、zImage 和 uImage 都是 Linux 内核镜像文件,它们主要有以下区别:
一、Image
1. 未压缩内核镜像:Image 是未经压缩的原始 Linux 内核镜像文件。
2. 尺寸较大:由于没有压缩,它的文件尺寸相对较大,占用较多的存储空间。
3. 直接加载性:一些特定的引导程序可以直接加载 Image 文件,但在资源有限的嵌入式系统中,可能不太适合,因为它可能会消耗较多的存储资源和加载时间。
二、zImage
1. 压缩内核镜像:zImage 是经过压缩的 Linux 内核镜像。
2. 较小的存储空间占用:通过压缩技术,zImage 的尺寸比 Image 小很多,更适合存储资源有限的系统。 3. 自解压功能:在启动时,引导程序加载 zImage 后,内核会自动进行解压缩操作,然后执行。 4. 适用范围:常用于一些对存储空间有一定限制的系统,但它的压缩和解压缩过程可能会增加一些启动时间。
三、uImage
1. 特定格式的压缩内核镜像:uImage 是在 zImage 的基础上,增加了一个特定的头部信息而形成的一种内核镜像格式。
2. 头部信息:这个头部信息包含了内核的一些关键参数,如内核大小、加载地址、入口点等,引导程序可以通过读取这些信息来正确地加载和启动内核。
3. 广泛应用于嵌入式系统:在嵌入式系统开发中,uImage 格式通常被广泛使用,尤其是与一些常见的引导程序(如 U-Boot)配合使用时,能够提供更好的兼容性和启动效率。
4. 灵活性:开发人员可以根据具体的硬件平台和需求,对内核进行配置和编译,生成适合的
uImage 文件。
向内核添加新驱动文件:
1.在Linux/driver/char中创建.c文件
2.更改本层路径下的Makefile 及 Kconfig
3.在内核顶层打开make menuconfig 配置
4.make uImage 或make moduis编译
5.拷贝uImage到linux/tftpboot路径下
6.如有模块.ko文件则拷贝到Linux/nfs/rootfs下