江苏科技大学通信专业嵌入式课件第8章

上传人:F****n 文档编号:88051598 上传时间:2019-04-17 格式:PPT 页数:54 大小:656.50KB
返回 下载 相关 举报
江苏科技大学通信专业嵌入式课件第8章_第1页
第1页 / 共54页
江苏科技大学通信专业嵌入式课件第8章_第2页
第2页 / 共54页
江苏科技大学通信专业嵌入式课件第8章_第3页
第3页 / 共54页
江苏科技大学通信专业嵌入式课件第8章_第4页
第4页 / 共54页
江苏科技大学通信专业嵌入式课件第8章_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《江苏科技大学通信专业嵌入式课件第8章》由会员分享,可在线阅读,更多相关《江苏科技大学通信专业嵌入式课件第8章(54页珍藏版)》请在金锄头文库上搜索。

1、重点内容: 内核源码组织 内核的定制 Makefile 定制网卡驱动 内核裁剪,第八章 定制内核移植,一、Linux内核源码组织,Linux用来支持各种体系结构的源代码包含大约4500个C语言程序,存放在270个左右的子目录下,总共大约包含200万行代码,大概占用58MB磁盘空间。其文件结构图如图所示:,一、Linux内核源码组织,这里有的目录是包含多个部分的内容。具体各个目录的内容组成如下: arch:arch目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux 支持的体系结构,例如i386 就是Intel CPU 及与之相兼容体系结构的子目录; include:

2、include 目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux 子目录下;,一、Linux内核源码组织,init:init 目录包含核心的初始化代码(不是系统的引导代码),有main.c 和Version.c 两个文件; mm:mm 目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm 目录下; drivers:drivers 目录中是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound; ipc:ipc 目录包含了核心进程间的通信代码;,一、Li

3、nux内核源码组织,modules:modules 目录存放了已建好的、可动态加载的模块; fs:fs 目录存放Linux 支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext3 文件系统对应的就是ext3 子目录; Kernel:Kernel 内核管理的核心代码放在这里。同时与处理器结构相关代码都放在arch/*/kernel 目录下; net:net 目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面;,一、Linux内核源码组织,lib:lib 目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下; scripts:scripts 目

4、录包含用于配置核心的脚本文件; documentation:documentation 目录下是一些文档,是对每个目录作用的具体说明。一般在每个目录下都有一个depend文件和一个Makefile文件。这两个文件都是编译时使用的辅助文件。,二、内核基本配置,1.内核配置系统 2. Makefile 3.具体配置操作 4.添加自己代码,二、内核基本配置,1.内核配置系统,ARM-Linux内核的配置系统由三个部分组成:Makefile、配置文件和配置工具,它们之间的关系如图所示:后缀名为.in的文件为提供选项的文件,通过配置工具配置之后生成配置文件,最后按照选项来调用源码编译成待烧录到目标板的镜

5、像文件zImage。整个过程都是由Makefile文件来调用管理的。,二、内核基本配置,1.内核配置系统,1、Makefile Makefile是Linux系统中非常重要的一个组成部分,这我们前面也有所介绍。因为在几乎每一个子目录下都会有Makefile文件。其中位于根目录下的Makefile文件是总纲式Makefile文件,其它任何Makefile文件都是直接或间接被它调用。Makefile文件定义了各个目录下文件如何被编译,并最终形成zImage文件。当然zImage文件的产生还要借助.config文件,它会告诉Makefile文件哪些文件被编译进内核,哪些源文件没有被用户选中,并不需要被

6、编译进内核文件中。,二、内核基本配置,1.内核配置系统,2、配置文件 在ARM-Linux系统中,配置文件存放在各个子目录下,它们的名字通常被称为config.in或Config.in文件,其中后缀名为in的表示的是提供选项,而后缀名为config的则是表示是表示进行选择了某些选项之后的配置文件。存放在arch/arm目录下的config.in文件为总纲领式配置文件,其它config.in文件都是直接或间接被该文件调用。这些配置文件按照一定的格式编写,用户通过特定的工具可以读这些配置文件来进行ARM-Linux系统的配置,最终配置的选项结果存放在内核根目录.config文件中。,二、内核基本配

7、置,1.内核配置系统,3、配置工具 配置工具一般包括配置命令解释器和配置用户界面。前者主要作用是对配置脚本中使用的配置命令进行解释;而后者则是提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于Make config、Make menuconfig 和make xconfig。 这些配置工具都是使用脚本语言,如Tcl/Tk、Perl 编写的(也包含一些用C编写的代码)。,二、内核基本配置,2. Makefile,Makefile是分布在Linux内核源码的各个层次目录中,定义Linux内核的编译规则。其主要作用是根据配置的情况,构造出需

8、要编译的源文件列表,然后分别编译,并把目标代码链接到一起,最终形成Linux内核二进制文件。 1、Makefile概述 由于Linux内核源代码是按照树形结构组织的,所以Makefile也被分布在目录树中。Linux内核中的Makefile以及与Makefile直接相关的文件有:,二、内核基本配置,2. Makefile,Makefile:顶层Makefile,是整个内核配置、编译的总体控制文件; .config:内核配置文件,包含由用户选择的配置选项,用来存放内核配置后的结果; arch/*/Makefile:位于各种CPU体系目录下的 Makefile,其中“*”表示不同的平台,如 arc

9、h/arm/Makefile,是针对arm平台的Makefile; 各个子目录下的Makefile:比如drivers/Makefile,负责所在子目录下源代码的管理与编译; Rules.make:规则文件,被所有的Makefile使用。,二、内核基本配置,2. Makefile,2、Makefile 中的变量 顶层Makefile定义并向环境中输出了许多变量,为各个子目录下的Makefile传递一些信息。有些变量,比如SUBDIRS,不仅在顶层 Makefile 中定义并且赋初值,而且在 arch/*/Makefile 还作了扩充。 常用的变量有以下几类: 版本信息 版本信息有:VERSIO

10、N,PATCHLEVEL, SUBLEVEL, EXTRAVERSION,KERNELRELEASE。,二、内核基本配置,2. Makefile,CPU体系结构:ARCH。 路径信息:TOPDIR, SUBDIRS 内核组成信息:HEAD, CORE_FILES, NETWORKS, DRIVERS, LIBS 编译信息:CPP, CC, AS, LD, AR,CFLAGS,LINKFLAGS 配置变量CONFIG_*,二、内核基本配置,2. Makefile,3、Rules.make 变量 Rules.make 是编译规则文件,所有的Makefile中都会包括Rules.make。Rules

11、.make 文件定义了许多变量,最为重要是那些编译、链接列表变量,包括以下这些变量: O_OBJS,L_OBJS,OX_OBJS,LX_OBJS:本目录下需要编译进Linux内核vmlinux的目标文件列表,其中OX_OBJS和LX_OBJS中的“X”表明目标文件使用了 EXPORT_SYMBOL输出符号;,二、内核基本配置,2. Makefile,M_OBJS,MX_OBJS:本目录下需要被编译成可装载模块的目标文件列表。同样,MX_OBJS 中的“X”表明目标文件使用了 EXPORT_SYMBOL输出符号; O_TARGET,L_TARGET:每个子目录下都有一个O_TARGET或L_TA

12、RGET,Rules.make首先从源代码编译生成O_OBJS和OX_OBJS中所有的目标文件,然后使用$(LD) -r 把它们链接成一个O_TARGET 或 L_TARGET。O_TARGET 以 .o 结尾,而L_TARGET 以 .a 结尾。,二、内核基本配置,2. Makefile,4、子目录下的Makefile 子目录Makefile用来控制本级目录以下源代码的编译规则。,二、内核基本配置,3.具体配置操作,内核源码的配置文件有自己的格式,这些文件中定义了makefile的使用命令。 1、配置命令 在Linux内核中,配置命令有多种方式,如表所示:,二、内核基本配置,3.具体配置操作

13、,2、配置语言 配置语言在这里面使用很简单明了,主要包括: 顶层菜单 询问语句 定义语句 依赖语句 选择语句 if语句 Source 语句 菜单块(menu block)语句,二、内核基本配置,3.具体配置操作,3、缺省配置 Linux 内核支持非常多的硬件平台,对于具体的硬件平台而言,有些配置就是必需的,有些配置就不是必需的。另外,新增加功能的正常运行往往也需要一定的先决条件,针对新功能,必须作相应的配置。因此,特定硬件平台能够正常运行对应着一个最小的基本配置,这就是缺省配置。,二、内核基本配置,3.具体配置操作,Linux内核中针对每个ARCH都会有一个缺省配置。在向内核代码增加了新的功能

14、后,如果新功能对于这个ARCH是必需的,就要修改此 ARCH 的缺省配置。,二、内核基本配置,3.具体配置操作,4、帮助文件 在配置Linux内核时,遇到不懂含义的配置选项,可以查看它的帮助,从中可得到选择的建议。 所有配置选项的帮助信息都在 Documentation/Configure.help 中,它的格式为: ,二、内核基本配置,3.具体配置操作, 给出本配置选项的名称, 对应配置变量, 对应配置帮助信息。在帮助信息中,首先简单描述此功能,其次说明选择了此功能后会有什么效果,不选择又有什么效果。,二、内核基本配置,4. 添加自己代码,对于一个开发者来说,将自己开发的内核代码加入到 Li

15、nux 内核中,需要有三个步骤: 1)首先确定把自己开发代码放入到内核的位置; 2)其次,把自己开发的功能增加到 Linux 内核的配置选项中,使用户能够选择此功能; 3)最后,构建子目录 Makefile,根据用户的选择,将相应的代码编译到最终生成的 Linux 内核中去。,三、内核定制,1.源码获取 2.移植过程,三、内核定制,1.源码获取,源码的获取有很多途径,我们可以从ftp:/ftp.kernel.org/pub/linux/kernel/v2.6/获取,这是Linux内核的官方网站,定期发布最新的内核,以修补Linux内核在使用中的各种bug,可以根据自己的需要下载适合自己的版本。

16、,1.源码获取,三、内核定制,2.移植过程,Linux内核的移植过程比较繁琐,具体步骤: 1、解压内核文件 解压文件可以点击右键,选择“extract here”命令;也可以在终端中,输入如下命令: tar xfv linux-2.6.29.tar.bz2 然后进入内核目录,输入如下命令: cd linux-2.6.29,2.移植过程,三、内核定制,2、修改机器码 内核的机器码必须跟Bootloader中一致,不管是u-boot还是vivi,在smdk2440 使用的uboot的机器码是168,这里需要修改机器码,否则会出现不能启动的情况。机器码保存在内核源码的“arch/arm/tools/mach-types”文件中,大概在379 行,把原来的 数字“362” 改为 “168”。也可以修改uboot中的机器码,在“includeasm-armmach-types.h”文件中,找到“#define MACH_TYPE_S3C2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号