ARM Linux 启动过程分析 作者:张俊岭 EMAIL: sprite_zjl@sina.com; jlzhang@tangrae.com.cn QQ: 251450387 日期:2008-8-9 说明: 本文档基于AT91SAM9260EK 板的,所用的Linux 内核版本为2.6.21 《ARM Linux 启动过程详解》 在嵌入式领域,ARM 架构与 Linux 操作系统的结合广泛应用,尤其在开发板如 AT91SAM9260EK 上。理解 ARM Linux 的启动流程对于系统级调试和优化至关重要。本文将深入解析 ARM Linux 从开机到内核运行的主要步骤。 我们需要区分两种类型的内核映像——非压缩和压缩。非压缩内核映像是未经过压缩的 Linux 内核代码,可以直接加载并执行。通过 `make Image` 命令生成,此过程中,内核模块被编译、链接成 ELF 格式的 vmlinux 文件,然后转换为二进制格式的 Image 文件。 压缩内核映像是为了减小存储占用,通过 `make zImage` 生成。非压缩内核映像(arch/arm/boot/Image)被 gzip 压缩成 piggy.gz 文件,再结合解压代码(在 compressed 目录下的 head.S 和 piggy.s 等文件)编译链接成一个新的 ELF 文件(vmlinux),最后转化为二进制格式的 zImage。这个 zImage 文件含有自我解压功能,启动时会先解压自身,然后执行非压缩内核。 内核的入口点是在汇编语言文件中定义的。对于 ARM 平台,非压缩内核的入口通常在 arch/arm/kernel/head.S 文件中。head.S 文件包含了启动初期的必要设置,如初始化处理器状态、内存管理单元(MMU)配置等。如果处理器支持 MMU,则在无 MMU 模式下,会使用特定的 head-nommu.o 文件。 启动过程大致分为以下几个阶段: 1. **硬件初始化**:在 CPU 加电后,硬件初始化通常由固件(如 Bootloader)完成,包括设置时钟、初始化内存控制器、加载内核映像到内存等。 2. **引导加载器**:Bootloader 如 U-Boot 或其他定制的 Bootloader,会加载内核映像(压缩或非压缩)到内存的适当位置,并跳转到内核入口点。 3. **内核初始化**:内核入口点(head.S)执行,进行基本的硬件配置,如设置栈指针、初始化页表、关闭中断等。之后,会调用 C 语言代码进行更复杂的初始化,如设备驱动初始化、内存管理设置等。 4. **内核解压**:如果使用的是压缩内核,此时会解压 zImage 中的内核映像。 5. **初始化进程(init)**:初始化进程(PID 为 0)启动,它是系统中的第一个进程,负责创建其他基础服务和用户空间的 init 进程。 6. **挂载根文件系统**:内核挂载根文件系统,这是系统运行所需的基本文件结构。 7. **启动用户空间**:系统通过 init 进程启动用户空间的第一个程序,通常是 /sbin/init 或者指定的其他启动脚本。 8. **系统服务**:用户空间的服务如网络、守护进程等开始运行,至此,系统进入正常运行状态。 整个启动流程涉及硬件、Bootloader、内核以及用户空间的交互,每个环节都至关重要。理解这一过程对于开发、调试和优化 ARM Linux 系统具有极高的价值。通过阅读和分析内核源码,我们可以更深入地了解这些细节,为解决实际问题提供有力支持。
剩余18页未读,继续阅读
- 粉丝: 1
- 资源: 86
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- python-matplotlib画图详解(精编).PDF
- 植物病虫害识别系统源码
- 【java毕业设计】智慧社区餐饮服务平台(源代码+论文+PPT模板).zip
- 【java毕业设计】智慧社区金融服务系统(源代码+论文+PPT模板).zip
- 【java毕业设计】智慧社区旅游服务平台(源代码+论文+PPT模板).zip
- 【java毕业设计】智慧社区体育健身管理系统(源代码+论文+PPT模板).zip
- 【java毕业设计】智慧社区文化艺术展示平台(源代码+论文+PPT模板).zip
- 【java毕业设计】智慧社区医疗健康管理系统(源代码+论文+PPT模板).zip
- 【java毕业设计】智慧社区居民意见反馈系统(源代码+论文+PPT模板).zip
- 【java毕业设计】智慧社区邻里社交平台(源代码+论文+PPT模板).zip
- 【java毕业设计】智慧社区政务服务平台(源代码+论文+PPT模板).zip
- 基于MyBatis Generator 逆向工程植物病虫害识别系统源码
- PTT模版 主题内容的PPT格式
- 【java毕业设计】智慧社区公共信息显示屏管理系统(源代码+论文+PPT模板).zip
- 【java毕业设计】智慧社区无障碍设施管理系统(源代码+论文+PPT模板).zip
- 【java毕业设计】智慧社区垃圾分类回收系统(源代码+论文+PPT模板).zip