嵌入式Linux操作系统移植课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《嵌入式Linux操作系统移植课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 操作系统 移植 课件
- 资源描述:
-
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目录目录第第
展开阅读全文