S3C2410 Linux内核2.6.35.7启动解析与构建过程

需积分: 0 0 下载量 187 浏览量 更新于2024-06-30 收藏 224KB DOCX 举报
"内核加载1 - S3C2410 Linux 2.6.35.7 启动分析" 在嵌入式系统中,尤其是基于ARM架构的设备,如S3C2410处理器,Linux内核的加载过程至关重要。本文将详细解析从源码构建到内核启动的初始阶段,主要关注内核生成和压缩的过程。 首先,内核的构建始于链接步骤。根据arch/arm/kernel/vmlinux.lds链接脚本,arm-linux-gnu-ld工具将多个预编译的目标文件(如head.o, built-in.o等)以及特定平台(如S3C2410)的文件链接成一个完整的可执行文件vmlinux。这个未经压缩的vmlinux包含了调试信息和符号表,大小约为23MB,是内核的基础形态。 接下来,为了减小内核的体积并提高加载速度,会去除不必要的信息。arm-linux-gnu-objcopy工具被用来将vmlinux转换为二进制形式的Image文件,去除了调试信息、注释和符号表,文件大小减小至约3.2MB。这个Image文件是内核的最终执行形式,可以直接加载到内存中运行。 然后,Image文件通过gzip进行高度压缩,生成压缩后的内核镜像arch/arm/boot/compressed/piggy.gz,大小约为1.5MB。这一压缩步骤显著减小了内核的存储需求,有利于在存储空间有限的嵌入式设备上使用。 最后,利用arch/arm/boot/compressed/piggy.S汇编源文件,将压缩后的内核镜像piggy.gz编译进piggy.o目标文件中。piggy.S是一个非常简洁的文件,其主要作用是包含并嵌入之前压缩的内核镜像。arm-linux-gnu-gcc负责编译这个汇编源文件,生成包含压缩内核的二进制对象。 这个过程是嵌入式Linux系统启动的关键步骤,理解这些步骤对于开发者来说至关重要,因为它涉及到内核如何被加载到内存中,并在硬件平台上初始化。在实际应用中,开发者可能需要根据具体的需求调整内核配置,优化内核大小或性能。同时,对于故障排查和系统调试,了解内核加载流程也极其重要。