《ARM嵌入式系统原理及应用开发》课件第6章0815_第1页
《ARM嵌入式系统原理及应用开发》课件第6章0815_第2页
《ARM嵌入式系统原理及应用开发》课件第6章0815_第3页
《ARM嵌入式系统原理及应用开发》课件第6章0815_第4页
《ARM嵌入式系统原理及应用开发》课件第6章0815_第5页
已阅读5页,还剩128页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章嵌入式Linux操作系统及应用6.1嵌入式Linux操作系统概述6.2嵌入式Linux的常用命令6.3嵌入式Linux开发环境的构建6.4嵌入式Linux内核的移植 6.1嵌入式Linux操作系统概述

6.1.1常用嵌入式Linux系统

1. RT-Linux

这是由墨西哥理工学院开发的嵌入式Linux操作系统。到目前为止,RT-Linux已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等广泛领域。RT-Linux开发者并没有针对实时操作系统的特性而重写Linux的内核,因为这样做的工作量非常大,而且要保证兼容性也非常困难。为此,RT-Linux提出了精巧的内核,并把标准的Linux核心作为实时核心的一个进程,同用户的实时进程一起调度。这样对Linux的改动非常小,并且充分利用了Linux下现有的丰富的软件资源。

2.μCLinux

μCLinux是一种优秀的嵌入式Linux版本,是micro-Control-Linux的缩写。它继承了标准Linux的优良特性,经过各方面的小型化改造,形成了一个高度优化的、代码紧凑的嵌入式Linux。μCLinux主要是针对目标处理器没有存储管理单元MMU(MemoryManagementUnit)的嵌入式系统而设计的。虽然它的体积很小,却仍然保留了Linux的大多数的优点,如稳定、良好的移植性、优秀的网络功能、对各种文件系统完备的支持和标准丰富的API。μCLinux专为嵌入式系统做了许多小型化的工作,目前已支持多款CPU。其编译后目标文件可控制在几百KB数量级,并已经被成功地移植到很多平台上。它是Lineo公司的主打产品,同时也是开放源代码的嵌入式Linux的典范。

3. ARM-Linux

ARM-Linux是一个成功的Linux内核的组成部分,它是专门为基于ARM系列处理器而设计的。它是由RussellKing在其他人的经验基础上主创出来的。ARM-Linux正在被全世界不同的组织和个人持续的完善和发展。目前,除了不含MMU的ARM7处理器外,其他的ARM9/XSCALE等ARM系列处理器都运行ARM-Linux。据不完全统计,ARM-Linux内核已经移植到500种以上的机器种类上,其中包括个人电脑、网络计算机、掌上设备和各种开发板。

4. Redhat-Linux

Redhat公司是全球最大的开源技术厂家,其产品RedhatLinux也是全世界应用最广泛的Linux。Redhat公司总部位于美国北卡罗来纳州,在全球拥有22个分公司。它的产品市场占有率很高,约占Linux操作系统52%的市场份额。它也是Compaq、Dell、Intel等一流的IT企业的合作伙伴。

现在Redhat已不自己开发桌面版的Linux操作系统。它最后推出的一款产品是RedhatLinux9。Redhat把桌面版Linux操作系统产品交由Fedora社区开发。FedoraCore是由Redhat资助的合作项目产生的一款产品。因为FedoraCore最初就是在Redhat的基础上开发的,所以由Redhat和Fedora联手共同开发维护这个产品。

5. XLinux

XLinux是由美国网虎公司推出的。美国网虎公司是全球性的Linux相关技术开发的领导厂商,成立于1998年9月,总部设在美国硅谷。公司致力于发展Linux的先进技术及实际应用(如Linux嵌入式系统在IA信息家电网领域中的应用),并将XLinux建立成为全球Linux的领导品牌。XLinux核心采用了“超字元集”专利技术,让Linux核心不仅可以与标准字符集相容,还涵盖了12个国家和地区的字符集。因此,XLinux在推广Linux的国际应用方面有独特的优势。最新版的XLinuxOS1.5是功能齐全且稳定性高的Linux操作系统,它不仅提供友好、简单的使用界面,而且提供菜单和窗口对话框方式的系统配置和管理工具。另外,XLinuxOS1.5采用交互式的安装界面,只需要15~30分钟就可以完成系统的安装。

6.红旗嵌入式Linux

由北京中科院红旗软件公司推出的嵌入式Linux是国内做得较好的一款嵌入式操作系统。目前,中科院计算所自行开发的开放源码的嵌入式操作系统—EasyEmbeddedOS(EEOS)也已经开始进入实用阶段了。该款嵌入式操作系统重点支持p-Java。系统目标一方面是小型化,另一方面是能实现Linux的驱动和其他模块。由于有中科院计算所的强大科研力量做后盾,EEOS有望发展成为功能完善、稳定、可靠的国产嵌入式操作系统平台。6.1.2嵌入式Linux系统内核

嵌入式Linux系统需要三个基本要素:系统引导工具(用于机器加电后的系统定位引导)、Linux微内核(内存管理、程序管理)和初始化进程。但如果要让它成为完整的操作系统并且继续保持小型化,还必须加上硬件驱动程序、硬件接口程序和应用程序组。

1.内核体系结构

Linux内核采用的是单一内核结构。这种内核结构的重要特征是模块化。模块化能有效实现许多良好的功能。每个模块都是一个目标文件,它的代码可以在运行时被链接到内核。目标代码往往由函数集组成,该集合实现了文件系统、设备驱动器以及其他一些内核的上层特征。Linux对模块给予了强有力的支持,在各个模块之间规定了一些良好的界面,并且可以动态地装入和卸载内核中的部分代码。

Linux的内核为非抢占式的。它不能通过改变优先权来影响当前的执行流程,因此,可以对Linux某些重要的数据结构进行修改而不加任何保护措施。Linux内核主要有下列功能:①用软件接口抽象不同的硬件资源,以简化操作,屏蔽低层硬件的不同接口,即资源抽象;②将抽象出来的各种资源分配给各个进程并负责取回这些系统资源,即资源分配;③根据不同的资源类型使用不同的机制保证资源被进程所独占,即资源共享。简而言之,Linux内核包含进程调度、内存管理、文件系统、进程间通信、网络及资源管理六部分。Linux内核的体系结构如图6.1所示。图6.1Linux内核的体系结构

1)进程调度

进程调度控制CPU资源的分配。Linux内核采用给予优先级的抢占式多任务调度方式。在这种调度方式下,系统中运行的进程是所有可运行进程中优先级最高的那个。在嵌入式系统的应用中,有很多实时需求,所以有些用于嵌入式系统的Linux通过改变进程调度来实现实时调度。此类Linux内核中进程调度部分和具体的硬件平台相关性不大,因为调度算法在所有硬件平台上的实现都是相同的。但是进程调度一般都是通过硬件的时钟中断来实现的,这一部分与具体硬件相关,另外在进程切换部分也和硬件平台相关,所以进程切换部分一般都用汇编语言实现。

2)内存管理

标准Linux系统在具有MMU的硬件中支持虚拟内存,它使用硬件提供的分页机制。Linux的内存管理系统用于管理内存资源,它实现了进程之间的内存保护、内存共享以及内存管理功能。内存管理可分为硬件相关部分和硬件无关部分。其中硬件相关部分负责初始化内存、处理缺页中断、把硬件提供的分页机制抽象成三级页面映射;硬件无关部分提供内存分配、内存映射等功能。有些嵌入式设备采用的CPU不具有MMU,在这种设备中,需要把Linux中的虚拟内存管理系统去掉。

3)文件系统

Linux的文件系统结构与UNIX的类似,该系统具有虚拟文件系统(VFS)接口,所有真正的文件系统都挂接在虚拟文件系统下,通过虚拟文件系统接口来访问。由于使用了统一的接口,因此Linux可以支持多个文件系统,包括一些特殊的文件系统。

Linux的文件系统可分为以下三个子系统:

(1)虚拟文件系统(VFS)。VFS提供了所有文件以及设备的数据抽象,即给上层提供文件操作的接口。其接口函数包括文件的打开、读、写、控制等。Linux操作系统的VFS仅仅存在于内存中,它在初始化完成之后,从逻辑文件系统的存储介质加载相应的逻辑文件系统到VFS中的某个路径,并读取该逻辑文件中的超级块以及索引节点,以建立统一的VFS索引节点。VFS是内核的一个子系统,其他系统只与VFS打交道,不与逻辑文件系统发生关系。对逻辑文件系统而言,VFS是管理者;对内核的其他子系统而言,VFS是它们与逻辑文件系统的接口。同时,VFS还给设备操作进程提供通信接口。在VFS中,采用超级块、索引节点等多级机制对文件进行查找、操作、管理。

(2)逻辑文件系统。逻辑文件系统对应各种Linux支持的文件系统,它实现了逻辑数据块与物理数据块之间的转换和映射以及缓冲区的管理。由于文件系统抽象的具体文件设备在不同的硬件环境中差别很大,因此需要逻辑文件系统来实现从逻辑块到物理块的分配。

(3)设备管理部分。在设备管理部分,所有的设备按照外部数据与内存数据的交换方式分为块设备和字符设备。设备驱动程序可以通过块设备和字符设备所对应的文件索引节点号来实现对设备的访问。设备管理主要实现对驱动程序的管理。设备按照主设备号和从设备号来识别,相同主设备号代表一类设备,其操作访问方式相同,不同的从设备号代表相同种类的多个设备。设备驱动层按照标准的方式进行编译并且注册到系统中后,就可以按照统一的界面被调用。

文件系统是Linux的核心部分。在Linux系统中,许多概念和语义都与文件有关,如文件操作、设备读写、管道通信等。所以文件子系统给应用程序提供的页面非常重要。

4)进程间通信(IPC)

一般情况下,进程在自己的地址空间运行时不会互相干扰。但是有很多应用会要求在进程间传递信息,所以Linux也提供了UNIX中常用的进程间通信机制。主要的进程间通信方式有管道(Pipe)、文件锁、SystemVIPC、信号(Signal)及共享内存等。因为Linux支持网络,所以还可以使用网络接口进行进程间通信。Linux的进程间通信机制和硬件体系无关,在大多数的平台上都支持同样的方式。

5)网络

Linux是在互联网环境下产生的操作系统,所以它对网络具有良好的支持。Linux内核支持多种网络协议,如IP、IPV6、IPX、Appletalk及蓝牙等;支持路由、防火墙过滤等网络设备功能;并提供标准的BSDsocket编程接口。Linux上有大量网络应用,所有常用的基于IP的应用在Linux世界里都可以以GPL方式获得。Linux的内核网络代码和硬件体系无关。

6)资源管理

Linux中除了CPU和内存,其他资源都是用驱动程序的形式加以管理的,因此,其内核代码的绝大部分是各种驱动程序,并且随着系统支持的硬件的增加,代码增加量最大的也是驱动程序。

2.内核源码结构

Linux的内核源码结构类似于抽象结构,大体分为进程管理、内存管理、文件系统、驱动程序和网络5个部分。这种对应性是因为抽象结构来源于具体结构,它很接近源代码的目录结构。但是,这种划分没有严格依照源代码的目录结构,且与各子系统的分组也不完全匹配。下面以Linux2.6.14为例介绍Linux的内核源码结构。

Linux2.6.14内核源码有440MB之多,其目录组成如图6.2所示(这里假设Linux2.6.14内核代码的存放位置为/usr/src/linux-2.6.14)。

图6.2Linux2.6.14内核文件结构图6.2中各目录的意义和作用如下:

(1) arch目录。arch目录包括所有与体系结构相关的核心代码。它包含24个子目录,每一个子目录都代表一种体系,如ARM就是关于ARM及与之相兼容体系结构的子目录。对于任何平台,arch目录必须包括以下子目录:

●boot:启动内核所使用的部分或全部平台特有的代码。

kernel:存放支持体系结构特有的(如信号处理和AMP)特征的实现。

lib:存放高速的体系结构特有的(如strlen和memcpy)通用函数的实现。

mm:存放体系结构特有的内存管理程序的实现。

math-emu:模拟FPU的代码。

(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)。

(5) kernel目录。kernel目录为系统主要的核心代码,该目录下的文件包含了大多数Linux系统的内存函数,其中最重要的文件当属sched.c。

(6) drivers目录。drivers目录放置系统所有的设备驱动程序,每种驱动程序又各占一个子目录,如/block下为块设备驱动程序。

(7) lib目录。lib目录放置核心的库代码及一些与平台无关的通用函数,如strlen和memcpy等函数。

(8) net目录。net目录是系统的网络部分代码,其中每个子目录对应网络的一个方面。

(9) ipc目录。ipc目录包含核心的进程间通信的代码,包括util.c、sem.c和msg.c等。

(10) fs目录。fs目录包括所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录都支持一个文件系统,如fat和ext2。

(11) scripts目录。scripts目录包含用于对核心进行配置的脚本文件。6.1.3嵌入式Linux的文件系统

1)嵌入式Linux文件系统原理

Linux下的文件系统主要可分为三个层次:一是上层用户空间的应用程序对文件系统的系统调用;二是虚拟文件系统VFS(VirtualFilesystemSwitch);三是挂载到VFS中的各种实际文件系统。嵌入式Linux系统中文件系统的体系架构如图6.3所示。图6.3嵌入式Linux文件系统体系架构图6.3嵌入式Linux文件系统体系架构

用户空间包含一些应用程序(如文件系统的使用者)和GNUC库(glibc),用来为文件系统调用(打开,读取,写和关闭)用户接口。系统调用接口的作用就像是交换器,它将系统调用从用户空间发送到内核空间中的适当端点。系统调用实际上是通过调用内核虚拟文件系统提供的统一接口来完成对各种设备的使用。

VFS(虚拟文件系统)就是把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分。它位于用户程序和具体的文件系统之间。它为用户程序提供了标准的文件系统调用接口,对具体的文件系统,它通过一系列的系统公用的函数指针来实际调用具体的文件系统函数,完成实际的有差异的操作。任何使用文件系统的程序必须经过这层接口来使用它。通过这样的方式,VFS就对用户屏蔽了底层文件系统的实现细节和差异。虚拟文件系统提供了很好的通用接口,使系统屏蔽了不同文件系统对于应用程序的差异。各种具体的操作由具体的文件系统按照各自的方式自己实现,如Yaffs文件系统、JFFS等文件系统都有自己的实现方式,但这些文件系统都导出一组通用接口,供VFS使用。这种想法类似于面向对象中的多态:系统将不同的文件系统封存起来,向用户提供统一的接口。相同功能的函数被不同的文件系统重载,完成各自需要的操作。这使得添加新的文件系统也很容易,提高了Linux系统的可扩展性和兼容性。虚拟文件系统的使用体现了Linux文件系统的一大特点,即支持各种不同的文件系统。目前已经稳定支持的文件系统包括ext、ext2、ext3、vfat、iso9660、proc、NFS、JFFS、JFFS2、SMB和ReisterFS等。

2)主要嵌入式文件系统介绍

嵌入式文件系统和基本的Linux文件系统原理是一样的,只是嵌入式文件系统针对嵌入式应用加入了一些特别的处理。由于Flash存储介质的读写特点,传统的Linux文件系统已经不适合应用在嵌入式系统中,如ext2文件系统是为像IDE那样的块设备设计的,这些设备的逻辑块是512KB、1024KB等大小,没有提供很好的扇区擦写支持,不支持损耗平衡,没有掉电保护,也没有特别完美的扇区管理,这不太适合于因设备类型而划分扇区大小的内存设备。基于这样的原因,产生了很多专为Flash设备而设计的文件系统,常见的专用于闪存设备的文件系统如下:

(1) Romfs。传统型的Romfs文件系统是最常用的一种文件系统,它是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存。它按顺序存放所有的文件数据,所以这种文件系统格式支持应用程序以XIP方式运行,在系统运行时,可以获得可观的RAM节省空间。μCLinux系统通常采用Romfs文件系统。

(2) Cramfs。Cramfs是Linux的创始人LinuxTorvalds开发的一种可压缩只读文件系统。在Cramfs文件系统中,每一页被单独压缩,可以随机访问,其压缩比高达2∶1,为嵌入式系统节省了大量的Flash存储空间。Cramfs文件系统以压缩方式存储,在运行时解压缩,所以不支持应用程序以XIP方式运行,所有的应用程序都要求被复制到RAM中运行,但这并不代表它比Ramfs需求的RAM空间要大,因为Cramfs采用分页压缩的方式存放档案,在读取档案时,不会耗用过多的内存空间,只会针对目前实际读取的部分分配内存,对尚没有读取的部分不分配内存空间,当读取的文件不在内存中时,Cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。但是它的只读属性同时又是它的一大缺陷,使得用户无法对其内容进行扩充。Cramfs镜像文件通常是放在Flash中,但是也能放在别的文件系统里,使用loopback设备可以把它安装到别的文件系统里。使用mkCramfs工具可以创建Cramfs镜像文件。

(3) Ramfs/Tmpfs。Ramfs也是LinuxTorvalds开发的,Ramfs文件系统把所有的文件都放在RAM里运行,通常用来存储一些临时性或经常要修改的数据。相对于ramdisk来说,Ramfs的大小可以随着所含文件内容的大小变化,不像ramdisk的大小是固定的。Tmpfs是基于内存的文件系统,因为Tmpfs驻留在RAM中,所以写/读操作发生在RAM中。Tmpfs文件系统大小可随所含文件内容的大小变化,使其能够最理想地使用内存。Tmpfs驻留在RAM中,所以读和写几乎都是瞬时的。Tmpfs的一个缺点是当系统重新引导时会丢失所有数据。

(4) JFFS2。JFFS2是Redhat公司基于JFFS开发的闪存文件系统,最初是针对Redhat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux和μCLinux中。JFFS文件系统最早是由瑞典AxisCommunications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2是一个可读写、可压缩的日志型文件系统,并提供了崩溃/掉电安全保护,克服了JFFS的一些缺点,使用了基于哈希表的日志节点结构,大大加快了对节点的操作速度,支持数据压缩,提供了“写平衡”支持,支持多种节点类型,提高了对闪存的利用率,降低了内存的消耗。这些特点使JFFS2文件系统成为目前Flash设备上最流行的文件系统格式,它的缺点是当文件系统已满或接近满时,JFFS2运行会变慢,这主要是因为碎片收集的问题。

(5) Yaffs。Yaffs/Yaffs2是一种JFFSx类似的闪存文件系统,它是专为嵌入式系统使用Nand型闪存而设计的一种日志型文件。与JFFS2相比,它减少一些功能,所以速度更快,而且内存的占用比更小。此外,Yaffs自带Nand芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux系统中的MTD与VFS,直接对文件系统操作。Yaffs2支持大页面的Nand设备,并且对大页面的Nand设备做了优化。Yaffs2在闪存上表现并不稳定,更适合Nor闪存,Yaffs是更好的选择。

在具体的嵌入式系统设计中,可根据不同目录存放的不同内容,以及存放的文件属性确定使用何种文件系统。6.1.4嵌入式Linux的开发步骤

嵌入式系统通常为一个资源受限的系统。直接在嵌入式系统的硬件平台上编写软件比较困难,有时甚至是不可能的。目前,一般采用的办法是:先在通用计算机上编写程序;然后,通过交叉编译生成目标平台上可运行的二进制代码格式;最后下载到目标平台上的特定位置上运行。对于使用Linux操作系统进行嵌入式开发来说,一般步骤如下:

(1)建立嵌入式Linux交叉开发环境。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境。它与运行嵌入式应用软件的环境有所不同,常采用宿主机/目标机模式。

目前,常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链,目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境主要有MetrowerksCodeWarrior、ARMSoftwareDevelopmentToolkit、SDSCrosscomplier、WindRiverTornado和MicrosoftEmbeddedVisualC等。

(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。编写好的嵌入式软件经过交叉编译和交叉链接后,通常会生成用于调试的可执行文件和用于固化的可执行文件两种类型。

(3)交叉调试。交叉调试就是通过在线仿真器对产品进行软硬件调试。

硬件调试:如果不采用在线仿真器,可以让CPU直接在其内部实现调试功能,并通过在开发板上引用的调试端口,发送调试命令和接受调试信息,完成调试过程。目前,ARM公司提供的开发板上使用的则是JTAG调试端口。使用合适的软件工具与这些调试端口进行连接,可以获得与ICE类似的调试效果。

软件调试:在嵌入式Linux系统中,Linux系统内核调试,可以先在Linux内核中设置一个调试桩(debugstub),用做调试过程中与宿主机之间的通信服务器。而后可在宿主机中通过调试器的串口与调试桩进行通信,并通过调试器控制目标机上Linux内核的运行。嵌入式上层应用软件的调试可以使用本地调试和远程调试两种方法。如果采用的是本地调试,首先要将所需的调试器移植到目标系统中,然后就可以直接在目标机上运行调试器来调试应用程序了;如果采用的是远程调试,则需要移植一个调试服务器到目标系统中,并通过它与宿主机上的调试器共同完成应用程序的调试。在嵌入式Linux系统的开发中,远程调试时目标机上使用的调试服务器通常是gdbserver,而宿主机上使用的调试器则是gdb。两者相互配合共同完成调试过程。

(4)系统测试。在整个软件系统编译的过程中,嵌入式系统的硬件一般采用专门的测试仪器进行测试,而软件则需要有相关的测试技术和测试工具的支持,并要采用特定的测试策略。测试技术指的是软件测试的专门途径,以及能够更加有效地运用这些途径的特定方法。在嵌入式软件测试中,常常要在基于目标机的测试和基于宿主机的测试之间做出折中。基于目标机的测试需要消耗较多的时间和经费,而基于宿主机的测试虽然代价较小,但毕竟是在仿真环境中进行的,因此难以完全反映软件运行的实际情况。这两种环境下的测试可以发现不同的软件缺陷,关键是要对目标机环境和宿主机环境下的测试内容进行合理取舍。嵌入式软件测试中经常用到的测试工具主要有内存分析工具、性能分析工具、覆盖分析工具和缺陷跟踪工具等。 6.2嵌入式Linux的常用命令

在Linux操作系统中,所有事物都被当做文件来处理:硬件设备(包括键盘和终端)、目录、命令和文件。不论是什么版本的Linux,它们的命令都是通用的,大多数的Linux的命令格式为:command[option][sourcefiles(s)][targetfile]。Linux的命令是区分大小的。图6.4是Redhat-Linux的终端操作示意图。图6.4Redhat-Linux的终端操作示意图6.2.1登录与退出命令

1.登录系统

要登录Linux,必须输入用户的账号。在系统安装过程中可以创建以下两种账号:

root:超级用户账号(系统管理员),用这个账号可以在系统中做任何事情。

普通用户:这个账号供普通用户使用,只能进行有限的操作。用户登录分两步:①输入用户的登录名。系统根据该登录名识别用户。②输入用户的口令。该口令是用户自己设置的一个字符串。

当用户正确地输入用户名和口令后,就能合法地进入系统。屏幕显示:[root@localhost/root]#,这时就可以对系统进行各种各样的操作了。

注意:超级用户的提示符是“#”,其他用户的提示符是“$”。

2.修改口令

为了更好地保护用户账号的安全,Linux允许用户随时修改自己的口令。修改口令的命令是Password。输入Password命令后,将提示用户输入旧口令和新口令,之后还要求用户再次确认新口令。如果用户忘记了口令,可以向系统管理员申请为自己重新设置。

3.虚拟控制台

Linux是一个真正的多用户操作系统,可以同时接受多个用户登录。Linux允许一个用户进行多次登录,这是因为Linux和UNIX一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台进行多次登录。

虚拟控制台的选择是可以通过按Alt键和一个功能键来实现的,通常使用功能键F1~F6。例如,用户登录后,按下Alt+F2键就可以看到“Login”提示符,说明用户看到了第二个虚拟控制台,再次按Alt+F1键,就可以回到第一个虚拟台。

新安装的Linux系统默认允许用户使用Alt+F6键来访问前六个虚拟控制台。虚拟控制台可以使用户同时在多个控制台上工作,真正体现Linux系统多用户的特性,用户可以在某一虚拟台上进行的工作尚未结束时,切换到另一虚拟控制台开始另一项工作。

4.退出系统

无论超级用户还是普通用户,需要退出系统时,应在Shell提示符下键入exit命令。6.2.2文件操作命令

1. CP命令

功能:将给出的文件或目录复制到另一个文件或目录下。

语法:cp[选项]源文件或目录目标文件或目录。

说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。

各选项的含义:

 -a:该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用相当于dpR选项的组合。

 -d:拷贝时保留链接。

 -f:删除已经存在的目标文件而不提示。

-i:和f选项相反,在覆盖目标文件之前将给出提示要求用户确认,回答y时目标文件将被覆盖,是交互式拷贝。

-p:此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。

-r:若给出的源文件是目录文件,此时cp将递归复制该目录下的所有子目录和文件。此时目标文件必须为一个目录名。

 -l:不复制,只是链接文件。举例:[stul@ghoststul]$cp/etc/fstab~/fstab1,执行该命令后,将把/etc目录下的文件fstab复制到用户stul的个人主目录/home/stul下,复制后得文件名为fstab1。

注意:为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令复制文件后,这个文件就会被源新文件覆盖。建议使用cp命令复制文件时,最好使用i选项。

2. mv命令

功能:为文件或目录改名,或将文件由一个目录移入另一个目录中。

语法:mv[选项]源文件或目录目标文件或目录。

说明:根据mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以使源目录名),它将所给出的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将多个参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先复制,再将原有文件删除,而链至该文件的链接也将丢失。各选项的含义:

-i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。

-f:禁止交互操作。在mv操作要覆盖某已经有的目标文件时不给出任何提示,指定此选项后,i选项将不再起任何作用。

注意:为防止用户mv命令破坏另一个文件,使用命令移动文件时最好使用i选项。

3. rm命令

功能:删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件子目录均删除。对于链接文件,只是断开了链接,原文件保持不变。

语法:rm[选项]文件...

如果没有使用-r选项,则rm不会删除目录。

各选项的含义:

-f:忽略不存在的文件,从不给出提示。

-r:提示rm将参数中列出的全部目录和子目录均递归删除。

-i:进行交互式删除。6.2.3目录操作命令

1. mkdir命令

功能:创建一个目录。

语法:mkdir[选项]dir-name

说明:创建由dir-name命令的目录。要求创建目录的用户在当前目录中(dir-name的父目录中)具有写权限,并且dir-name不能是当前目录中已有的目录或文件名称。

各选项的含义:

-m:对新建目录设置存取权限,也可以用chmod命令设置。

-p:可以是一个路径名称。此时若路径中的某些目录不存在,加上此选项后,系统将自动建立好那些不存在的目录,即一次可以建立多个目录。

2. rmdir命令

功能:删除空目录。

语法:rmdir[选项]dir-name

说明:dir-name表示目录名。该命令从一个目录中删除一个或多个子目录项。需要特别注意的是,一个目录被删除之前必须是空的。

各选项的含义:

-p:递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。

3. cd命令

功能:改变工作目录。

语法:cd[directory]

说明:该命令将当前目录改变至directory所指定的目录。若没有指定directory,则回到用户的主目录。为了改变到指定目录,用户必须拥有对指定目录的执行和读权限。该命令可以通配符。

注意:在Linux中,用“/”代表根目录,用“..”代表上级的目录,用“-”代表用户的个人主目录,用“.”代表当前目录。例如:[root@ghostssh]#cd..执行该命令后,将从用户当前目录进入/etc目录。

4. pwd命令

功能:显示整个路径名。

语法:pwd。

说明:在Linux层次目录结构中,没有提示符来告知用户目前处于哪一个目录中,使用pwd命令可显示出当前工作目录的绝对路径。

5. ls命令

功能:列出目录的内容。

语法:ls[选项][目录或是文件]

说明:ls是英文单词list的简写。对于每个目录,ls命令将列出其中的所有子目录与文件。对于每个文件,ls将输出其文件名以及所要求的其他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或者是文件名时,就显示当前目录的信息。各选项的含义:

-a:显示指定目录下所有子目录与文件,包括隐藏文件。

-A:显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“.”“..”。

-b:对文件名中不可输出的字符用反斜杠加字符编号的形式列出。

-c:按文件的修改时间排序。

-C:分成多列显示各项。6.2.4文本操作命令

1.sort命令

功能:对文件中的各行进行排序。该命令逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符,如果还相同,继续进行比较。

语法:sort[选项]文件

说明:sort命令对指定文件中所有的行进行排序,将结果显示在标准输出上。如不指定输入文件或使用“-”,则表示排序内容来自标准输入。

sort命令根据从输入行抽取的一个或多个关键字进行比较。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按ASCII字符顺序进行排序。改变缺省设置的选项主要有:

-m:若给定文件已排好序,合并文件。

-c:检查给定文件是否已排好序,如果他们没有排好序,则打印一个出错信息,并以状态1退出。

-u:对排序后认为相同的行只留其中一行。

-o:输出文件将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。改变缺省排序规则的选项主要有:

-d:按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。

-f:将小写字母与大写字母同等对待。

-I:忽略非打印字符。

-M:作为月份比较:“JAN”<“FEB”。

-r:按逆序输出排序结果。

+pos1-pos2:指定一个或几个字段作为排序关键字,字段位置从pos1开始,到pos2为止(包括pos1,不包括pos2)。如不指定pos2,则关键字为从pos1到行尾。字段和字符的位置从0开始。

-b;在每行中寻找排序关键字时忽略前导的空白(空格和制表符)。

-t:separator:指定字符separator作为字段分隔符。

2.uniq命令

功能:文件经过处理后,在其输出文件中可能会出现重复的行。这时,可以用uniq命令将这些重复行从输出文件中删除,只留每条记录的唯一样本。

语法:uniq[选项]文件

说明:该命令读取输入文件,并比较相邻的行。行比较根据所用字符集的排序序列进行,正常情况下,第二个及以后更多个重复行将被删除。该命令将执行结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用“-”表示,则从标准输入读取。

各选项含义:

-c:显示输出中,每行行首加上本行在文件中出现的次数。它可取代-u和-d选项。

-d:只显示重复行。

-u:只显示文件中不重复的各行。

-n:前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。

+n:前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。

-fn:与-n相同,这里n是字段数。

sn:与+n相同,这里n是字符数。6.2.5压缩与备份命令

1.tar命令

功能:tar可以为文件和目录创建档案。用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或向档案中加入新的文件。tar命令可以把一大堆的文件和目录全部打包成一个文件。

语法:tar[主选项+辅选项]文件或者目录

说明:使用该命令时,主选项必须有,它告诉tar要做什么事情,辅选项可以选用。主选项的含义:

-c:创建新的档案文件。如果用户想备份一个目录或一些文件,就必须选择该选项。

-r:把要存档的文件追加到档案文件的末尾。

-t:列出档案文件的内容,查看已经备份了哪些文件。

-u:更新文件,即用新增的文件取代原备份的文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。

-x:从档案文件中释放文件。

辅助选项的含义:

-b:为磁带机设定。其后跟一数字,用来说明区块的大小,系统预设值为20。

-f:使用档案文件或设备,该选项通常必选。

-k:保存已经存在的文件。例如,把某个文件还原,在还原的过程中,遇到相同的文件不会进行覆盖。

-m:在还原文件时,把所有的文件的修改时间设定为现在。

-M:创建多卷的档案文件,以便在几个磁盘中存放。

-v:详细报告tar处理的文件信息,如无该选项,tar不报告文件信息。

-w:每一步都要求确认。

-z:用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但是还原时也一定要使用该选项进行解压缩。举例:

#tarcvfdata.tar*—>将所有文件打包成data.tar,扩展名.tar需自行加上

#tarcvzfdata.tar.gz*—>将所有文件打包成data.tar,再用gzip压缩

#tartvfdata.tar—>查看文件data.tar中包含那些文件

#tarxvfdata.ta—>解压data.tar文件

#tarzxvfdata.tar.gz—>将所有文件打包成data.tar,扩展名.tar需自行加上

2.gzip命令

功能:对文件进行压缩和解压。

语法:gzip[选项]压缩(解压缩)的文件名

各选项的含义:

-c:将输出写到标准输出上,并保留原有文件。

-d:将压缩文件解压。

-l:对每个压缩文件,显示的字段为压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字。

-r:递归式地查找指定目录并压缩其中的所有文件或者是解压缩。

-t:测试,检查压缩文件是否完整。

-v:对每一个压缩文件和解压的文件,显示文件名和压缩比。

-num:用指定的数字num调整压缩的速度,1或fast表示最快的压缩方法(低压缩比),9或best表示最慢的压缩方法(高压缩比)。系统缺省值为6。

3.unzip命令

功能:用Windows压缩软件Winzip压缩的文件在Linux系统中可以用unzip命令展开。该命令用于将扩展名为.zip的压缩文件解压缩。

语法:unzip[选项]压缩文件名.zip

各选项的含义:

-x:文件列表(解压缩文件),但不包括指定的file文件。

-v:查看压缩文件目录,但不解压缩。

-t:测试文件有无损坏,但不解压缩。

-d:目录,把压缩文件解到指定目录下。

-z:只显示压缩文件的注解。

-n:不覆盖已经存在的文件。

-o:覆盖已经存在的文件且不要求用户确认。

-j:不重建文档的目录结构,把所有文件解压到同一目录下。6.2.6用户相关命令

1.passwd命令

功能:Linux系统中,用useradd命令增加用户时,还需要用passwd命令为每一位新增加的用户设置口令;用户可以随时用passwd命令改变自己的口令。

语法:passwd[用户名]

说明:只有超级用户可以用“passwd用户名”命令修改其他用户的口令,普通用户只能用不带参数的passwd命令修改自己的口令。使用方法如下:先输入passwd<enter>;再在(current)UNIXpasswd:下输入当前的口令;接着在newpassword:提示下输入新的口令(在屏幕上看不到这个口令);最后系统提示再次输入这个新口令,输入正确后,新口令被加密并放入/etc/shdow文件。

设定口令的规则:至少有六位字符;大小写字母、标点符号和数字混合。

超级用户修改其他用户(xxq)口令的过程如下:

#passwdroot

NewUNIXpassword

RetypenewUNIXpassword:

Passwd:allauthenticationtokensupdatedsuccessfully

#

2.su命令

功能:让一个普通用户拥有超级用户或其他用户的权限,或让超级用户以普通用户的身份做一些事情。普通用户使用该命令时,必须有超级用户或其他用户的口令。如要离开当前用户的身份,可以输入exit。

语法:su[选项][?][使用者账号]

说明:若没有指定使用者账号,则系统预设值为超级用root。

各选项的含义:

-c:执行一个命令后就结束。

-e:加了这个减号的目的是使环境变量和要转换的用户相同。

-m:保留环境变量不变。

Password:输入超级用户的密码。6.2.7磁盘管理命令

1.df命令

功能:检查文件系统的磁盘空间占用情况。用该命令可获取硬盘被占用空间的信息。

语法:df[选项]

说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况。

各选项的含义:

-a:显示所有文件系统的磁盘使用情况。

-k:以k字节为单位显示。

-i:显示i节点信息,而不是磁盘块。

-t:显示各指定类型的文件系统的磁盘空间使用情况。

-x:列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。

-T:显示文件系统类型。

2.du命令

功能:统计目录(或文件)所占磁盘空间的大小。

语法:du[选项][Names…]

说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出Names,则对当前目录统计。各选项的含义:

-s:对每个Names参数只给出占用的数据块总数。

-a:递归地显示指定目录中的各文件及子孙目录中各文件占用的数据块。

-b:以字节为单位列出磁盘空间的使用情况(系统缺省以k字节为单位)。

-k:以1024字节为单位列出磁盘空间的使用情况。

-c:最后再加上一个总计(系统缺省设置)。

-l:计算所有的文件大小,对硬链接文件,则计算多次。

-x:跳过在不同文件系统上的目录不予统计。

3.dd命令

功能:把指定的输入文件复制到指定的输出文件中,可以在复制过程中进行格式转换。

注意:应将硬盘上的寄存文件用rm命令删除。系统默认用标准输入文件和标准输出文件。

语法:dd[选项]

各选项的含义:

 if=输入文件(或设备名称)。

 of=输出文件(或设备名称)。

 ibs=bytes:一次读出bytes字节,即读入缓冲区字节数。

4.fdformat命令

功能:低级格式化软盘。

语法:format

[-n]

device

其中,-n表示软盘格式化后不作检验;device指定要进行格式化的设备。

说明:软盘在使用前必须先做格式化操作,然后可以用tar、dd、cpio等命令存储数据,也可以在软盘上建立可安装的文件系统。6.2.8权限管理命令

在Linux系统中,每个文件和目录都有访问许可权限,用来确定谁可以通过何种方式对文件和目录进行访问和操作。

文件或目录的访问权限分为只读、只写和可执行三种。以文件为例,只读权限表示只允许读其内容,禁止对其做任何的更改操作;可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者将自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。

有三种不同类型的用户可对文件或目录进行访问:文件所有者、同组用户和其他用户。所有者一般是文件的创建者,可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。

每个文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls-1命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:

$ls-1sobsrc.tgz

-rw-r--r--1rootroot483997Jul1517:31sobsrc.tgz横线代表空许可,r代表只读,w代表写,x代表可执行。

注意:这里有10个位置。第一个字符指定文件类型。通常,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示一个目录。

例如:-rw-r--r--(对应:普通文件文件主组用户其他用户)表示文件sobsrc.tgz的访问权限。其中,第一个横线表示sobsrc.tgz是一个普通文件;其余表示sobsrc.tgz的属主有读写权限;与sobsrc.tgz属主同组的用户只有读权限;其他用户也只有读权限。

确定一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令重新设定不同的访问权限,或用chown命令更改某个文件或目录的所有者,用chgrp命令更改某个文件或目录的用户组。

1.chmod命令

功能:用于改变文件或目录的访问权。该命令有两种用法:一种是包含字母和操作符表达的文字设定法;另一种是包含数字的数字设定法。

1)文字设定法

语法:chmod[who][+|-|=][mode]文件名?各选项的含义:

who:操作对象,可以是u、g、o、a字母中的任意一个或它们的组合。其中,u表示“用户(user)”,即文件或目录的所有者;g表示“同组(group)用户”,即与文件属主有相同组ID的所有用户;o表示“其他(others)用户”;a表示“所有(all)用户”,它是系统默认值。

操作符号的含义:+为添加某个权限;-为取消某个权限;=则为赋予给定权限并取消其他所有权限(如果有的话)。

mode:设置权限,可用以下字母的任意组合。r为可读;w为可写;x为可执行;X为只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性;s为在文件执行时把进程的属主或组ID设置为该文件的文件属性。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位;t为保存程序的文本到交换设备上;u为与文件属主拥有一样的权限;g为与和文件属主同组的用户拥有一样的权限;o为与其他用户拥有一样的权限。一个命令行中可给出多个权限方式,期间用逗号隔开。例如:chmodg+r,o+rexample该命令使同组和其他用户对文件example有读权限。

文件名:以空格分开的要改变权限的文件列表,支持通配符。

2)数字设定法

语法:chmod[mode]文件名?

说明:用数字表示属性的含义。0表示没有权限;1表示可执行期限;2表示可写权限;4表示可读权限,然后将其相加。数字属性的格式应该为3个从0到7的八进制数,其顺序是(u)(g)(o)。例如,如果想让某个文件的属主有“读/写”两种权限,则为4(可读)+(可写)=6(读/写)。

2.chgrp命令

功能:改变文件或目录所属的组。

语法:chgrp[选项]groupfilename?

说明:group可以是用户组ID,也可以是/ete/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件组。

各选项的含义:

-R:递归式地改变指定目录及其下的所有子目录和文件的属组。

3.chown命令

功能:更改某个文件或目录的属主和属组。例如,root用户把自己的一个文件复制给用户xu,为了让用户xu能够存取这个文件,root用户应该把该文件的属主设为xu,否则,用户xu无法读取这个文件。

语法:chown[选项]用户或组文件

说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID;组可以是组名或组ID。文件使用空格分开的、要改变权限的文件列表,支持通配符。各选项的含义:

-R:递归式地改变指定目录及其下的所有子目录和文件的拥有者。

-v:显示chown命令所做的工作。6.2.9其他操作命令

1.echo命令

功能:在显示器上显示一段文字,以作为提示。

语法:echo[-n]字符串

说明:选项n表示输出文字后不换行;字符串可以加引号,也可以不加引号。

用echo命令输出加引号的字符串时,将字符串原样输出;输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。

2.cal命令

功能:显示某年某月的日历。

语法:cal[选项][月[年]]

各选项含义:

-j:显示给定月中的每一天是一年中的第几天(从1月1日算起)。

-y:显示整年的日历。

3.Date命令

功能:显示和设置系统日期和时间。

语法:date[选项]显示时间格式(以+开头,后面接格式)

各选项的含义:

-ddatestr,--datedatestr:显示由datestr描述的日期。

-sdatestr,--setdatestr:设置datestr描述的日期。

-u,--universal:显示或设置通用时间。时间域:

%H:小时(00..23)。

%M:分(00..59)。

%p:显示出AM或PM。

%r:时间(hh:mm:ssAM或PM),12小时制。

%S:秒(00..59)。

%T:时间(24小时制)(hh:mm:ss)。

%X:显示时间的格式(%H:%M:%S)。

%c:日期和时间(MonNov814:12:46CST1999)。

%D:日期(mm/dd/yy)。

注意:只有超级用户才有权限使用date命令设置时间,一般用户只能用date命令显示时间。

4.clear命令

功能:清除屏幕上的信息。清屏后,提示符移动到屏幕左上角。 6.3嵌入式Linux开发环境的构建

6.3.1操作系统的安装

建立嵌入式Linux开发环境,一般有三种办法:一是在Windows系统下安装虚拟机,再在虚拟机中安装Liunux操作系统;二是安装基于PCWindows操作系统下的CYGWIN;三是直接安装Liunux操作系统。

1.系统安装程序的获取

Linux系统是一个开源操作系统,它有很多版本。本节采用的Linux是Fedora11.0版本,它是红帽子Linux的最新升级版本。

RedhatLinux最新操作系统Fedora原版的安装程序可以在很多网站上获得,如红联()网站就提供下载连接,具体地址为/viewarticle

.php?ip=13067。

在这个页面上,提供的镜像文件大多为CD-ROM镜像,只有面向64位CPU的镜像文件中提供DVD类型的镜像文件。用户下载这些镜像文件用WinRAR解压后,可以用Nero等刻录程序到光盘上。

2.对开发PC的性能要求

RedhatLinuxFedora11.0安装后占用空间在2.4~5 GB之间,还要安装ARM-Linux开发软件,因此对开发计算机的硬盘空间要求较大。基本要求如下:

CPU:高于奔腾500MHz,推荐高于赛扬1.7GHz。

内存:大于128MB,推荐使用256MB以上。

硬盘:大于10GB,推荐使用40GB以上。

3. Liunux操作系统的安装

Linux操作系统可以和Windows操作系统共存于PC中。当一个PC安装这两种操作系统时,一般先安装Windows操作系统,再安装Linux系统,两系统互相不影响。在安装前,首先要空出10GB以上的磁盘空间,并且不进行分区。

在已有的WindowsXP操作系统下安装Linux系统,既可从光盘安装,又可由硬盘安装。其中从光盘安装简单些。

4.Linux系统运行

系统安装后,重新启动计算机,会有一个Grub引导程序界面,默认情况下选择用Linux启动。若希望用Windows启动,则在Grub启动后5秒内按任意键,然后选择Other项,即可进入Windows启动。

Linux启动后,按提示输入用户名root和相应的密码进入Linux系统,从运行界面可看到Linux安装成功。6.3.2开发环境的配置

系统安装好之后,需要配置好开发环境才能与开发板进行通信。一般情况下,开发主机与开发板之间的通信端口有三种:串口、USB口和网口。用户可根据自己开发时使用的端口相应地配置。这里介绍串口和网口的配置方法。

1.串口配置方法

Linux下配置串口的程序是Minicom,它类似于Windows中的“超级终端”。配置的过程如下:

1)运行Minicom

单击系统菜单【应用程序】,选择子菜单【附件】,打开【终端】程序,输入minicom-s。此时,“终端”程序的显示窗口列出Minicom的配置菜单。

2)配置参数

选择Serialportsetup,进入串口配置选项;然后选择A,设置SerialDevice为/dev/ttyS0,表示串口1(如果有多个串口可以根据自己具体的情况进行选择,一般PC只有一个串口,就是COM1,即ttyS0);再选择E,设置波特率为115200;最后选择F,设置HardwareFlowControl模式No。完成后按【Enter】键,回退到上一层菜单。

3)保存

在Minicom的配置菜单中选择Savesetupasdf1,保存刚才的设置即可。

2.网口配置方法

使用网口进行数据传输需要配置网口的传输协议,在Linux下用于网传输协议的主要有NFS和TFTP。

1) NFS

NFS是由SUN公司发展的分散式文件系统。它可以让用户通过连接的网络将其他电脑所共享的文件目录映射到自己的系统下。

首先单击系统菜单【应用程序】,选择子菜单【附件】,打开【终端】程序,输入setup进入设置程序,在按要求进行配置。

2) TFTP

TFTP是一个传输文件的简单协议,它基于UDP协议实现,但有些TFTP协议也是基于其他传输协议完成。

因为TFTP是由超级守护进程xinetd运行的,所以首先要确认系统安装了xinetd。如果没有安装,要到Re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论