嵌入式Linux操作系统移植课件.ppt

上传人(卖家):三亚风情 文档编号:2910705 上传时间:2022-06-10 格式:PPT 页数:25 大小:1.42MB
下载 相关 举报
嵌入式Linux操作系统移植课件.ppt_第1页
第1页 / 共25页
嵌入式Linux操作系统移植课件.ppt_第2页
第2页 / 共25页
嵌入式Linux操作系统移植课件.ppt_第3页
第3页 / 共25页
嵌入式Linux操作系统移植课件.ppt_第4页
第4页 / 共25页
嵌入式Linux操作系统移植课件.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、嵌入式系统原理及应用教程嵌入式系统原理及应用教程(第(第2 2版)版)主讲内容主讲内容第第8章章 嵌入式系统嵌入式系统Boot Loader技术技术第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植第第10章章 嵌入式嵌入式Linux设备驱动程序开发设备驱动程序开发第第11章章 嵌入式嵌入式Linux应用程序设计应用程序设计嵌入式嵌入式LinuxLinux基本概念基本概念最新的最新的LinuxLinux内核版本可以从官方站点内核版本可以从官方站点http:/www.kernel.orghttp:/www.kernel.org获取。获取。因为嵌入式因为嵌入式LinuxLinux系统在开发

2、过程中需要对系统在开发过程中需要对LinuxLinux内核进行重内核进行重新定制,所以熟悉内核配置、编译和移植是非常重要的。新定制,所以熟悉内核配置、编译和移植是非常重要的。1.Linux1.Linux内核的版本内核的版本 Linux Linux内核的版本号分为主版本号、次版本号和扩展版本内核的版本号分为主版本号、次版本号和扩展版本号等。根据稳定版本、测试版本和开发版本定义不同版本号等。根据稳定版本、测试版本和开发版本定义不同版本序列。序列。第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植2.Linux2.Linux系统的分类系统的分类(1 1)以功能差异和发行组织分类)以功能差异和

3、发行组织分类l标准标准linuxlinux。lClinuxClinux。无。无MMUMMU支持的支持的linuxlinux系统,运行在无系统,运行在无MMUMMU的的CPUCPU上。上。Linux-RTLinux-RT。是最早在。是最早在linuxlinux上实现硬实时支持的上实现硬实时支持的linuxlinux发行版本。发行版本。lLinux/RTAILinux/RTAI。lEmbedixEmbedix。由。由LineoLineo公司开发,基于公司开发,基于PowerPCPowerPC和和x86x86平台开发的。平台开发的。Red Hat LinuxRed Hat Linux。l红旗红旗Li

4、nuxLinux等。等。(2 2)以应用的嵌入式平台分类)以应用的嵌入式平台分类 在嵌入式在嵌入式LinuxLinux系统开发过程中,内核移植是将系统适合于自己特定系统开发过程中,内核移植是将系统适合于自己特定的硬件平台系统的重要步骤,只有引导内核完毕,才能运行用户应用程的硬件平台系统的重要步骤,只有引导内核完毕,才能运行用户应用程序。序。 第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植3. Linux内核组成内存管理虚拟文件系统虚拟文件系内核组成内存管理虚拟文件系统虚拟文件系统网络接口进程间通信统网络接口进程间通信.Linux内核由进程管理、内存管理、虚拟文件系统、网络接口和进程

5、间内核由进程管理、内存管理、虚拟文件系统、网络接口和进程间通信五大子系统组成,各个子系统之间的依赖关系如图通信五大子系统组成,各个子系统之间的依赖关系如图9-1所示。所示。内存管理内存管理虚拟文件系统虚拟文件系统虚拟文件系统虚拟文件系统网络接口网络接口进程间通信进程间通信第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植(1)进程调度。)进程调度。 (2)内存管理。)内存管理。 (3)虚拟文件系统。)虚拟文件系统。(4)网络接口。)网络接口。 (5)进程通信。)进程通信。 用户用户层层内核内核层层硬件硬件层层用户应用程序用户应用程序函数库函数库系统调用系统调用进程管理进程管理虚拟文件系

6、统虚拟文件系统设备管理程序设备管理程序系统调用系统调用系统调用系统调用字符字符设备设备块设备块设备进程进程通信通信进程进程调度调度内存管内存管理理第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植结合图结合图9-2,可以发现,可以发现Linux内核中各个系统之间有内核中各个系统之间有如下关系:如下关系:(1)进程调度处于中间。)进程调度处于中间。 (2)进程调度与内存管理的依赖关系)进程调度与内存管理的依赖关系 (3)进程间通信依赖于内存管理。)进程间通信依赖于内存管理。 (4)虚拟文件系统与网络接口之间的关系。)虚拟文件系统与网络接口之间的关系。 (5)内存管理域虚拟文件系统之间的关

7、系。)内存管理域虚拟文件系统之间的关系。 第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植2.Linux内核源码结构内核源码结构 Linux内核源码非常庞大,采用内核源码非常庞大,采用C语言和少量汇编实现,并语言和少量汇编实现,并且随着版本的发展不断增加。源码的工程管理采用目录树结构,且随着版本的发展不断增加。源码的工程管理采用目录树结构,并使用并使用Makefile组织配置编译。组织配置编译。 获得新的获得新的Linux2.6内核源码之后,一般首先仔细阅读顶层目内核源码之后,一般首先仔细阅读顶层目录的录的README文件,了解对内核的概述和编译命令说明。文件,了解对内核的概述和编译

8、命令说明。 顶层目录中另一个比较重要的文件是顶层目录中另一个比较重要的文件是Makefile,它是整个内,它是整个内核配置编译的核心文件,负责组织目录树中的子目录的配置编核配置编译的核心文件,负责组织目录树中的子目录的配置编译管理,还决定了体系结构和内核版本号等。译管理,还决定了体系结构和内核版本号等。 部分主要目录结构见表部分主要目录结构见表9-1所示(注:表中带所示(注:表中带“/”的名称为目的名称为目录,反之为文件)。录,反之为文件)。第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植(1)arch目录中包含和硬件体系结构相关的代码,目录中包含和硬件体系结构相关的代码,每种平台占

9、一个相应的子目录。每种平台占一个相应的子目录。 (2)drivers目录存放系统的设备驱动,每一种驱动目录存放系统的设备驱动,每一种驱动程序各占一个子目录。程序各占一个子目录。(3)fs目录中包含了文件系统源代码和各种文件的目录中包含了文件系统源代码和各种文件的操作代码。操作代码。(4)其它目录和文件的说明见表格中描述。)其它目录和文件的说明见表格中描述。第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植9.2 嵌入式嵌入式Linux内核移植内核移植内核的移植涉及到如下工作:内核的移植涉及到如下工作: .编写针对特定处理器的代码。内核中关于任务调度、中断处编写针对特定处理器的代码。内核

10、中关于任务调度、中断处理等的代码要根据不同的处理器类型重新编写。理等的代码要根据不同的处理器类型重新编写。.编写针对特定硬件平台的引导和初始化代码。基于同样的处编写针对特定硬件平台的引导和初始化代码。基于同样的处理器,由于硬件系统设计上的不同,或者操作系统装载器的不理器,由于硬件系统设计上的不同,或者操作系统装载器的不同,需要实现有针对性的引导和初始化代码。同,需要实现有针对性的引导和初始化代码。.编写针对特定外设的设备驱动程序代码。编写针对特定外设的设备驱动程序代码。 内核移植工作主要是修改跟硬件平台相关的代码,一般不涉及内核移植工作主要是修改跟硬件平台相关的代码,一般不涉及Linux内核通

11、用的程序。内核通用的程序。 第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植9.2.1 内核修改内核修改1.解压内核源码解压内核源码 使用如下命令进行加压:使用如下命令进行加压: tar jxvf linux-2.6.32.4.tar.bz22.修改修改Makefile 整个整个Linux内核工程是以内核工程是以Makefile为核心完成编译和连为核心完成编译和连接的。接的。 进入内核源码目录,使用编辑工具打开一级目录下的进入内核源码目录,使用编辑工具打开一级目录下的Makefile文件,找到相关变量进行修改:文件,找到相关变量进行修改:ARCH?= armCROSS_COMPILE

12、 ?= arm-linux-第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植3.修改目标板输入时钟修改目标板输入时钟使用编辑工具打开内核源码目录中arch/arm/mach-s3c2440/mach-smdk2440.c文件,找到函数mini2440_map_io(void)的实现代码,如下:s3c24xx_init_clocks(12000000);4修改修改MTD分区分区Linux下的MTD驱动程序接口被划分为两类模块:用户模块和硬件模块。内核MTD分区必须与Bootloader分区相一致。 最后去掉最后去掉ECC校验:将校验:将driver/mtd/nand/s3c2410.c

13、文件中的文件中的“NAND_ECC_SOFT,”语句将其改为语句将其改为“NAND_ECC_NONE;”。 第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植5.配置配置yaffs2文件系统的补丁文件系统的补丁YAFFS意义为意义为yet another flash file system,也是一个开源的文件系统。,也是一个开源的文件系统。YAFFS文件系统则是专门针对文件系统则是专门针对NAND flash的,源代码可以到的,源代码可以到http:/www.aleph1.co.uk/yaffs/index.html上下载。上下载。使用如下命令解压补丁包:使用如下命令解压补丁包:tar

14、 -zxvf root.tar.gz进入补丁所在目录,使用如下命令打补丁:进入补丁所在目录,使用如下命令打补丁:./patch-ker.sh c 其中其中为为linux内核源码所在目录。内核源码所在目录。上面命令执行过程中相当于完成以下三项操作:上面命令执行过程中相当于完成以下三项操作:(1) 修改内核修改内核fs/Kconfig:增加了一行增加了一行:source fs/yaffs2/Kconfig(2) 修改内核修改内核fs/Kconfig增加一行增加一行:ojb-$(CONFIG_YAFFS_FS) +=yaffs2/(3) 在内核在内核fs/目录下创建目录下创建yaffs2目录目录第第

15、9章章 嵌入式嵌入式Linux操作系统移植操作系统移植9.2.2 内核配置内核配置 Linux内核版本不断更新,新的内核修订了旧内核的内核版本不断更新,新的内核修订了旧内核的bug,并增加了许多新的特性。,并增加了许多新的特性。 为了正确、合理、有选择地使用内核提供的模块,设置为了正确、合理、有选择地使用内核提供的模块,设置内核编译配置选项,一般主要有下面几个考虑。内核编译配置选项,一般主要有下面几个考虑。.节省存储空间。节省存储空间。.节省运行空间。节省运行空间。.减少漏洞。减少漏洞。针对于一个新的目标系统按照上一节进行了内核的修改针对于一个新的目标系统按照上一节进行了内核的修改之后,就可以

16、对内核进行进一步的配置工作。之后,就可以对内核进行进一步的配置工作。第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植1.内核配置工具内核配置工具配置工具主要包含配置工具主要包含Makefile、Kconfig和配置界面生成工具,和配置界面生成工具,这些项目可以由这些项目可以由Kbuild系统调用,生成配置界面。配置界系统调用,生成配置界面。配置界面是通过工具来生成的,工具通过面是通过工具来生成的,工具通过Makefile编译执行,选编译执行,选项则是通过各级目录的项则是通过各级目录的Kconfig文件定义。文件定义。Linux 2.6内核中内核中Makefile分类:分类:Kerne

17、l Makefile顶层目录下的顶层目录下的Makefile文件文件.config内核配置文件内核配置文件arch/$(ARCH)/Makefile对应不同平台体系结构的对应不同平台体系结构的Makefilescripts/Makefile.*所有所有kbuild Makefiles的通用规则等定义的通用规则等定义 kbuild Makefiles内核编译各级目录下的内核编译各级目录下的Makefile文件文件第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植Kbuild大体上按照下列步骤执行编译过程。大体上按照下列步骤执行编译过程。 l内核配置,生成内核配置,生成.config文件。

18、文件。 l保存内核版本信息到保存内核版本信息到include/linux/version.h。 l创建链接符号创建链接符号include/asm,链接,链接 include/asm-$(ARCH)源目录。源目录。 l升级所有依赖的前提文件,在升级所有依赖的前提文件,在arch/$(ARCH)/Makefile中指定附加中指定附加依赖条件。依赖条件。 l递归地遍历各级子目录并且编译所有的目标。递归地遍历各级子目录并且编译所有的目标。 init-*、core*、drivers-*、net-*、libs-*的目录变量值在的目录变量值在 arch/$(ARCH)/Makefile 文文件中有些扩展。件

19、中有些扩展。l链接所有的目标文件,生成顶层目录的链接所有的目标文件,生成顶层目录的 vmlinux。链接的第一个。链接的第一个目标文件在目标文件在 head-y列表中,是在列表中,是在arch/$(ARCH)/Makefile中定义的。中定义的。 最后,体系结构相关的部分作必须的后期处理,编译生成最终的引最后,体系结构相关的部分作必须的后期处理,编译生成最终的引导映像。这可以包括编译引导记录;准备导映像。这可以包括编译引导记录;准备initrd映像等类似工作。映像等类似工作。第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植(1)配置入口)配置入口在顶层的在顶层的Makefile中,可

20、以查找到如下几行定义的规则。中,可以查找到如下几行定义的规则。config %config: scripts_basic outputmakefile FORCE $(Q)mkdir -p include/linux $(Q)$(MAKE) $(build)=scripts/kconfig $ (2)Kconfig下面解释一下下面解释一下Kconfig的特点和语法。的特点和语法。 菜单项菜单项 菜单属性菜单属性 菜单依赖关系菜单依赖关系 菜单组织结构菜单组织结构 Kconfig语法语法 第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植(3)内核编译方式)内核编译方式Kbuild系统使

21、用系统使用Kbuild Makefile来编译内核或模块。来编译内核或模块。Kbuild Makefile的文件名不一定是的文件名不一定是Makefile,尽管推荐使,尽管推荐使用用Makefile这个名字。这个名字。 Kbuild Makefile的一个最主要功能就是指定编译什么,这的一个最主要功能就是指定编译什么,这个功能是通过两个对象指定的个功能是通过两个对象指定的obj-?和和xxx-objs。obj-?语法:语法:obj-? = $(target).oxxx-objs指定了编译对象需要的文件,一般只有在源文件指定了编译对象需要的文件,一般只有在源文件是多个时才需要它。是多个时才需要它

22、。第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植(4)配置选项)配置选项在进行配置之前,在内核目录下执行下列操作,生成平台默认在进行配置之前,在内核目录下执行下列操作,生成平台默认配置文件配置文件.config:make s3c2410_defconfig执行完后会出现:执行完后会出现:# configuration written to .config。常规设置选项常规设置选项General setup 引导模块支持引导模块支持Loadable module support块设备块设备Enable the Block layer处理器类型及特性处理器类型及特性Processor

23、type and features电源管理选项电源管理选项Power management options (ACPI, APM) 总线选项总线选项Bus options用户可执行文件格式用户可执行文件格式Executable file formats驱动程序配置选项驱动程序配置选项Driver Drivers第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植9.2.3 内核编译内核编译 编译的步骤就是执行一些相对固定的命令目标序列。编译的步骤就是执行一些相对固定的命令目标序列。 Kbuild还提供了许多可选的配置编译目标和规则。可以使用还提供了许多可选的配置编译目标和规则。可以使用m

24、ake help命令把所有的配置编译目标和说明信息打印到屏幕。命令把所有的配置编译目标和说明信息打印到屏幕。其中常用的配置编译目标有(其执行格式为:其中常用的配置编译目标有(其执行格式为:make ):):(1)清理目标()清理目标(Clean targets):):(2)内核配置的目标()内核配置的目标(Configuration targets)(3)其他通用目标()其他通用目标(Other generic targets) (4)静态解析器目标()静态解析器目标(Static analysers) (5)内核打包目标()内核打包目标(Kernel packaging) (6)文档目标()

25、文档目标(Documentation targets) (7)ARM体系结构相关的目标(体系结构相关的目标(Architecture specific targets (arm)) (8)缺省目标)缺省目标第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植内核编译产生了哪些目标,连接形成了哪些映像,这些映内核编译产生了哪些目标,连接形成了哪些映像,这些映像是如何组成的,又处于像是如何组成的,又处于LinuxLinux内核启动运行的哪个阶段内核启动运行的哪个阶段 1.vmlinux1.vmlinux映像:了解这个映像(映像:了解这个映像(vmlinuxvmlinux image imag

26、e)的构成。)的构成。2.zImage2.zImage映像:嵌入式映像:嵌入式LinuxLinux系统的引导方式有两种,一种是上文所说系统的引导方式有两种,一种是上文所说的非压缩方式;另外一种是压缩方式。的非压缩方式;另外一种是压缩方式。 zImagezImage产生的过程。产生的过程。LinuxLinux内核是一个很复杂的代码块,有许许多多的全局符号。它不使用内核是一个很复杂的代码块,有许许多多的全局符号。它不使用符号名,而是通过变量或函数的地址来识别变量或函数名。符号名,而是通过变量或函数的地址来识别变量或函数名。 内核主要是用内核主要是用C C写的,编译成目标代码或者映像就可以直接使用地

27、址写的,编译成目标代码或者映像就可以直接使用地址了。了。 第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植9.3 建立建立Linux根文件系统根文件系统 1.文件系统介绍文件系统介绍2.Linux文件系统:包括以下几项内容:文件系统:包括以下几项内容:基本的文件系统结构,包含一些必需的目录比如:基本的文件系统结构,包含一些必需的目录比如:/dev,/proc,/bin,/etc,/lib,/usr,/tmp等。等。 基本程序运行所需的库函数,如基本程序运行所需的库函数,如 Glibc/uC-libc。 基本的系统配置文件,比如基本的系统配置文件,比如 rc,inittab等脚本文件。

28、等脚本文件。 必要的设备文件支持:必要的设备文件支持:/dev/hd*,/dev/tty*,/dev/fd0。 基本的应用程序,如基本的应用程序,如sh,ls,cp,mv等。等。 第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植3.根文件系统的结构根文件系统的结构 (1)/dev 设备文件。设备文件。 (2)/root root用户主目录。用户主目录。 (3)/usr。 (4)/var。 (5)/home。 (6)/proc。 (7)/bin。 (8)/sbin。 (9)/etc。 (10)/boot。 (11)/lib。 (12)/mnt。 (13)/tmp。 (14)/initr

29、d 第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植4.制作根文件系统制作根文件系统(1)建立目录结构)建立目录结构(2)编译)编译busybox(3)创建设备节点)创建设备节点(4)建立配置文件)建立配置文件 (5)添加共享链接库)添加共享链接库(6)制作映像)制作映像第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植9.4 下载目标文件下载目标文件 首先要通过目标板的首先要通过目标板的JTAG接口将接口将Bootloader映像下载到它的映像下载到它的分区中分区中 运行有运行有Bootloader的目标板一般都具有下载操作系统内的目标板一般都具有下载操作系统内核和根文件系统的能力。核和根文件系统的能力。 下载的命令为下载的命令为Load,说明如下:,说明如下: vivi load help Usage: load | 第第9章章 嵌入式嵌入式Linux操作系统移植操作系统移植

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(嵌入式Linux操作系统移植课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|