欢迎来到天天文库
浏览记录
ID:37711739
大小:40.50 KB
页数:5页
时间:2019-05-29
《linux内核移植读书笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、linux内核移植读书笔记<1>2011-01-0612:01最近在看《嵌入式linux应用开发完全手册》,前一阵在看关于Uboot的启动流程分析,可忘记把读书笔记给记录下来,现在在读移植linux内核,我想应该记录一些东西,以加深理解16.1linux版本及特点2.6.36.2:主板本是2.6,次版本36,修订版本216.2.2内核源码结构及Makefile分析一,arch:体系结构相关的代码,对于每个架构的cpu,arch目录下有一个对应的子目录,arch/arm,arch/i386block:块设备相关的通用函数crypo:加密和散列算法drivers:所
2、有设备的驱动程序,里面的每一个子目录对应一类驱动程序fs:linux内核所支持的文件系统include:内核头文件,有基本的头文件(include/linux/下),各种驱动或功能部件的头文件,各种体系相关的头文件,init:内核的初始化代码,main。c是内核引导后的第一各函数ipc:进程间通信的代码kernel:内核管理的核心代码,与处理器相关的核心代码在arch/arm/kernel/下lib:内核用到的一些库函数代码,与处理器相关的库函数代码在arch/arm/lib/下mm:内存管理代码,与处理器相关的内存管理代码在arch/arm/mm/下net:网
3、络支持代码,每个子目录代表网络的一个方面security:安全,密钥相关的代码sound:音频设备的驱动程序usr:用来制作一个压缩的cpio归档文件:initrd的镜像,它可以作为内核启动后链接的第一各文件系统,一般用不到Documentation:内核文档scripts:用于配置,编译内核的脚本文件二:LinuxMakefile分析内核中的文件有2万多个,仅与s3c2410,s3c2440相关的文件就有1万多个,这么多的文件,在内核编译时哪些文件将被编译,他们是怎么被编译的,他们的连接顺序如何,哪个文件在前面,哪个文件在后面?这些都是有Makefile文件来
4、管理的,简单来说,makefile文件主要完成一下3个方面的工作a,决定编译哪些文件b,怎样编译这些文件c,怎样连接这些文件,以及他们的连接顺序在linux内核目录下有很多Makefile文件,这些Makefile文件又要包含其他的一些配置信息文件和通用规则文件等,这些文件一起构成了linux的makefile体系,这个体系中的文件可以分为如下5类a,顶层的makefile文件,它是所有makefile文件的核心,从总体上控制着内核的编译,连接b,.config文件,在配置内核时生成,所有makefile文件都是根据.config文件来决定使用哪些文件c,arc
5、h/arm/makefile,对应arm体系结构的makefile,用来决定与arm体系结构相关的哪些文件参与内核的生成d,scripts/makefile.*,makefile共用的通用规则,脚本等e,KbuildMakefiles,各级子目录下的Makefile,被上一层makefile调用来编译当前目录下的文件(1)决定编译哪些文件a,顶层makefile决定内核根目录下哪些子目录将背编译进内核b,arch/arm/makefile决定该目录下哪些文件,目录被编译进内核c,各级子目录下的makefile文件决定该目录下哪些文件被编译进内核,哪些被编译成模块
6、,需要进入子目录下继续进行编译先看步骤a,顶层makefile决定内核根目录下哪些子目录将被编译进内核在顶层的makefile中可以看到如下内容:init-y:=init/drivers-y:=drivers/sound/net-y:=net/libs-y:=lib/core-y:=usr/...core-y+=kernel/mm/fs/ipc/security/crypto/block/有此可见,makefile将内核根目录下的这些目录分为了5类,除去include目录和一些不包含内核代码的目录外,还有一个arch目录没有出现在内核中。其实,arch目录是在a
7、rch/arm/makefile中被包含进内核的,在顶层的makefile直接包含了这个makefile。include$(srctree)/arch/$(ARCH)/MakefileARCH是一个变量,我们可以在顶层makefile中进行修改,找到ARCH?=和CROSS——COMPILE?=ARCH?=armCROSS_COMPILE?=arm-linux-在看步骤b,arch/arm/下哪些目录被编译进内核,我们可以在arch/arm/makefile下找到如下内容head-y:=arch/arm/kernel/head$(MMUEXT).oarch/ar
8、m/kernel/ini
此文档下载收益归作者所有