文档详情

嵌入式Linux内核移植详解顶嵌.doc

发布:2017-06-15约5.35千字共9页下载文档
文本预览下载声明
内核移植阶段 内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。/thread-80832-5-1.html。bootloader移植准备。 内核源码 这里我们选用比较新的内核源码版本linux-,他的下载地址是/pub/linux/kernel/v2.6/linux-.tar.bz2。 烧写工具 我们选用网口进行烧写这就需要内核在才裁剪的时候要对网卡进行支持 知识储备 要进行内核裁剪不可缺少的是要对内核源码的目录结构有一定的了解这里进行简单介绍。 (1)arch/: arch子目录包括了所有和体系结构相关的核心代码。它的每一个子目录都代表一种支持的体系结构,例如i386就是关于intel cpu及与之相兼容体系结构的子目录。PC机一般都基于此目录 (2)block/: 部分块设备驱动程序 (3)crypto: 常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法 (4) documentation/: 文档目录,没有内核代码,只是一套有用的文档 (5) drivers/: 放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录:如,/block 下为块设备驱动程序,比如ide(ide.c)。fs/: 所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统, 例如fat和ext2 (7)include/: include子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在 include/linux子目录下,与 intel cpu相关的头文件在include/asm-i386子目录下,而include/scsi目录则是有关scsi设备的头文件目录 (8) init/: 这个目录包含核心的初始化代码(注:不是系统的引导代码),包含两个文件main.c和Version.c,这是研究核心如何工作的好的起点之一 (9)ipc/: 这个目录包含核心的进程间通讯的代码 (10)kernel/: 主要的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.clib/: 放置核心的库代码 (12) mm/:这个目录包括所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等net/: 核心与网络相关的代码 (14)scripts/: 描述文件,脚本,用于对核心的配置 (15)security: 主要是一个SELinux的模块 (16)sound: 常用音频设备的驱动程序等; usr: 实现了一个cpio (18)COPYING: GPL版权申明; CREDITS: 光荣榜; Kbuild: 一个包含了某些通用规则的编译文件; MAINTAINERS: 维护人员列表,对当前版本的内核各部分都有谁负责; Makefile: 第一个Makefile文件。用来组织内核的各模块,记录了个模块间的相互这间的联系和依托关系,编译时使用;仔细阅读各子目录下的Makefile文件对弄清各个文件这间的联系和依托关系很有帮助; ReadMe: 核心及其编译配置方法简单介绍; REPORTING-BUGS:有关报告Bug 的一些内容; 一 般在每个目录下都有一个.depend文件和一个Makefile文件。这两个文件都是编译时使用的辅助文件。仔细阅读这两个文件对弄清各个文件之间的联 系和依托关系很有帮助。另外有的目录下还有Readme文件,它是对该目录下文件的一些说明,同样有利于对内核源码的理解。 3.修改平台时钟 修改平台的时钟频率,以满足开发板的工作频率。修改内核源码“arch/arm/mach-s3c2440/mach-s3c2440.c” 文件的162行,把16.9344MHz改为12MHz,因为我们选用的开发板使用的就是12MHz的外部时钟源输入。 如下图所示: 制作开发板配置文件 我们选用的是比较通用配置的开发板,所以用内核中自带的配置文件,进行修改是比较方便的做法。该配置单在内核源码的“arch/arm/configs/”目录下面,名为:“s3c2410_defconfig”,该配置文件里面选择了几乎所有的和S3C24XX系列CPU相关的配置选项,我们完全可以在该配置单的基础上进行配置。首先将该文件考到根目录命名为.config 指令为:# cp arch/arm/configs/s3c2410de
显示全部
相似文档