第6章-嵌入式Linux操作系统及应用-课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第6章-嵌入式Linux操作系统及应用-课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 操作系统 应用 课件
- 资源描述:
-
1、第6章 嵌入式Linux操作系统及应用 第6章 嵌入式Linux操作系统及应用 6.1 嵌入式嵌入式Linux操作系统概述操作系统概述6.2 嵌入式嵌入式Linux的常用命令的常用命令 6.3 嵌入式嵌入式Linux开发环境的构建开发环境的构建 6.4 嵌入式嵌入式Linux内核的移植内核的移植 6.5 嵌入式嵌入式CLinux及其应用及其应用 第6章 嵌入式Linux操作系统及应用 6.1 嵌入式嵌入式Linux操作系统概述操作系统概述6.1.1 常用嵌入式常用嵌入式Linux系统系统 1.RT-Linux 这是由墨西哥理工学院开发的嵌入式Linux操作系统。到目前为止,RT-Linux已经
2、成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等广泛领域。RT-Linux开发者并没有针对实时操作系统的特性而重写Linux的内核,因为这样做的工作量非常大,而且要保证兼容性也非常困难。为此,RT-Linux提出了精巧的内核,并把标准的Linux核心作为实时核心的一个进程,同用户的实时进程一起调度。这样对Linux的改动非常小,并且充分利用了Linux下现有的丰富的软件资源。第6章 嵌入式Linux操作系统及应用 2.CLinux CLinux是一种优秀的嵌入式Linux版本,是micro-Control-Linux的缩写。它继承了标准Linux的优良特性,经过各方面的小型
3、化改造,形成了一个高度优化的、代码紧凑的嵌入式Linux。CLinux主要是针对目标处理器没有存储管理单元MMU(Memory Management Unit)的嵌入式系统而设计的。虽然它的体积很小,却仍然保留了Linux的大多数的优点,如稳定、良好的移植性、优秀的网络功能、对各种文件系统完备的支持和标准丰富的API。CLinux专为嵌入式系统做了许多小型化的工作,目前已支持多款CPU。其编译后目标文件可控制在几百KB数量级,并已经被成功地移植到很多平台上。它是Lineo公司的主打产品,同时也是开放源代码的嵌入式Linux的典范。第6章 嵌入式Linux操作系统及应用 3.ARM-Linux
4、ARM-Linux是一个成功的Linux内核的组成部分,它是专门为基于ARM系列处理器而设计的。它是由Russell King在其他人的经验基础上主创出来的。ARM-Linux正在被全世界不同的组织和个人持续的完善和发展。目前,除了不含MMU的ARM7处理器外,其他的ARM9/XSCALE等ARM系列处理器都运行ARM-Linux。据不完全统计,ARM-Linux内核已经移植到500种以上的机器种类上,其中包括个人电脑、网络计算机、掌上设备和各种开发板。第6章 嵌入式Linux操作系统及应用 4.Redhat-Linux Redhat公司是全球最大的开源技术厂家,其产品Redhat Linux
5、也是全世界应用最广泛的Linux。Redhat公司总部位于美国北卡罗来纳州,在全球拥有22个分公司。它的产品市场占有率很高,约占Linux操作系统52%的市场份额。它也是Compaq、Dell、Intel等一流的IT企业的合作伙伴。现在Redhat已不自己开发桌面版的Linux操作系统。它最后推出的一款产品是Redhat Linux 9。Redhat把桌面版Linux操作系统产品交由Fedora社区开发。Fedora Core是由Redhat资助的合作项目产生的一款产品。因为Fedora Core最初就是在Redhat的基础上开发的,所以由Redhat和Fedora联手共同开发维护这个产品。第
6、6章 嵌入式Linux操作系统及应用 5.XLinux XLinux是由美国网虎公司推出的。美国网虎公司是全球性的Linux相关技术开发的领导厂商,成立于1998年9月,总部设在美国硅谷。公司致力于发展Linux的先进技术及实际应用(如Linux嵌入式系统在IA信息家电网领域中的应用),并将XLinux建立成为全球Linux的领导品牌。XLinux核心采用了“超字元集”专利技术,让Linux核心不仅可以与标准字符集相容,还涵盖了12个国家和地区的字符集。因此,XLinux在推广Linux的国际应用方面有独特的优势。最新版的XLinux OS 1.5是功能齐全且稳定性高的Linux操作系统,它不
7、仅提供友好、简单的使用界面,而且提供菜单和窗口对话框方式的系统配置和管理工具。另外,XLinux OS 1.5采用交互式的安装界面,只需要1530分钟就可以完成系统的安装。第6章 嵌入式Linux操作系统及应用 6.红旗嵌入式红旗嵌入式Linux 由北京中科院红旗软件公司推出的嵌入式Linux是国内做得较好的一款嵌入式操作系统。目前,中科院计算所自行开发的开放源码的嵌入式操作系统Easy Embedded OS(EEOS)也已经开始进入实用阶段了。该款嵌入式操作系统重点支持p-Java。系统目标一方面是小型化,另一方面是能实现Linux的驱动和其他模块。由于有中科院计算所的强大科研力量做后盾,
8、EEOS有望发展成为功能完善、稳定、可靠的国产嵌入式操作系统平台。第6章 嵌入式Linux操作系统及应用 6.1.2 嵌入式嵌入式Linux系统内核系统内核 嵌入式Linux系统需要三个基本要素:系统引导工具(用于机器加电后的系统定位引导)、Linux微内核(内存管理、程序管理)和初始化进程。但如果要让它成为完整的操作系统并且继续保持小型化,还必须加上硬件驱动程序、硬件接口程序和应用程序组。第6章 嵌入式Linux操作系统及应用 1.内核体系结构内核体系结构 Linux内核采用的是单一内核结构。这种内核结构的重要特征是模块化。模块化能有效实现许多良好的功能。每个模块都是一个目标文件,它的代码可
9、以在运行时被链接到内核。目标代码往往由函数集组成,该集合实现了文件系统、设备驱动器以及其他一些内核的上层特征。Linux对模块给予了强有力的支持,在各个模块之间规定了一些良好的界面,并且可以动态地装入和卸载内核中的部分代码。第6章 嵌入式Linux操作系统及应用 Linux的内核为非抢占式的。它不能通过改变优先权来影响当前的执行流程,因此,可以对Linux某些重要的数据结构进行修改而不加任何保护措施。Linux内核主要有下列功能:用软件接口抽象不同的硬件资源,以简化操作,屏蔽低层硬件的不同接口,即资源抽象;将抽象出来的各种资源分配给各个进程并负责取回这些系统资源,即资源分配;根据不同的资源类型
10、使用不同的机制保证资源被进程所独占,即资源共享。简而言之,Linux内核包含进程调度、内存管理、文件系统、进程间通信、网络及资源管理六部分。Linux内核的体系结构如图6.1所示。第6章 嵌入式Linux操作系统及应用 图6.1 Linux内核的体系结构 第6章 嵌入式Linux操作系统及应用 1)进程调度 进程调度控制CPU资源的分配。Linux内核采用给予优先级的抢占式多任务调度方式。在这种调度方式下,系统中运行的进程是所有可运行进程中优先级最高的那个。在嵌入式系统的应用中,有很多实时需求,所以有些用于嵌入式系统的Linux通过改变进程调度来实现实时调度。此类Linux内核中进程调度部分和
11、具体的硬件平台相关性不大,因为调度算法在所有硬件平台上的实现都是相同的。但是进程调度一般都是通过硬件的时钟中断来实现的,这一部分与具体硬件相关,另外在进程切换部分也和硬件平台相关,所以进程切换部分一般都用汇编语言实现。第6章 嵌入式Linux操作系统及应用 2)内存管理 标准Linux系统在具有MMU的硬件中支持虚拟内存,它使用硬件提供的分页机制。Linux的内存管理系统用于管理内存资源,它实现了进程之间的内存保护、内存共享以及内存管理功能。内存管理可分为硬件相关部分和硬件无关部分。其中硬件相关部分负责初始化内存、处理缺页中断、把硬件提供的分页机制抽象成三级页面映射;硬件无关部分提供内存分配、
12、内存映射等功能。有些嵌入式设备采用的CPU不具有MMU,在这种设备中,需要把Linux中的虚拟内存管理系统去掉。第6章 嵌入式Linux操作系统及应用 3)文件系统 Linux的文件系统结构与UNIX的类似,该系统具有虚拟文件系统(VFS)接口,所有真正的文件系统都挂接在虚拟文件系统下,通过虚拟文件系统接口来访问。由于使用了统一的接口,因此Linux可以支持多个文件系统,包括一些特殊的文件系统。第6章 嵌入式Linux操作系统及应用 Linux的文件系统可分为以下三个子系统:(1)虚拟文件系统(VFS)。VFS提供了所有文件以及设备的数据抽象,即给上层提供文件操作的接口。其接口函数包括文件的打
13、开、读、写、控制等。Linux操作系统的VFS仅仅存在于内存中,它在初始化完成之后,从逻辑文件系统的存储介质加载相应的逻辑文件系统到VFS中的某个路径,并读取该逻辑文件中的超级块以及索引节点,以建立统一的VFS索引节点。VFS是内核的一个子系统,其他系统只与VFS打交道,不与逻辑文件系统发生关系。对逻辑文件系统而言,VFS是管理者;对内核的其他子系统而言,VFS是它们与逻辑文件系统的接口。同时,VFS还给设备操作进程提供通信接口。在VFS中,采用超级块、索引节点等多级机制对文件进行查找、操作、管理。第6章 嵌入式Linux操作系统及应用 (2)逻辑文件系统。逻辑文件系统对应各种Linux支持的
14、文件系统,它实现了逻辑数据块与物理数据块之间的转换和映射以及缓冲区的管理。由于文件系统抽象的具体文件设备在不同的硬件环境中差别很大,因此需要逻辑文件系统来实现从逻辑块到物理块的分配。第6章 嵌入式Linux操作系统及应用 (3)设备管理部分。在设备管理部分,所有的设备按照外部数据与内存数据的交换方式分为块设备和字符设备。设备驱动程序可以通过块设备和字符设备所对应的文件索引节点号来实现对设备的访问。设备管理主要实现对驱动程序的管理。设备按照主设备号和从设备号来识别,相同主设备号代表一类设备,其操作访问方式相同,不同的从设备号代表相同种类的多个设备。设备驱动层按照标准的方式进行编译并且注册到系统中
15、后,就可以按照统一的界面被调用。文件系统是Linux的核心部分。在Linux系统中,许多概念和语义都与文件有关,如文件操作、设备读写、管道通信等。所以文件子系统给应用程序提供的页面非常重要。第6章 嵌入式Linux操作系统及应用 4)进程间通信(IPC)一般情况下,进程在自己的地址空间运行时不会互相干扰。但是有很多应用会要求在进程间传递信息,所以Linux也提供了UNIX中常用的进程间通信机制。主要的进程间通信方式有管道(Pipe)、文件锁、System VIPC、信号(Signal)及共享内存等。因为Linux支持网络,所以还可以使用网络接口进行进程间通信。Linux的进程间通信机制和硬件体
16、系无关,在大多数的平台上都支持同样的方式。第6章 嵌入式Linux操作系统及应用 5)网络 Linux是在互联网环境下产生的操作系统,所以它对网络具有良好的支持。Linux内核支持多种网络协议,如IP、IPV6、IPX、Apple talk及蓝牙等;支持路由、防火墙过滤等网络设备功能;并提供标准的BSD socket编程接口。Linux上有大量网络应用,所有常用的基于IP的应用在Linux世界里都可以以GPL方式获得。Linux的内核网络代码和硬件体系无关。第6章 嵌入式Linux操作系统及应用 6)资源管理 Linux中除了CPU和内存,其他资源都是用驱动程序的形式加以管理的,因此,其内核代
17、码的绝大部分是各种驱动程序,并且随着系统支持的硬件的增加,代码增加量最大的也是驱动程序。第6章 嵌入式Linux操作系统及应用 2.内核源码结构内核源码结构 Linux的内核源码结构类似于抽象结构,大体分为进程管理、内存管理、文件系统、驱动程序和网络5个部分。这种对应性是因为抽象结构来源于具体结构,它很接近源代码的目录结构。但是,这种划分没有严格依照源代码的目录结构,且与各子系统的分组也不完全匹配。下面以Linux 2.6.14为例介绍Linux的内核源码结构。Linux 2.6.14内核源码有440 MB之多,其目录组成如图6.2所示(这里假设Linux 2.6.14内核代码的存放位置为/u
18、sr/src/linux-2.6.14)。第6章 嵌入式Linux操作系统及应用 图6.2 Linux 2.6.14 内核文件结构 第6章 嵌入式Linux操作系统及应用 图6.2中各目录的意义和作用如下:(1)arch目录。arch目录包括所有与体系结构相关的核心代码。它包含24个子目录,每一个子目录都代表一种体系,如ARM就是关于ARM及与之相兼容体系结构的子目录。对于任何平台,arch目录必须包括以下子目录:boot:启动内核所使用的部分或全部平台特有的代码。kernel:存放支持体系结构特有的(如信号处理和AMP)特征的实现。lib:存放高速的体系结构特有的(如strlen和memcp
19、y)通用函数的实现。mm:存放体系结构特有的内存管理程序的实现。math-emu:模拟FPU的代码。第6章 嵌入式Linux操作系统及应用 (2)include目录。include目录包括编译核心所需要的大部分头文件。与平台无关的头文件在include/linux子目录下;与平台相关的头文件放在include目录下文件名以asm开头的子目录中。例如,与i386相关的头文件放在include/asm-i386子目录下。(3)init目录。init目录包含核心的初始化代码(不是系统的引导代码),包含main.c和version.c两个文件,是研究核心如何工作的一个比较好的起点。(4)mm目录。mm
20、目录包括所有独立于CPU体系结构的内存管理代码,如页式存储管理内存的分配和释放等(与体系结构相关的内存管理代码位于arch/*/mm/,如arch/i386/mm/Fault.c)。第6章 嵌入式Linux操作系统及应用 (5)kernel目录。kernel目录为系统主要的核心代码,该目录下的文件包含了大多数Linux系统的内存函数,其中最重要的文件当属sched.c。(6)drivers目录。drivers目录放置系统所有的设备驱动程序,每种驱动程序又各占一个子目录,如/block下为块设备驱动程序。(7)lib目录。lib目录放置核心的库代码及一些与平台无关的通用函数,如strlen和me
21、mcpy等函数。(8)net目录。net目录是系统的网络部分代码,其中每个子目录对应网络的一个方面。第6章 嵌入式Linux操作系统及应用 (9)ipc目录。ipc目录包含核心的进程间通信的代码,包括util.c、sem.c和msg.c等。(10)fs目录。fs目录包括所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录都支持一个文件系统,如fat和ext2。(11)scripts目录。scripts目录包含用于对核心进行配置的脚本文件。第6章 嵌入式Linux操作系统及应用 6.1.3 嵌入式嵌入式Linux的文件系统的文件系统 1)嵌入式Linux文件系统原理 Linux下的文件系
22、统主要可分为三个层次:一是上层用户空间的应用程序对文件系统的系统调用;二是虚拟文件系统VFS(Virtual Filesystem Switch);三是挂载到VFS中的各种实际文件系统。嵌入式Linux系统中文件系统的体系架构如图6.3所示。第6章 嵌入式Linux操作系统及应用 图6.3 嵌入式Linux文件系统体系架构 第6章 嵌入式Linux操作系统及应用 图6.3 嵌入式Linux文件系统体系架构 用户空间包含一些应用程序(如文件系统的使用者)和GNU C库(glibc),用来为文件系统调用(打开,读取,写和关闭)用户接口。系统调用接口的作用就像是交换器,它将系统调用从用户空间发送到内
23、核空间中的适当端点。系统调用实际上是通过调用内核虚拟文件系统提供的统一接口来完成对各种设备的使用。第6章 嵌入式Linux操作系统及应用 VFS(虚拟文件系统)就是把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分。它位于用户程序和具体的文件系统之间。它为用户程序提供了标准的文件系统调用接口,对具体的文件系统,它通过一系列的系统公用的函数指针来实际调用具体的文件系统函数,完成实际的有差异的操作。任何使用文件系统的程序必须经过这层接口来使用它。通过这样的方式,VFS就对用户屏蔽了底层文件系统的实现细节和差异。第6章 嵌入式Linux操作系统及应用 虚拟文件系统提供了很好的
24、通用接口,使系统屏蔽了不同文件系统对于应用程序的差异。各种具体的操作由具体的文件系统按照各自的方式自己实现,如Yaffs文件系统、JFFS等文件系统都有自己的实现方式,但这些文件系统都导出一组通用接口,供VFS使用。这种想法类似于面向对象中的多态:系统将不同的文件系统封存起来,向用户提供统一的接口。相同功能的函数被不同的文件系统重载,完成各自需要的操作。这使得添加新的文件系统也很容易,提高了Linux系统的可扩展性和兼容性。虚拟文件系统的使用体现了Linux文件系统的一大特点,即支持各种不同的文件系统。目前已经稳定支持的文件系统包括ext、ext2、ext3、vfat、iso9660、proc
25、、NFS、JFFS、JFFS2、SMB和ReisterFS等。第6章 嵌入式Linux操作系统及应用 2)主要嵌入式文件系统介绍 嵌入式文件系统和基本的Linux文件系统原理是一样的,只是嵌入式文件系统针对嵌入式应用加入了一些特别的处理。由于Flash存储介质的读写特点,传统的Linux文件系统已经不适合应用在嵌入式系统中,如ext2文件系统是为像IDE那样的块设备设计的,这些设备的逻辑块是512 KB、1024 KB等大小,没有提供很好的扇区擦写支持,不支持损耗平衡,没有掉电保护,也没有特别完美的扇区管理,这不太适合于因设备类型而划分扇区大小的内存设备。基于这样的原因,产生了很多专为Flas
展开阅读全文