第6章嵌入式Linux操作系统及应用ppt课件

上传人:txadgkn****dgknqu... 文档编号:241849736 上传时间:2024-07-30 格式:PPT 页数:177 大小:1.59MB
返回 下载 相关 举报
第6章嵌入式Linux操作系统及应用ppt课件_第1页
第1页 / 共177页
第6章嵌入式Linux操作系统及应用ppt课件_第2页
第2页 / 共177页
第6章嵌入式Linux操作系统及应用ppt课件_第3页
第3页 / 共177页
点击查看更多>>
资源描述
第6章 嵌入式Linux操作系统及应用 第6章 嵌入式Linux操作系统及应用 6.1 嵌入式嵌入式Linux操作系统概述操作系统概述6.2 嵌入式嵌入式Linux的常用命令的常用命令 6.3 嵌入式嵌入式Linux开发环境的构建开发环境的构建 6.4 嵌入式嵌入式Linux内核的移植内核的移植 6.5 嵌入式嵌入式CLinux及其应用及其应用 第6章 嵌入式Linux操作系统及应用 6.1 嵌入式L第6章 嵌入式Linux操作系统及应用 6.1 嵌入式嵌入式Linux操作系统概述操作系统概述6.1.1 常用嵌入式常用嵌入式Linux系统系统 1.RT-Linux 这是由墨西哥理工学院开发的嵌入式Linux操作系统。到目前为止,RT-Linux已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等广泛领域。RT-Linux开发者并没有针对实时操作系统的特性而重写Linux的内核,因为这样做的工作量非常大,而且要保证兼容性也非常困难。为此,RT-Linux提出了精巧的内核,并把标准的Linux核心作为实时核心的一个进程,同用户的实时进程一起调度。这样对Linux的改动非常小,并且充分利用了Linux下现有的丰富的软件资源。6.1 嵌入式Linux操作系统概述6.1.1第6章 嵌入式Linux操作系统及应用 2.CLinux CLinux是一种优秀的嵌入式Linux版本,是micro-Control-Linux的缩写。它继承了标准Linux的优良特性,经过各方面的小型化改造,形成了一个高度优化的、代码紧凑的嵌入式Linux。CLinux主要是针对目标处理器没有存储管理单元MMU(Memory Management Unit)的嵌入式系统而设计的。虽然它的体积很小,却仍然保留了Linux的大多数的优点,如稳定、良好的移植性、优秀的网络功能、对各种文件系统完备的支持和标准丰富的API。CLinux专为嵌入式系统做了许多小型化的工作,目前已支持多款CPU。其编译后目标文件可控制在几百KB数量级,并已经被成功地移植到很多平台上。它是Lineo公司的主打产品,同时也是开放源代码的嵌入式Linux的典范。2.CLinux 第6章 嵌入式Linux操作系统及应用 3.ARM-Linux ARM-Linux是一个成功的Linux内核的组成部分,它是专门为基于ARM系列处理器而设计的。它是由Russell King在其他人的经验基础上主创出来的。ARM-Linux正在被全世界不同的组织和个人持续的完善和发展。目前,除了不含MMU的ARM7处理器外,其他的ARM9/XSCALE等ARM系列处理器都运行ARM-Linux。据不完全统计,ARM-Linux内核已经移植到500种以上的机器种类上,其中包括个人电脑、网络计算机、掌上设备和各种开发板。3.ARM-Linux 第6章 嵌入式Linux操作系统及应用 4.Redhat-Linux Redhat公司是全球最大的开源技术厂家,其产品Redhat Linux也是全世界应用最广泛的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联手共同开发维护这个产品。4.Redhat-Linux Red第6章 嵌入式Linux操作系统及应用 5.XLinux XLinux是由美国网虎公司推出的。美国网虎公司是全球性的Linux相关技术开发的领导厂商,成立于1998年9月,总部设在美国硅谷。公司致力于发展Linux的先进技术及实际应用(如Linux嵌入式系统在IA信息家电网领域中的应用),并将XLinux建立成为全球Linux的领导品牌。XLinux核心采用了“超字元集”专利技术,让Linux核心不仅可以与标准字符集相容,还涵盖了12个国家和地区的字符集。因此,XLinux在推广Linux的国际应用方面有独特的优势。最新版的XLinux OS 1.5是功能齐全且稳定性高的Linux操作系统,它不仅提供友好、简单的使用界面,而且提供菜单和窗口对话框方式的系统配置和管理工具。另外,XLinux OS 1.5采用交互式的安装界面,只需要1530分钟就可以完成系统的安装。5.XLinux XLinux是由美第6章 嵌入式Linux操作系统及应用 6.红旗嵌入式红旗嵌入式Linux 由北京中科院红旗软件公司推出的嵌入式Linux是国内做得较好的一款嵌入式操作系统。目前,中科院计算所自行开发的开放源码的嵌入式操作系统Easy Embedded OS(EEOS)也已经开始进入实用阶段了。该款嵌入式操作系统重点支持p-Java。系统目标一方面是小型化,另一方面是能实现Linux的驱动和其他模块。由于有中科院计算所的强大科研力量做后盾,EEOS有望发展成为功能完善、稳定、可靠的国产嵌入式操作系统平台。6.红旗嵌入式Linux 由北京中科院第6章 嵌入式Linux操作系统及应用 6.1.2 嵌入式嵌入式Linux系统内核系统内核 嵌入式Linux系统需要三个基本要素:系统引导工具(用于机器加电后的系统定位引导)、Linux微内核(内存管理、程序管理)和初始化进程。但如果要让它成为完整的操作系统并且继续保持小型化,还必须加上硬件驱动程序、硬件接口程序和应用程序组。6.1.2 嵌入式Linux系统内核 嵌入式Li第6章 嵌入式Linux操作系统及应用 1.内核体系结构内核体系结构 Linux内核采用的是单一内核结构。这种内核结构的重要特征是模块化。模块化能有效实现许多良好的功能。每个模块都是一个目标文件,它的代码可以在运行时被链接到内核。目标代码往往由函数集组成,该集合实现了文件系统、设备驱动器以及其他一些内核的上层特征。Linux对模块给予了强有力的支持,在各个模块之间规定了一些良好的界面,并且可以动态地装入和卸载内核中的部分代码。1.内核体系结构 Linux内核采用的第6章 嵌入式Linux操作系统及应用 Linux的内核为非抢占式的。它不能通过改变优先权来影响当前的执行流程,因此,可以对Linux某些重要的数据结构进行修改而不加任何保护措施。Linux内核主要有下列功能:用软件接口抽象不同的硬件资源,以简化操作,屏蔽低层硬件的不同接口,即资源抽象;将抽象出来的各种资源分配给各个进程并负责取回这些系统资源,即资源分配;根据不同的资源类型使用不同的机制保证资源被进程所独占,即资源共享。简而言之,Linux内核包含进程调度、内存管理、文件系统、进程间通信、网络及资源管理六部分。Linux内核的体系结构如图6.1所示。Linux的内核为非抢占式的。它不能通过改变优先权第6章 嵌入式Linux操作系统及应用 图6.1 Linux内核的体系结构 图6.1 Linux内核的体系结构 第6章 嵌入式Linux操作系统及应用 1)进程调度 进程调度控制CPU资源的分配。Linux内核采用给予优先级的抢占式多任务调度方式。在这种调度方式下,系统中运行的进程是所有可运行进程中优先级最高的那个。在嵌入式系统的应用中,有很多实时需求,所以有些用于嵌入式系统的Linux通过改变进程调度来实现实时调度。此类Linux内核中进程调度部分和具体的硬件平台相关性不大,因为调度算法在所有硬件平台上的实现都是相同的。但是进程调度一般都是通过硬件的时钟中断来实现的,这一部分与具体硬件相关,另外在进程切换部分也和硬件平台相关,所以进程切换部分一般都用汇编语言实现。1)进程调度 进程调度控制CPU资源的第6章 嵌入式Linux操作系统及应用 2)内存管理 标准Linux系统在具有MMU的硬件中支持虚拟内存,它使用硬件提供的分页机制。Linux的内存管理系统用于管理内存资源,它实现了进程之间的内存保护、内存共享以及内存管理功能。内存管理可分为硬件相关部分和硬件无关部分。其中硬件相关部分负责初始化内存、处理缺页中断、把硬件提供的分页机制抽象成三级页面映射;硬件无关部分提供内存分配、内存映射等功能。有些嵌入式设备采用的CPU不具有MMU,在这种设备中,需要把Linux中的虚拟内存管理系统去掉。2)内存管理 标准Linux系统在具有第6章 嵌入式Linux操作系统及应用 3)文件系统 Linux的文件系统结构与UNIX的类似,该系统具有虚拟文件系统(VFS)接口,所有真正的文件系统都挂接在虚拟文件系统下,通过虚拟文件系统接口来访问。由于使用了统一的接口,因此Linux可以支持多个文件系统,包括一些特殊的文件系统。3)文件系统 Linux的文件系统结构第6章 嵌入式Linux操作系统及应用 Linux的文件系统可分为以下三个子系统:(1)虚拟文件系统(VFS)。VFS提供了所有文件以及设备的数据抽象,即给上层提供文件操作的接口。其接口函数包括文件的打开、读、写、控制等。Linux操作系统的VFS仅仅存在于内存中,它在初始化完成之后,从逻辑文件系统的存储介质加载相应的逻辑文件系统到VFS中的某个路径,并读取该逻辑文件中的超级块以及索引节点,以建立统一的VFS索引节点。VFS是内核的一个子系统,其他系统只与VFS打交道,不与逻辑文件系统发生关系。对逻辑文件系统而言,VFS是管理者;对内核的其他子系统而言,VFS是它们与逻辑文件系统的接口。同时,VFS还给设备操作进程提供通信接口。在VFS中,采用超级块、索引节点等多级机制对文件进行查找、操作、管理。Linux的文件系统可分为以下三个子系统:第6章 嵌入式Linux操作系统及应用 (2)逻辑文件系统。逻辑文件系统对应各种Linux支持的文件系统,它实现了逻辑数据块与物理数据块之间的转换和映射以及缓冲区的管理。由于文件系统抽象的具体文件设备在不同的硬件环境中差别很大,因此需要逻辑文件系统来实现从逻辑块到物理块的分配。(2)逻辑文件系统。逻辑文件系统对应各种Linu第6章 嵌入式Linux操作系统及应用 (3)设备管理部分。在设备管理部分,所有的设备按照外部数据与内存数据的交换方式分为块设备和字符设备。设备驱动程序可以通过块设备和字符设备所对应的文件索引节点号来实现对设备的访问。设备管理主要实现对驱动程序的管理。设备按照主设备号和从设备号来识别,相同主设备号代表一类设备,其操作访问方式相同,不同的从设备号代表相同种类的多个设备。设备驱动层按照标准的方式进行编译并且注册到系统中后,就可以按照统一的界面被调用。文件系统是Linux的核心部分。在Linux系统中,许多概念和语义都与文件有关,如文件操作、设备读写、管道通信等。所以文件子系统给应用程序提供的页面非常重要。(3)设备管理部分。在设备管理部分,所有的设备按照第6章 嵌入式Linux操作系统及应用 4)进程间通信(IPC)一般情况下,进程在自己的地址空间运行时不会互相干扰。但是有很多应用会要求在进程间传递信息,所以Linux也提供了UNIX中常用的进程间通信机制。主要的进程间通信方式有管道(Pipe)、文件锁、System VIPC、信号(Signal)及共享内存等。因为Linux支持网络,所以还可以使用网络接口进行进程间通信。Linux的进程间通信机制和硬件体系无关,在大多数的平台上都支持同样的方式。4)进程间通信(IPC)一般情况下,第6章 嵌入式Linux操作系统及应用 5)网络 Linux是在互联网环境下产生的操作系统,所以它对网络具有良好的支持。Linux内核支持多种网络协议,如IP、IPV6、IPX、Apple talk及蓝牙等;支持路由、防火墙过滤等网络设备功能;并提供标准的BSD socket编程接口。Linux上有大量网络应用,所有常用的基于IP的应用在Linux世界里都可以以GPL方式获得。Linux的内核网络代码和硬件体系无关。5)网络 Linux是在互联网环境下产第6章 嵌入式Linux操作系统及应用 6)资源管理 Linux中除了CPU和内存,其他资源都是用驱动程序的形式加以管理的,因此,其内核代码的绝大部分是各种驱动程序,并且随着系统支持的硬件的增加,代码增加量最大的也是驱动程序。6)资源管理 Linux中除了CPU和第6章 嵌入式Linux操作系统及应用 2.内核源码结构内核源码结构 Linux的内核源码结构类似于抽象结构,大体分为进程管理、内存管理、文件系统、驱动程序和网络5个部分。这种对应性是因为抽象结构来源于具体结构,它很接近源代码的目录结构。但是,这种划分没有严格依照源代码的目录结构,且与各子系统的分组也不完全匹配。下面以Linux 2.6.14为例介绍Linux的内核源码结构。Linux 2.6.14内核源码有440 MB之多,其目录组成如图6.2所示(这里假设Linux 2.6.14内核代码的存放位置为/usr/src/linux-2.6.14)。2.内核源码结构 Linux的内核源码第6章 嵌入式Linux操作系统及应用 图6.2 Linux 2.6.14 内核文件结构 图6.2 Linux 2.6.14 内核文件结构 第6章 嵌入式Linux操作系统及应用 图6.2中各目录的意义和作用如下:(1)arch目录。arch目录包括所有与体系结构相关的核心代码。它包含24个子目录,每一个子目录都代表一种体系,如ARM就是关于ARM及与之相兼容体系结构的子目录。对于任何平台,arch目录必须包括以下子目录:boot:启动内核所使用的部分或全部平台特有的代码。kernel:存放支持体系结构特有的(如信号处理和AMP)特征的实现。lib:存放高速的体系结构特有的(如strlen和memcpy)通用函数的实现。mm:存放体系结构特有的内存管理程序的实现。math-emu:模拟FPU的代码。图6.2中各目录的意义和作用如下:(1第6章 嵌入式Linux操作系统及应用 (2)include目录。include目录包括编译核心所需要的大部分头文件。与平台无关的头文件在include/linux子目录下;与平台相关的头文件放在include目录下文件名以asm开头的子目录中。例如,与i386相关的头文件放在include/asm-i386子目录下。(3)init目录。init目录包含核心的初始化代码(不是系统的引导代码),包含main.c和version.c两个文件,是研究核心如何工作的一个比较好的起点。(4)mm目录。mm目录包括所有独立于CPU体系结构的内存管理代码,如页式存储管理内存的分配和释放等(与体系结构相关的内存管理代码位于arch/*/mm/,如arch/i386/mm/Fault.c)。(2)include目录。include目录包第6章 嵌入式Linux操作系统及应用 (5)kernel目录。kernel目录为系统主要的核心代码,该目录下的文件包含了大多数Linux系统的内存函数,其中最重要的文件当属sched.c。(6)drivers目录。drivers目录放置系统所有的设备驱动程序,每种驱动程序又各占一个子目录,如/block下为块设备驱动程序。(7)lib目录。lib目录放置核心的库代码及一些与平台无关的通用函数,如strlen和memcpy等函数。(8)net目录。net目录是系统的网络部分代码,其中每个子目录对应网络的一个方面。(5)kernel目录。kernel目录为系统第6章 嵌入式Linux操作系统及应用 (9)ipc目录。ipc目录包含核心的进程间通信的代码,包括util.c、sem.c和msg.c等。(10)fs目录。fs目录包括所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录都支持一个文件系统,如fat和ext2。(11)scripts目录。scripts目录包含用于对核心进行配置的脚本文件。(9)ipc目录。ipc目录包含核心的进程间通第6章 嵌入式Linux操作系统及应用 6.1.3 嵌入式嵌入式Linux的文件系统的文件系统 1)嵌入式Linux文件系统原理 Linux下的文件系统主要可分为三个层次:一是上层用户空间的应用程序对文件系统的系统调用;二是虚拟文件系统VFS(Virtual Filesystem Switch);三是挂载到VFS中的各种实际文件系统。嵌入式Linux系统中文件系统的体系架构如图6.3所示。6.1.3 嵌入式Linux的文件系统 1)嵌第6章 嵌入式Linux操作系统及应用 图6.3 嵌入式Linux文件系统体系架构 图6.3 嵌入式Linux文件系统体系架构 第6章 嵌入式Linux操作系统及应用 图6.3 嵌入式Linux文件系统体系架构 用户空间包含一些应用程序(如文件系统的使用者)和GNU C库(glibc),用来为文件系统调用(打开,读取,写和关闭)用户接口。系统调用接口的作用就像是交换器,它将系统调用从用户空间发送到内核空间中的适当端点。系统调用实际上是通过调用内核虚拟文件系统提供的统一接口来完成对各种设备的使用。图6.3 嵌入式Linux文件系统体系架构第6章 嵌入式Linux操作系统及应用 VFS(虚拟文件系统)就是把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分。它位于用户程序和具体的文件系统之间。它为用户程序提供了标准的文件系统调用接口,对具体的文件系统,它通过一系列的系统公用的函数指针来实际调用具体的文件系统函数,完成实际的有差异的操作。任何使用文件系统的程序必须经过这层接口来使用它。通过这样的方式,VFS就对用户屏蔽了底层文件系统的实现细节和差异。VFS(虚拟文件系统)就是把各种具体的文件系统的公第6章 嵌入式Linux操作系统及应用 虚拟文件系统提供了很好的通用接口,使系统屏蔽了不同文件系统对于应用程序的差异。各种具体的操作由具体的文件系统按照各自的方式自己实现,如Yaffs文件系统、JFFS等文件系统都有自己的实现方式,但这些文件系统都导出一组通用接口,供VFS使用。这种想法类似于面向对象中的多态:系统将不同的文件系统封存起来,向用户提供统一的接口。相同功能的函数被不同的文件系统重载,完成各自需要的操作。这使得添加新的文件系统也很容易,提高了Linux系统的可扩展性和兼容性。虚拟文件系统的使用体现了Linux文件系统的一大特点,即支持各种不同的文件系统。目前已经稳定支持的文件系统包括ext、ext2、ext3、vfat、iso9660、proc、NFS、JFFS、JFFS2、SMB和ReisterFS等。虚拟文件系统提供了很好的通用接口,使系统屏蔽了不同第6章 嵌入式Linux操作系统及应用 2)主要嵌入式文件系统介绍 嵌入式文件系统和基本的Linux文件系统原理是一样的,只是嵌入式文件系统针对嵌入式应用加入了一些特别的处理。由于Flash存储介质的读写特点,传统的Linux文件系统已经不适合应用在嵌入式系统中,如ext2文件系统是为像IDE那样的块设备设计的,这些设备的逻辑块是512 KB、1024 KB等大小,没有提供很好的扇区擦写支持,不支持损耗平衡,没有掉电保护,也没有特别完美的扇区管理,这不太适合于因设备类型而划分扇区大小的内存设备。基于这样的原因,产生了很多专为Flash设备而设计的文件系统,常见的专用于闪存设备的文件系统如下:2)主要嵌入式文件系统介绍 嵌入式文件第6章 嵌入式Linux操作系统及应用 (1)Romfs。传统型的Romfs文件系统是最常用的一种文件系统,它是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存。它按顺序存放所有的文件数据,所以这种文件系统格式支持应用程序以XIP方式运行,在系统运行时,可以获得可观的RAM节省空间。CLinux系统通常采用Romfs文件系统。(1)Romfs。传统型的Romfs文件系统是第6章 嵌入式Linux操作系统及应用 (2)Cramfs。Cramfs是Linux的创始人Linux Torvalds开发的一种可压缩只读文件系统。在Cramfs文件系统中,每一页被单独压缩,可以随机访问,其压缩比高达21,为嵌入式系统节省了大量的Flash存储空间。Cramfs文件系统以压缩方式存储,在运行时解压缩,所以不支持应用程序以XIP方式运行,所有的应用程序都要求被复制到RAM中运行,但这并不代表它比Ramfs需求的RAM空间要大,因为Cramfs采用分页压缩的方式存放档案,在读取档案时,不会耗用过多的内存空间,只会针对目前实际读取的部分分配内存,对尚没有读取的部分不分配内存空间,当读取的文件不在内存中时,Cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。(2)Cramfs。Cramfs是Linux的创第6章 嵌入式Linux操作系统及应用 另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。但是它的只读属性同时又是它的一大缺陷,使得用户无法对其内容进行扩充。Cramfs镜像文件通常是放在Flash中,但是也能放在别的文件系统里,使用loopback设备可以把它安装到别的文件系统里。使用mkCramfs工具可以创建Cramfs镜像文件。另外,它的速度快,效率高,其只读的特点有利于保护文件第6章 嵌入式Linux操作系统及应用 (3)Ramfs/Tmpfs。Ramfs也是Linux Torvalds开发的,Ramfs文件系统把所有的文件都放在RAM里运行,通常用来存储一些临时性或经常要修改的数据。相对于ramdisk来说,Ramfs的大小可以随着所含文件内容的大小变化,不像ramdisk的大小是固定的。Tmpfs是基于内存的文件系统,因为Tmpfs驻留在RAM中,所以写/读操作发生在RAM中。Tmpfs文件系统大小可随所含文件内容的大小变化,使其能够最理想地使用内存。Tmpfs驻留在RAM中,所以读和写几乎都是瞬时的。Tmpfs的一个缺点是当系统重新引导时会丢失所有数据。(3)Ramfs/Tmpfs。Ramfs也是L第6章 嵌入式Linux操作系统及应用 (4)JFFS2。JFFS2是Redhat公司基于JFFS开发的闪存文件系统,最初是针对Redhat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux和CLinux中。JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2是一个可读写、可压缩的日志型文件系统,并提供了崩溃/掉电安全保护,克服了JFFS的一些缺点,使用了基于哈希表的日志节点结构,大大加快了对节点的操作速度,支持数据压缩,提供了“写平衡”支持,支持多种节点类型,提高了对闪存的利用率,降低了内存的消耗。这些特点使JFFS2文件系统成为目前Flash设备上最流行的文件系统格式,它的缺点是当文件系统已满或接近满时,JFFS2运行会变慢,这主要是因为碎片收集的问题。(4)JFFS2。JFFS2是Redhat公司第6章 嵌入式Linux操作系统及应用 (5)Yaffs。Yaffs/Yaffs2是一种JFFSx类似的闪存文件系统,它是专为嵌入式系统使用Nand型闪存而设计的一种日志型文件。与JFFS2相比,它减少一些功能,所以速度更快,而且内存的占用比更小。此外,Yaffs自带Nand芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux系统中的MTD与VFS,直接对文件系统操作。Yaffs2支持大页面的Nand设备,并且对大页面的Nand设备做了优化。Yaffs2在闪存上表现并不稳定,更适合Nor闪存,Yaffs是更好的选择。在具体的嵌入式系统设计中,可根据不同目录存放的不同内容,以及存放的文件属性确定使用何种文件系统。(5)Yaffs。Yaffs/Yaffs2是一第6章 嵌入式Linux操作系统及应用 6.1.4 嵌入式嵌入式Linux的开发步骤的开发步骤 嵌入式系统通常为一个资源受限的系统。直接在嵌入式系统的硬件平台上编写软件比较困难,有时甚至是不可能的。目前,一般采用的办法是:先在通用计算机上编写程序;然后,通过交叉编译生成目标平台上可运行的二进制代码格式;最后下载到目标平台上的特定位置上运行。对于使用Linux操作系统进行嵌入式开发来说,一般步骤如下:6.1.4 嵌入式Linux的开发步骤 嵌入式系第6章 嵌入式Linux操作系统及应用 (1)建立嵌入式Linux交叉开发环境。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境。它与运行嵌入式应用软件的环境有所不同,常采用宿主机/目标机模式。目前,常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链,目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross complier、WindRiver Tornado和Microsoft Embedded Visual C等。(1)建立嵌入式Linux交叉开发环境。交叉开发第6章 嵌入式Linux操作系统及应用 (2)交叉编译和链接。在完成嵌入式软件的编码之后,就是进行编译和链接,以生成可执行代码。由于开发过程大多是在Intel公司的x86系列CPU通用计算机上进行的,而且目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。例如,在基于ARM体系结构的gcc交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉编译器和链接器,如对于M68K体系结构的gcc交叉开发环境而言,就对应于多种交叉编译器和链接器。如果使用的是COFF格式的可执行文件,那么在编译Linux内核时,需要使用m68k-coff-gcc和m68k-coff-ld,而在编译应用程序时则需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。编写好的嵌入式软件经过交叉编译和交叉链接后,通常会生成用于调试的可执行文件和用于固化的可执行文件两种类型。(2)交叉编译和链接。在完成嵌入式软件的编码之后第6章 嵌入式Linux操作系统及应用 (3)交叉调试。交叉调试就是通过在线仿真器对产品进行软硬件调试。硬件调试:如果不采用在线仿真器,可以让CPU直接在其内部实现调试功能,并通过在开发板上引用的调试端口,发送调试命令和接受调试信息,完成调试过程。目前,ARM公司提供的开发板上使用的则是JTAG调试端口。使用合适的软件工具与这些调试端口进行连接,可以获得与ICE类似的调试效果。软件调试:在嵌入式Linux系统中,Linux系统内核调试,可以先在Linux内核中设置一个调试桩(debug stub),用做调试过程中与宿主机之间的通信服务器。而后可在宿主机中通过调试器的串口与调试桩进行通信,并通过调试器控制目标机上Linux内核的运行。(3)交叉调试。交叉调试就是通过在线仿真器对产品第6章 嵌入式Linux操作系统及应用 嵌入式上层应用软件的调试可以使用本地调试和远程调试两种方法。如果采用的是本地调试,首先要将所需的调试器移植到目标系统中,然后就可以直接在目标机上运行调试器来调试应用程序了;如果采用的是远程调试,则需要移植一个调试服务器到目标系统中,并通过它与宿主机上的调试器共同完成应用程序的调试。在嵌入式Linux系统的开发中,远程调试时目标机上使用的调试服务器通常是gdbserver,而宿主机上使用的调试器则是gdb。两者相互配合共同完成调试过程。嵌入式上层应用软件的调试可以使用本地调试和远程调试第6章 嵌入式Linux操作系统及应用 (4)系统测试。在整个软件系统编译的过程中,嵌入式系统的硬件一般采用专门的测试仪器进行测试,而软件则需要有相关的测试技术和测试工具的支持,并要采用特定的测试策略。测试技术指的是软件测试的专门途径,以及能够更加有效地运用这些途径的特定方法。在嵌入式软件测试中,常常要在基于目标机的测试和基于宿主机的测试之间做出折中。基于目标机的测试需要消耗较多的时间和经费,而基于宿主机的测试虽然代价较小,但毕竟是在仿真环境中进行的,因此难以完全反映软件运行的实际情况。这两种环境下的测试可以发现不同的软件缺陷,关键是要对目标机环境和宿主机环境下的测试内容进行合理取舍。嵌入式软件测试中经常用到的测试工具主要有内存分析工具、性能分析工具、覆盖分析工具和缺陷跟踪工具等。(4)系统测试。在整个软件系统编译的过程中,嵌入式第6章 嵌入式Linux操作系统及应用 6.2 嵌入式嵌入式Linux的常用命令的常用命令 在Linux操作系统中,所有事物都被当做文件来处理:硬件设备(包括键盘和终端)、目录、命令和文件。不论是什么版本的Linux,它们的命令都是通用的,大多数的Linux的命令格式为:command option source files(s)target file。Linux的命令是区分大小的。图6.4是Redhat-Linux的终端操作示意图。6.2 嵌入式Linux的常用命令 第6章 嵌入式Linux操作系统及应用 图6.4 Redhat-Linux的终端操作示意图 图6.4 Redhat-Linux的终端操作示意图 第6章 嵌入式Linux操作系统及应用 6.2.1 登录与退出命令登录与退出命令 1.登录系统登录系统 要登录Linux,必须输入用户的账号。在系统安装过程中可以创建以下两种账号:root:超级用户账号(系统管理员),用这个账号可以在系统中做任何事情。普通用户:这个账号供普通用户使用,只能进行有限的操作。6.2.1 登录与退出命令 1.登录系统第6章 嵌入式Linux操作系统及应用 用户登录分两步:输入用户的登录名。系统根据该登录名识别用户。输入用户的口令。该口令是用户自己设置的一个字符串。当用户正确地输入用户名和口令后,就能合法地进入系统。屏幕显示:rootlocalhost/root#,这时就可以对系统进行各种各样的操作了。注意:超级用户的提示符是“#”,其他用户的提示符是“$”。用户登录分两步:输入用户的登录名。系统根据该登第6章 嵌入式Linux操作系统及应用 2.修改口令修改口令 为了更好地保护用户账号的安全,Linux允许用户随时修改自己的口令。修改口令的命令是Password。输入Password命令后,将提示用户输入旧口令和新口令,之后还要求用户再次确认新口令。如果用户忘记了口令,可以向系统管理员申请为自己重新设置。2.修改口令 为了更好地保护用户账号的第6章 嵌入式Linux操作系统及应用 3.虚拟控制台虚拟控制台 Linux是一个真正的多用户操作系统,可以同时接受多个用户登录。Linux允许一个用户进行多次登录,这是因为Linux和UNIX一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台进行多次登录。虚拟控制台的选择是可以通过按Alt键和一个功能键来实现的,通常使用功能键F1F6。例如,用户登录后,按下Alt+F2键就可以看到“Login”提示符,说明用户看到了第二个虚拟控制台,再次按Alt+F1键,就可以回到第一个虚拟台。新安装的Linux系统默认允许用户使用Alt+F6键来访问前六个虚拟控制台。虚拟控制台可以使用户同时在多个控制台上工作,真正体现Linux系统多用户的特性,用户可以在某一虚拟台上进行的工作尚未结束时,切换到另一虚拟控制台开始另一项工作。3.虚拟控制台 Linux是一个真正的第6章 嵌入式Linux操作系统及应用 4.退出系统退出系统 无论超级用户还是普通用户,需要退出系统时,应在 Shell提示符下键入exit命令。4.退出系统 无论超级用户还是普通用户第6章 嵌入式Linux操作系统及应用 6.2.2 文件操作命令文件操作命令 1.CP命令命令 功能:将给出的文件或目录复制到另一个文件或目录下。语法:cp 选项 源文件或目录 目标文件或目录。说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。各选项的含义:-a:该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用相当于dpR选项的组合。-d:拷贝时保留链接。-f:删除已经存在的目标文件而不提示。6.2.2 文件操作命令 1.CP命令第6章 嵌入式Linux操作系统及应用-i:和f选项相反,在覆盖目标文件之前将给出提示要求用户确认,回答y时目标文件将被覆盖,是交互式拷贝。-p:此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。-r:若给出的源文件是目录文件,此时cp将递归复制该目录下的所有子目录和文件。此时目标文件必须为一个目录名。-l:不复制,只是链接文件。-i:和f选项相反,在覆盖目标文件之前将给出提示要求用户第6章 嵌入式Linux操作系统及应用 举例:stul ghost stul$cp/etc/fstab/fstab1,执行该命令后,将把/etc目录下的文件fstab复制到用户stul的个人主目录/home/stul下,复制后得文件名为fstab1。注意:为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令复制文件后,这个文件就会被源新文件覆盖。建议使用cp命令复制文件时,最好使用i选项。举例:stul ghost stul$c第6章 嵌入式Linux操作系统及应用 2.mv命令命令 功能:为文件或目录改名,或将文件由一个目录移入另一个目录中。语法:mv 选项 源文件或目录 目标文件或目录。说明:根据mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以使源目录名),它将所给出的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将多个参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先复制,再将原有文件删除,而链至该文件的链接也将丢失。2.mv命令 功能:为文件或目录改名第6章 嵌入式Linux操作系统及应用 各选项的含义:-i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。-f:禁止交互操作。在mv操作要覆盖某已经有的目标文件时不给出任何提示,指定此选项后,i选项将不再起任何作用。注意:为防止用户mv命令破坏另一个文件,使用命令移动文件时最好使用i选项。各选项的含义:-i:交互方式操作。如第6章 嵌入式Linux操作系统及应用 3.rm命令命令 功能:删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件子目录均删除。对于链接文件,只是断开了链接,原文件保持不变。语法:rm 选项 文件 如果没有使用-r选项,则rm不会删除目录。各选项的含义:-f:忽略不存在的文件,从不给出提示。-r:提示rm将参数中列出的全部目录和子目录均递归删除。-i:进行交互式删除。3.rm命令 功能:删除一个目录中的第6章 嵌入式Linux操作系统及应用 6.2.3 目录操作命令目录操作命令 1.mkdir命令命令 功能:创建一个目录。语法:mkdir 选项 dir-name 说明:创建由dir-name命令的目录。要求创建目录的用户在当前目录中(dir-name的父目录中)具有写权限,并且dir-name不能是当前目录中已有的目录或文件名称。各选项的含义:-m:对新建目录设置存取权限,也可以用chmod命令设置。-p:可以是一个路径名称。此时若路径中的某些目录不存在,加上此选项后,系统将自动建立好那些不存在的目录,即一次可以建立多个目录。6.2.3 目录操作命令 1.mkdir命令第6章 嵌入式Linux操作系统及应用 2.rmdir命令命令 功能:删除空目录。语法:rmdir 选项 dir-name 说明:dir-name 表示目录名。该命令从一个目录中删除一个或多个子目录项。需要特别注意的是,一个目录被删除之前必须是空的。各选项的含义:-p:递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。2.rmdir命令 功能:删除空目录第6章 嵌入式Linux操作系统及应用 3.cd命令命令 功能:改变工作目录。语法:cd directory 说明:该命令将当前目录改变至directory所指定的目录。若没有指定directory,则回到用户的主目录。为了改变到指定目录,用户必须拥有对指定目录的执行和读权限。该命令可以通配符。注意:在Linux中,用“/”代表根目录,用“.”代表上级的目录,用“-”代表用户的个人主目录,用“.”代表当前目录。例如:root ghost ssh#cd .执行该命令后,将从用户当前目录进入/etc目录。3.cd命令 功能:改变工作目录。第6章 嵌入式Linux操作系统及应用 4.pwd命令命令 功能:显示整个路径名。语法:pwd。说明:在Linux层次目录结构中,没有提示符来告知用户目前处于哪一个目录中,使用pwd命令可显示出当前工作目录的绝对路径。4.pwd命令 功能:显示整个路径名第6章 嵌入式Linux操作系统及应用 5.ls命令命令 功能:列出目录的内容。语法:ls 选项 目录或是文件 说明:ls是英文单词list的简写。对于每个目录,ls命令将列出其中的所有子目录与文件。对于每个文件,ls将输出其文件名以及所要求的其他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或者是文件名时,就显示当前目录的信息。5.ls命令 功能:列出目录的内容。第6章 嵌入式Linux操作系统及应用 各选项的含义:-a:显示指定目录下所有子目录与文件,包括隐藏文件。-A:显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“”“”。-b:对文件名中不可输出的字符用反斜杠加字符编号的形式列出。-c:按文件的修改时间排序。-C:分成多列显示各项。各选项的含义:-a:显示指定目录下所第6章 嵌入式Linux操作系统及应用 6.2.4 文本操作命令文本操作命令 1sort命令命令 功能:对文件中的各行进行排序。该命令逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符,如果还相同,继续进行比较。语法:sort 选项 文件 说明:sort命令对指定文件中所有的行进行排序,将结果显示在标准输出上。如不指定输入文件或使用“-”,则表示排序内容来自标准输入。sort命令根据从输入行抽取的一个或多个关键字进行比较。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按ASCII字符顺序进行排序。6.2.4 文本操作命令 1sort命令第6章 嵌入式Linux操作系统及应用 改变缺省设置的选项主要有:-m:若给定文件已排好序,合并文件。-c:检查给定文件是否已排好序,如果他们没有排好序,则打印一个出错信息,并以状态1退出。-u:对排序后认为相同的行只留其中一行。-o:输出文件将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。改变缺省设置的选项主要有:-m:若给第6章 嵌入式Linux操作系统及应用 改变缺省排序规则的选项主要有:-d:按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。-f:将小写字母与大写字母同等对待。-I:忽略非打印字符。-M:作为月份比较:“JAN”将所有文件打包成data.tar,扩展名.tar需自行加上#tar cvzf data.tar.gz*将所有文件打包成data.tar,再用gzip压缩#tar tvf data.tar 查看文件data.tar中包含那些文件#tar xvf data.ta 解压data.tar文件#tar zxvf data.tar.gz 将所有文件打包成data.tar,扩展名.tar需自行加上 举例:#tar cvf data.t第6章 嵌入式Linux操作系统及应用 2gzip命令命令 功能:对文件进行压缩和解压。语法:gzip 选项 压缩(解压缩)的文件名 各选项的含义:-c:将输出写到标准输出上,并保留原有文件。-d:将压缩文件解压。-l:对每个压缩文件,显示的字段为压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字。-r:递归式地查找指定目录并压缩其中的所有文件或者是解压缩。-t:测试,检查压缩文件是否完整。-v:对每一个压缩文件和解压的文件,显示文件名和压缩比。-num:用指定的数字num调整压缩的速度,1或fast表示最快的压缩方法(低压缩比),9或best表示最慢的压缩方法(高压缩比)。系统缺省值为6。2gzip命令 功能:对文件进行压缩和第6章 嵌入式Linux操作系统及应用 3unzip 命令命令 功能:用Windows压缩软件Winzip压缩的文件在Linux系统中可以用unzip命令展开。该命令用于将扩展名为.zip的压缩文件解压缩。语法:unzip 选项 压缩文件名.zip 各选项的含义:-x:文件列表(解压缩文件),但不包括指定的file文件。-v:查看压缩文件目录,但不解压缩。-t:测试文件有无损坏,但不解压缩。-d:目录,把压缩文件解到指定目录下。-z:只显示压缩文件的注解。-n:不覆盖已经存在的文件。-o:覆盖已经存在的文件且不要求用户确认。-j:不重建文档的目录结构,把所有文件解压到同一目录下。3unzip 命令 功能:用Windo第6章 嵌入式Linux操作系统及应用 6.2.6 用户相关命令用户相关命令 1passwd命令命令 功能:Linux系统中,用useradd命令增加用户时,还需要用passwd命令为每一位新增加的用户设置口令;用户可以随时用passwd命令改变自己的口令。语法:passwd 用户名 说明:只有超级用户可以用“passwd 用户名”命令修改其他用户的口令,普通用户只能用不带参数的passwd命令修改自己的口令。使用方法如下:6.2.6 用户相关命令 1passwd命令第6章 嵌入式Linux操作系统及应用 先输入passwd;再在(current)UNIX passwd:下输入当前的口令;接着在new password:提示下输入新的口令(在屏幕上看不到这个口令);最后系统提示再次输入这个新口令,输入正确后,新口令被加密并放入/etc/shdow文件。设定口令的规则:至少有六位字符;大小写字母、标点符号和数字混合。超级用户修改其他用户(xxq)口令的过程如下:#passwd root New UNIX password Retype new UNIX password:Passwd:all authentication tokens updated successfully#先输入passwd;再在(curre第6章 嵌入式Linux操作系统及应用 2su命令命令 功能:让一个普通用户拥有超级用户或其他用户的权限,或让超级用户以普通用户的身份做一些事情。普通用户使用该命令时,必须有超级用户或其他用户的口令。如要离开当前用户的身份,可以输入exit。语法:su 选项?使用者账号 说明:若没有指定使用者账号,则系统预设值为超级用root。各选项的含义:-c:执行一个命令后就结束。-e:加了这个减号的目的是使环境变量和要转换的用户相同。-m:保留环境变量不变。Password:输入超级用户的密码。2su命令 功能:让一个普通用户拥有超第6章 嵌入式Linux操作系统及应用 6.2.7 磁盘管理命令磁盘管理命令 1df命令命令 功能:检查文件系统的磁盘空间占用情况。用该命令可获取硬盘被占用空间的信息。语法:df 选项 说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况。各选项的含义:-a:显示所有文件系统的磁盘使用情况。-k:以k字节为单位显示。-i:显示i节点信息,而不是磁盘块。-t:显示各指定类型的文件系统的磁盘空间使用情况。-x:列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。-T:显示文件系统类型。6.2.7 磁盘管理命令 1df命令 第6章 嵌入式Linux操作系统及应用 2du命令命令 功能:统计目录(或文件)所占磁盘空间的大小。语法:du 选项 Names 说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出Names,则对当前目录统计。2du命令 功能:统计目录(或文件)所第6章 嵌入式Linux操作系统及应用 各选项的含义:-s:对每个Names参数只给出占用的数据块总数。-a:递归地显示指定目录中的各文件及子孙目录中各文件占用的数据块。-b:以字节为单位列出磁盘空间的使用情况(系统缺省以k字节为单位)。-k:以1024字节为单位列出磁盘空间的使用情况。-c:最后再加上一个总计(系统缺省设置)。-l:计算所有的文件大小,对硬链接文件,则计算多次。-x:跳过在不同文件系统上的目录不予统计。各选项的含义:-s:对每个Names第6章 嵌入式Linux操作系统及应用 3dd命令命令 功能:把指定的输入文件复制到指定的输出文件中,可以在复制过程中进行格式转换。注意:应将硬盘上的寄存文件用rm命令删除。系统默认用标准输入文件和标准输出文件。语法:dd 选项 各选项的含义:if=输入文件(或设备名称)。of=输出文件(或设备名称)。ibs=bytes:一次读出bytes字节,即读入缓冲区字节数。3dd命令 功能:把指定的输入文件复制第6章 嵌入式Linux操作系统及应用 4fdformat命令命令 功能:低级格式化软盘。语法:format-ndevice 其中,-n表示软盘格式化后不作检验;device指定要进行格式化的设备。说明:软盘在使用前必须先做格式化操作,然后可以用tar、dd、cpio等命令存储数据,也可以在软盘上建立可安装的文件系统。4fdformat命令 功能:低级格式第6章 嵌入式Linux操作系统及应用 6.2.8 权限管理命令权限管理命令 在Linux系统中,每个文件和目录都有访问许可权限,用来确定谁可以通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限分为只读、只写和可执行三种。以文件为例,只读权限表示只允许读其内容,禁止对其做任何的更改操作;可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者将自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。有三种不同类型的用户可对文件或目录进行访问:文件所有者、同组用户和其他用户。6.2.8 权限管理命令 在Linux系统中,第6章 嵌入式Linux操作系统及应用 所有者一般是文件的创建者,可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。每个文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls-1命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:$ls-1 sobsrc.tgz -rw-r-r-1 root root 483997 Jul 15 17:31 sobsrc.tgz
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!