ARM-linux启动详解:内核映像生成与启动流程揭秘
需积分: 11 140 浏览量
更新于2024-07-25
1
收藏 155KB PDF 举报
ARM-Linux内核启动过程是一个复杂而精细的步骤,本文将深入解析这一过程,主要针对AT91SAM9260EK板和Linux内核版本2.6.211。这个启动过程主要涉及两个类型的内核映像:非压缩内核映像和压缩内核映像。
1. **非压缩内核映像 (vmlinux)**:
- 非压缩内核映像是通过内核源代码的编译和链接产生的,首先在顶层目录下生成`vmlinux`文件,这是一种ELF(Executable and Linkable Format)格式的映像,包含了内核的核心组件和模块。
- 使用`arm-linux-objcopy`工具将`vmlinux`转换为二进制格式,通常存储在`arch/arm/boot/Image`目录下。
2. **压缩内核映像 (zImage)**:
- 压缩内核映像是为了减小映像大小,便于存储和传输。首先,非压缩的二进制映像`arch/arm/boot/Image`被gzip压缩,生成`arch/arm/boot/compressed/piggy.gz`。
- 在`arch/arm/boot/compressed`目录下,有一个名为`piggy.s`的文件,用于定义包含压缩数据的段,以及`head.S`,其中包含了解压压缩数据的代码。还有一个链接脚本`vmlinux-lds`,确保了这些文件正确编译和链接。
- 最终,通过`arm-linux-objcopy`将处理后的`vmlinux`转换为二进制格式,形成`arch/arm/boot/compressed/zImage`,这是一个自解压的可执行映像。
启动流程概括如下:
- 内核模块编译、链接生成vmlinux。
- 使用`arm-linux-objcopy`进行格式转换。
- 对非压缩内核映像进行gzip压缩。
- 创建压缩内核映像,包括解压代码和链接脚本。
理解这个过程对于从事内核移植或嵌入式系统开发的工程师至关重要,因为它涉及到硬件与软件交互的关键环节,能够帮助他们优化内存使用、提高启动速度和系统性能。此外,熟悉这些步骤也有助于调试和优化内核,以便适应特定硬件平台的需求。
2021-09-07 上传
511 浏览量
137 浏览量
2021-09-13 上传
2021-09-13 上传
118 浏览量
2022-09-19 上传
2022-09-21 上传
101 浏览量
焦虑的娃
- 粉丝: 2
- 资源: 19
最新资源
- BEN-ID:Praktikum Konstruksi Perangkat Lunak
- QtSerialTools.rar_QT_caughtm96_qt 串口工具_qt5 串口_rightps2
- gitProject
- Permit-Tracking-System-Java:用java开发的许可证跟踪系统
- 影刀RPA系列公开课3:网页自动化——数据抓取.rar
- FOC_SVPWM.slx.rar_svpwm_永磁 svpwm_永磁同步电机_电机_矢量控制
- kaliningrad:利用多模型数据存储功能的基于模板的数据库建模器
- 护卫神.Apache大师 v3.0.0
- web.io:实验室+一些东西
- OGC2SOA-开源
- 轻量级的Android和Java库,用于比较版本字符串。-Android开发
- IAP_AN.zip_Bootloader_STM32F103_Ymodem 串口_iap ymodem_ymodem IAP
- InternationalizationAssistant:国际化助理
- react-ant:(基于pro 2.0)基于Ant Design Pro的(多标签页标签,拖拽,富文本,拾色器,多功能表,多选选择)
- 2019年中国研究生数学建模竞赛赛题.zip
- matlab机械手轨迹规划程序.zip_机械手_机械手 matlab_机械手轨迹规划;matlab_轨迹 规划_轨迹规划