ARM Linux启动过程解析

需积分: 0 0 下载量 94 浏览量 更新于2024-07-09 收藏 139KB PDF 举报
"ARM Linux 启动过程分析文档,作者张俊岭,基于AT91SAM9260EK板,使用Linux内核版本2.6.21。文档详细介绍了Linux内核在ARM架构下的启动流程,包括压缩内核和非压缩内核映像的生成步骤。" 在嵌入式系统中,尤其是基于ARM架构的Linux系统,启动过程是理解整个系统运行机制的关键部分。本文档详细阐述了ARMLinux的启动流程,主要分为两个关键环节:非压缩内核映像和压缩内核映像的生成及执行。 首先,非压缩内核映像是一个未经压缩的、可以直接执行的Linux内核代码。它由`makeImage`命令生成。这个过程涉及以下步骤: 1. 内核源代码编译链接后,会在顶层目录下生成一个ELF格式的文件`vmlinux`。 2. 使用`arm-linux-objcopy`工具将`vmlinux`转换为二进制格式的`Image`文件,这是非压缩内核映像。 其次,压缩内核映像则是为了节省存储空间而设计的。它通过`makezImage`命令生成,步骤如下: 1. 使用`gzip`工具对非压缩内核二进制映像`arch/arm/boot/Image`进行压缩,得到`piggy.gz`文件。 2. 在`arch/arm/boot/compressed/`目录下,`piggy.s`、`head.S`和`vmlinux-lds`等文件被编译链接,生成一个包含解压代码的ELF格式的`vmlinux`文件。 3. 最后,再次使用`arm-linux-objcopy`将此`vmlinux`转换为二进制格式的`zImage`,这是压缩内核映像。 启动过程中,压缩内核映像会先执行解压缩代码,释放出非压缩内核映像,然后继续执行非压缩内核的代码,从而完成系统的启动。 理解这一启动过程对于调试、优化以及定制嵌入式Linux系统至关重要,因为它涉及到硬件初始化、内存管理、设备驱动等核心操作。同时,熟悉内核映像的生成方法也有助于在有限的存储资源下,有效管理和配置内核映像,以适应不同的嵌入式应用场景。