- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章Linux内核的配置、编译和移植分析
第十章Linux内核的配置、编译和移植 嵌入式开发流程 主要内容 移植的概念 Linux内核结构 kernel的移植 10.1 移植的概念 在同一个硬件平台上可以嵌入不同的嵌入式操作系统,就好比PC既开放安装Windows又可以安装Linux一样。 同样,有些操作系统经过移植后可以运行在不同的硬件平台上。如果一个系统可以在不同硬件平台上运行,那么这个系统就是可移植的。 使某一个平台的代码运行在其它平台上的过程叫做移植。 Linux操作系统就可以通过移植,运行在ARM、PowerPC等多种硬件平台上。考虑到嵌入式系统是“硬件可裁减”的,以及不同的用户需求,我们需要对已有的内核代码进行裁减移植。 10.2 Linux内核结构 一般在Linux系统中的/usr/src/Linux-*.*.*(*.*.*代表内核版本)目录下就是内核源代码。 Linux内核非常庞大,包括驱动程序在内有数百兆之多。 10.2 Linux内核结构 /arch目录:包含了体系结构相关部分的内核代码,其中的每一个目录都代表一种硬件平台,比如我所使用的ARM平台和PC机使用的i386。对于任何一种平台,都包括以下5个目录:boot、kernel、lib、mm和math-xxx。显然,移植工作的重点就是arch目录下的文件。 /drivers目录:包含了内核中所有的设备驱动程序。它占整个内核发行版本代码的一半以上,非常庞大。其中,有些驱动程序是与硬件平台无关的而有些是相关的。 10.2 Linux内核结构 /fs目录:包含了Linux所支持的所有文件系统。一般来说,文件系统与硬件无关。 /include目录:包含了建立内核代码时所需的大部分头文件,比如,与平台无关的头文件在include/linux子目录下。此外,也包括了不同平台需要的库文件,比如, asm-arm是ARM平台需要的库文件。 /init目录:包含了内核的初始化代码(不是系统的引导代码),有main.c和version.c两个文件。内核从此工作。 10.2 Linux内核结构 /ipc目录:包含了核心进程间的通信代码。 /kernel目录:包含了内核管理的核心代码。 /lib目录:包含了所有的库代码。 /mm目录:包含了所有的内存管理代码。 /net目录:包含了和网络相关的代码,其每一个子目录对应于网络的一个方面。 其它目录:Documentation目录包含了许多非常详细的文档。Scripts目录主要在配置内核时用到,存放了配置内核的一些脚本文件,如“make menuconfig”命令。 10.3 kernel的配置、编译和移植 (1)、需以root权限来对Linux内核进行移植。 假设内核代码存放在/usr/src/linux-2.4.21下。 cd /usr/src ln -s linux-2.4.21-crus-1-4-3 linux-2.4.21 (创建了一个指向linux-2.4.21-crus-1-4-3的链接linux-2.4.21) 10.3 kernel的配置、编译和移植 (2)、修改相关目录下的Makefile文件。 由于Linux内核源代码是按照树形结构组织的,所以Makefile也被分布在目录树中。 Linux内核中的Makefile以及与Makefile直接相关的文件有: a、顶层即根目录Makefile:是整个内核配置、编译的总体控制文件。 在移植过程中,需修改此文件中的两方面内容:体系结构“ARCH”和交叉编译器“CROSS_COMPILE”。 10.3 kernel的配置、编译和移植 (2)、修改相关目录下的Makefile文件。 b、.config:内核配置文件,用户通过编译命令make menuconfig 配置后,产生了 .config。顶层 Makefile 读入 .config 中的配置选择。 c、arch/arm/*/Makefile:位于arm体系目录下的 Makefile,如arch/ arm/Makefile,是针对特定平台的 Makefile。 d、各个子目录下的 Makefile:比如 drivers/Makefile,负责所在子目录下源代码的管理。 e、Rules.make:规则文件,它定义了所有 Makefile 共用的编译规则。 10.3 kernel的配置、编译和移植 (3)、配置Linux内核。 命令为“make menuconfig” 10.3 kernel的配置、编译和移植 (3)、配置Linux内核。 在编译内核的过程中,最繁杂的事情就是这步配置工作了。 选择的原则: 将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影
文档评论(0)