第五章Linux内核代码移植_第1页
第五章Linux内核代码移植_第2页
第五章Linux内核代码移植_第3页
第五章Linux内核代码移植_第4页
第五章Linux内核代码移植_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux内核代码移植第五章Linux内核代码移植中国十大品牌IT教育机构Linux内核版本Linux内核源码结构Linux内核配置Linux内核移植Linux内核版本中国十大品牌IT教育机构内核源码可以从下载,ARM体系结构的内核源码补丁可从

.uk/developer获得Linux内核的版本号可以从源码顶层目录下的

Makefile中看到,下面几行构成Linux版本号:

VERSION

=

2PATCHLEVEL

=

6SUBLEVEL

=

22EXTRAVERSION

=

.6内核版本的PATCHLEVEL,稳定内核为偶数,实验内核为奇数Linux内核版本中国十大品牌IT教育机构

Linux内核最初在1991年发布,是Linus

Torvalds为386开发的一个类Minix的操作系统

Linux1.0官方版本发行于1994年3月,仅支持386,仅支持单CPU系统

Linux1.2发行于1995年3月,是第1个支持多平台(Alpha\Sparc\Mips等)的版本

Linux2.0发行于1996年6月,包含很多新平台的支持,但最重要的是支持SMP

Linux2.2在1999年1月发行,极大提升了SMP系统性能,同时支持更多的硬件

Linux2.4在2001年1月发行,进一步提升了SMP系统的扩展性,同时集成了很多用于支持桌面系统的特性:USB、PC卡(PCMCIA)、内置的即插即用等Linux内核版本中国十大品牌IT教育机构Linux2.6发布于2003年12月支持更多的平台,从小规模的嵌入式到服务器级的64位系统使用新的调度器,进程的切换效率更高内核服务可被抢占,使得用户操作可得到更快的响应I/O子系统进行了大修改,使得在各种工作负荷下都更具响应性模块子系统、文件系统都作了大量的改进合并了uClinux的功能,以支持没有MMU的CPU内核源码结构中国十大品牌IT教育机构linux内核源码目录结构Documentation:内核帮助文档之源头init:内核初始化代码(非引导代码),相当于应用程序的main函数。包含main.c和version.c,是研究核心

如何工作的好起点kernel:主核心代码,主要包括进程管理和irq。与平台相关的代码在arch/*/kernel目录下mm:内存管理代码。与平台相关的代码(如MMU)在arch/*/mm中ipc:进程间通信代码net:网络协议栈代码(ipv4、ipx、802、bluetooth、atm),每个子目录对应网络的一个方面内核源码结构中国十大品牌IT教育机构linux内核源码目录结构fs:文件系统(如ext3、fat、ntfs、yaffs2)代码lib:内核代码用到的库函数(如strlen、memcpy),与平台相关的代码在arch/*/libscripts:在配置内核时用到,存放了配置内核的一些脚本文件,如“make

menuconfig”命令drivers:设备驱动程序(如nandflash、串口、cs8900),占整个内核代码的一半以上,有些是与平台相关的,有些是平台无关的。内核源码结构中国十大品牌IT教育机构linux内核源码目录结构arch/arm/boot:内核引导代码(compressed/head.S)arch/arm/kernel、lib、mmarch/arm/mach-s3c2410:机器平台相关代码arch/arm/tools:存有mach-typesinclude/linux:平台无关头文件include/asm-arm:ARM平台相关头文件include/asm-arm/arch-s3c2410:机器平台相关头文件Linux

Makefile分析中国十大品牌IT教育机构.config配置文件定义了一系列变量,Makefile将结合它来决定哪些文件被编译进内核、哪些文件被编为模块、进入哪些子目录递归编译顶层Makefile和arch/$(ARCH)/Makefile决定根目录下哪些子目录、arch/$(ARCH)/目录下哪些文件和目录将被编进内核设置可影响所有文件的编译、链接选项:

CFLAGS\AFLAGS\LDFLAGS\ARFLAGS根据链接脚本arch/$(ARCH)/kernel/vmlinux.lds,按照一定顺序组织文件生成映像文件vmlinuxLinux

Makefile分析中国十大品牌IT教育机构各级子目录下的Makefile(Kbuild)决定所在目录下哪些文件被编进内核,哪些文件被编成模块,进入哪些子目录继续调用子目录的Makefile设置能够影响当前目录下所有文件的编译、链接选项:EXTRA_CFLAGS\EXTRA_AFLAGS\EXTRA_LDFLAGS\EXTRA_ARFLAGS设置可以影响某个文件的编译选项:

CFLAGS_$@\AFLAGS_$@详细信息请参阅

Documentation/kbuild/makefiles.txt内核Kconfig分析中国十大品牌IT教育机构作用控制make

menucofig时,出现的配置选项根据用户的选择,生成.config配置文件主(初始)Kconfig文件arch/$(ARCH)/Kconfig内核Kconfig分析中国十大品牌IT教育机构Kconfig文件的基本要素:config条目(entry)config

REISERFS_FS_POSIX_ACLboolprompt

"ReiserFS

POSIX

Access

Control

List”default

ydepends

on

REISERFS_FS_XATTRselect

FS_POSIX_ACLhelpPosix

Access

Control

Lists

(ACLs)

supportIf

you

don"t

know

what

Access

Control

Lists

are,

say

N

REISERFS_FS_POSIX_ACL为变量名,将在.config中以

CONFIG_REISERFS_FS_POSIX_ACL=y或n的形式出现bool为变量取值的类型,可为y或n

prompt为出现在配置菜单中的文字,没有它,将使得用户不能在配置界面中配置它default为变量缺省值,可被用户设置值覆盖

depends

on表示该变量必须在REISERFS_FS_XATTR被设置的情况下才能进行设置,否则取值为n,即使default为y

select表示它将影响到变量FS_POSIX_ACL,使得FS_POSIX_ACL至少应该配置为y(如果它最终取值为y的话)内核Kconfig分析中国十大品牌IT教育机构变量的取值类型tristate:可取y、n、mbool

(其为tristate的变体):可取y、nstring:取值为字符串,如:

CONFIG_CMDLINE="root=/dev/hda1

roinit=/bin/bash

console=ttySAC0"hex

(其为string的变体):取值为十六进制数据,如:CONFIG_VECTORS_BASE=0xffff0000int

(其为string的变体):取值为十进制数据,如:

CONFIG_SPLIT_PTLOCK_CPUS=4096内核Kconfig分析中国十大品牌IT教育机构Kconfig文件的要素:menu在menu和endmenu中间有很多config条目

体现在配置菜单上为System

type--->,按下该条目后,将出现各个config条目Kconfig文件的要素:choice在choice和endchoice之间定义了很多config条目

体现在配置菜单上为ARM

system

type--->,按下该条目后,将出现各个config条目

choice中的config条目变量只能有2种类型:bool或tristate,且不能同时有这2种类型的变量。对于bool型变量只能在多个选择中选择1个为y;对于tristate型变量要么将多个(当然也可以是1个)设为m,要么仅将1个设为y,其余为n。这好比一个硬件有多个驱动,要么选择1个编入内核,要么把多个全编为模块内核Kconfig分析中国十大品牌IT教育机构Kconfig文件的要素:comment

用于定义帮助信息,将出现在配置界面的第一行;并且还会出现在配置文件.config中(作为注释)Kconfig文件的要素:source引入另一个Kconfig文件参阅:Documentation/kbuild/kconfig-language.txtLibrary

routines中国十大品牌IT教育机构块设备层:用于设置块设备的一些总体参数,比如是否支持大于2TB的块设备、是否支持大于2TB的文件、设置I/O调度器等。一般使用默认值即可系统类型:选择CPU架构、开发板类型等开发板相关的配置选项PCMCIA/CardBus总线的支持,不用设置用于设置内核的一些参数,比如是否支持内核抢占,是否支持动态修改系统时钟等启动参数:比如设置默认的命令行参数等,一般不用理会浮点运算仿真功能,目前linux还不支持硬件浮点运算,所以要选择一个浮点仿真器,一般选择“NWFPE

math

emulation”可执行文件格式,一般选择ELF电源管理选项网络协议选项:一般都选择“Networking

support”以支持网络功能,选择“Packet

socket”,以支持raw

socket接口功能,选择“TCP/IP

networking”以支持TCP/IP网络协议。通常在选择“Networking

support”后使用默认配置设备驱动程序:几乎包含Linux的所有驱动程序文件系统对系统的活动进行分析,仅供内核开发者使用调试内核时的各种选项安全选项,一般使用默认选项加密选项库子程序:比如CRC32检验函数、zlib压缩函数等。不包含在内核源码中的第三方内核模块可能需要这些库,可以全不选,若内核中其它部分依htt赖p:它//,ww会w.n自ew动er选.上Linux内核配置选项简介-主菜单Block

layerSystem

TypeBus

supportKernel

FeaturesBoot

optionsFloating

pointemuulationUserspace

binary

formatsPower

management

optionsNeteworkingDevice

DriversFile

systemsprofiling

supportKernel

hackingSecurity

optionsCryptographic

optionsLinux内核配置选项简介-System

Type菜单中国十大品牌IT教育机构第一行ARM

system

type用来选择体系结构,进入它后选中SamsungS3C2410,S3c2412,S3c2413,S3c2440,S3c2442,S3c2443选中它后,选择S3C2410

UART

to

use

for

low-level

messages,输入0,表示使用哪个串口来输出内核打印信息再往下,进入S3C2440Machines选择开发板类型Linux内核配置选项简介-设备驱动程序中国十大品牌IT教育机构MTD子系统的s3c2410

NAND支持Character

devices的s3c2410串口支持网卡支持Linux内核配置选项简介-文件系统中国十大品牌IT教育机构File

system--->Pseudo

filesystems--->Virtualmemory

file

system

support(former

shm

fs)File

system--->Miscellaneous

filesystems--->Journalling

Flash

File

System

v2(JFFS2)supportFile

system--->Network

File

Systems--->NFS

file

system

supportProvide

NFSv3

client

supportProvide

NFSv4

client

supportAllow

direct

I/O

on

NFS

filesRoot

file

system

on

NFSLinux内核配置选项简介-block

devices中国十大品牌IT教育机构·

Device

Drivers

->loopback

device

support

(环回设备)RAM

disk

support

(RAM

disk)Linux内核移植中国十大品牌IT教育机构修改顶层MakefileARCH

?=

armCROSS_COMPILE

?=

arm-linux-修改晶振频率arch/arm/mach-s3c2440/mach-smdk2440.c的Line

180

s3c24xx_init_clocks(16934400)改为

s3c24xx_init_clocks(12000000)Linux内核移植中国十大品牌IT教育机构修改MTD分区

修改arch/arm/plat-s3c24xx/common-smdk.c文件中的

smdk_default_nand_part结构添加对yaffs文件系统的支持

从www.alephl.co.uk/cgi-bin/vie

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论