版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 太原理工大学毕业设计(论文)用纸 前言当我第一次开始使用突然面对各种UNIX程序,会有很多的问题,如“功能”是什么,“我如何使用它们”。其实linux中的shell很简单,下面我们简单介绍一下:Linux shell提供了用户与内核进行交互的机制,是操作系统的命令行界面。它的主要工作是分析用户的指令并调度内核执行。内核的执行是及其小心的,人为干预是很危险的,因此shell提供了一个安全的操作内核的途径。直观地来看shell是一种解释命令的程序,它可以将用户输入的贴近人类语言的表述解释给内核处理。不但如此,Shell还有自己语法并以此用于对命令的编辑,用户可以利用它写出由shell命令组成的脚
2、本。在编写过程中你会爱发现,Shell编程语言与很多其他的编程语言风格相似,例如它也有c语言一样的循环逻辑和分支控制等,用此编程语言编写的Shell脚本程序能达到与其他程序一样的效果。 早期的linux只有内核和命令行,为了方便用户的使用,linux又提供了与windows相似的友好的可视化图形界面,使得操作变得更加简单方便。这就是X windows。它像windows一样为用户提供窗口、图标以及菜单等显示部件。有了它,用户就可以在linux环境中从众多的代码行中解脱出来,利用鼠标就可快速对内核和环境进行配置。Windows系统内核自带图形界面,但是linux内核不自带界面,因此在linux领
3、域中,图形界面主要靠第三方公司进行开发,KDE和GNOME都是很流行的窗口管理器工具。当然shell就实现了这一点,利用它可以对系统进行文件管理和事务管理等等的功能。每一位linux用户都可以拥有属于自己的或者特制的shell版本。这样可以使得他们的特定需求得到满足。与开发linux相似,人们在开发了多种版本linux的同时,也开发了很多版本的shell。比如:Bourne Shell:贝尔实验室在1977年底发布的。BASH:Bourne-Again SHell的缩写,是GNU操作系统上默认的shell。Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne
4、Shell兼容。C Shell:是SUN公司Shell的BSD版本。作为一名以UNIX/Linux系统为主进行C语言程序开发的大学生,我对shell的强大功能和编写技巧有所体会。本论文详细介绍了shell是怎么样工作和组成的,对shell设计做一些简单的研究。虽然达不到原版Linux系统那样的效果,但是却有自己的独到的见解。可以供广大爱好者参考。1 绪论Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多 HYPERLINK /view/2089.htm t _blank CPU的操作系统。它能运行主要的UNIX工具软件、应用程
5、序和网络协议。它支持32位和64位 HYPERLINK /view/25278.htm t _blank 硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux操作系统诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。Linux存在着许多不同的Linux版本,但它们都使用了 HYPERLINK /view/573460.htm t _blank Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、 HYPERLINK /view/74538.htm t _blank 平板电脑、 HYPERLINK /view/136
6、0.htm t _blank 路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Shell是 HYPERLINK /view/25302.htm t _blank 系统的 HYPERLINK /view/362528.htm t _blank 用户界面,提供了用户与 HYPERLINK /view/1366.htm t _blank 内核进行交互操作的一种 HYPERLINK /view/159864.htm t _blank
7、 接口。它接收用户输入的命令并把它送入 HYPERLINK /view/1366.htm t _blank 内核去执行。实际上Shell是一个命令 HYPERLINK /view/592974.htm t _blank 解释器,它解释由用户输入的命令并且把它们送到 HYPERLINK /view/1366.htm t _blank 内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有 HYPERLINK /view/552876.htm t _blank 循环结构和分支控制结构等,用这种编
8、程语言编写的Shell程序与其他 HYPERLINK /view/330120.htm t _blank 应用程序具有同样的效果。1.1 Shell的使用不论是哪一种 HYPERLINK /view/849.htm t _blank Shell,它最主要的功用都是解译使用者在命令列提示符号下输入的指令。Shell 语法分析命令列,把它分解成以空白区分开的符号(token),在此空白包括了跳位键(tab)、空白和换行(New Line)。如果这些字包含了metacharacter,shell 将会评估(evaluate)它们的正确用法。另外,shell 还管理档案输入输出及幕后处理(backgr
9、ound processing)。在处理命令列之后,shell 会寻找命令并开始执行它们。Shell 的另一个重要功用是提供个人化的使用者环境,这通常在 shell 的初始化档案中完成(.profile、.login、.cshrc、.tcshrc 等等)。这些档案包括了设定终端机键盘和定义窗口的特征;设定 HYPERLINK /view/296689.htm t _blank 变量,定义搜寻 HYPERLINK /view/59642.htm t _blank 路径、权限、提示符号和终端机类型;以及设定特殊 HYPERLINK /view/330120.htm t _blank 应用程序所需要
10、的变量,例如窗口、文字处理程序、及程序语言的链接库。Korn shell 和 C shell 加强了个别化的能力:增加历程、别名、和内建变量集以避免使用者误杀档案、不慎签出、并在当工作完成时通知使用者。Shell 也能当解译性的程序语言(interpreted programing language)。Shell 程序,通常叫做命令文件,它由列在档案内的命令所构成。此程序在 HYPERLINK /view/499644.htm t _blank 编辑器中编辑(虽然也可以直接在命令列下写作程序,online scripting),由 UN 命令和基本的程序结构,例如变量的指定、测试条件、和循环所
11、构成。您不需要编译 shell 命令档。Shell 本身会解译命令档中的每一行,就如同由键盘输入一样。shell 负责解译命令,而使用者则必须了解这些命令能做什么。这本书的索引列出了一些有用的命令和它们的使用方法。1.2 嵌入式linux嵌入式 HYPERLINK /view/1634.htm t _blank linux是将日益流行的Linux HYPERLINK /view/880.htm t _blank 操作系统进行裁剪修改,使之能在 HYPERLINK /view/4353330.htm t _blank 嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet
12、上无限的 HYPERLINK /view/1708.htm t _blank 开放源代码资源,又具有 HYPERLINK /view/18554.htm t _blank 嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由 HYPERLINK /view/37.htm t _blank 软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多 HYPERLINK /view/7886.htm t _blank 应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_Linux Hardh
13、at Linux 等嵌入式Linux支持,实时性能稳定性好安全性好。如果分别让10位 HYPERLINK /view/25007.htm t _blank 工程师给出 HYPERLINK /view/6115.htm t _blank 嵌入式系统的定义,将得到10个不同的答案。一般来说,大部分的 HYPERLINK /view/6115.htm t _blank 嵌入式系统执行特定的任务。我们假定最简单的 HYPERLINK /view/6115.htm t _blank 嵌入式系统包括输入/输出功能,以及一些控制逻辑,该系统基于它的配置执行某些类型的功能。按照这个标准,可以认为一个包含实现控
14、制逻辑74123计数器以及一个状态是一个 HYPERLINK /view/6115.htm t _blank 嵌入式系统。也许可以补充说,该系统必须可通过 HYPERLINK /view/87682.htm t _blank 存储在 HYPERLINK /view/33738.htm t _blank 固件中的 HYPERLINK /view/37.htm t _blank 软件进行 HYPERLINK /view/3281.htm t _blank 编程。这个新的 HYPERLINK /view/6115.htm t _blank 嵌入式系统定义包括输入/输出(I/O),以及存储在系统 HY
15、PERLINK /view/33738.htm t _blank 固件中的控制逻辑。一个带有鼠标、键盘、网络连接并运行 HYPERLINK /view/185360.htm t _blank 图形用户界面(GUI,graphical user interface) HYPERLINK /view/1462677.htm t _blank 多任务操作系统的 HYPERLINK /view/79807.htm t _blank 桌面计算机显然满足这些要求,但我们能认为它是一个 HYPERLINK /view/6115.htm t _blank 嵌入式系统吗?如果 HYPERLINK /view/7
16、9807.htm t _blank 桌面计算机不是一个 HYPERLINK /view/6115.htm t _blank 嵌入式系统,那么手持设备呢?它们有I/O功能,可以运行存储在 HYPERLINK /view/33738.htm t _blank 固件中的控制逻辑。有人说, HYPERLINK /view/79807.htm t _blank 桌面计算机和手持设备都有 HYPERLINK /view/1472448.htm t _blank 通用计算机设备,可以运行 HYPERLINK /view/37.htm t _blank 软件来执行许多不同的任务,与之不同的是, HYPERLI
17、NK /view/6115.htm t _blank 嵌入式系统(例如,洗碗机控制器或飞行导航系统)主要是为特定任务而设计的。这种特定的功能限定使 HYPERLINK /view/2778983.htm t _blank 嵌入式设备有功能上的唯一性。如果是这样,为什么一些 HYPERLINK /view/2632427.htm t _blank 嵌入式系统设计成具有附加的功能,如存储在非易失性 HYPERLINK /view/87697.htm t _blank 存储器中的程序,并且具有运行可以完成原始设计范围之外的任务的 HYPERLINK /view/1462677.htm t _blan
18、k 多任务操作系统的能力呢?在过去,区分 HYPERLINK /view/6115.htm t _blank 嵌入式系统和 HYPERLINK /view/1472448.htm t _blank 通用计算机比简单得多。例如,可以很容易地区分出一个基于8051的T1分幅卡 HYPERLINK /view/6115.htm t _blank 嵌入式系统和一台Sun UNIX HYPERLINK /view/7977.htm t _blank 工作站。从功能方面很难区分一台Sun工作站和一个包含PowerPC以及32MB内存和16MB闪存的机顶盒。这样的机顶盒可以运行带GUI的 HYPERLINK
19、 /view/1462677.htm t _blank 多任务操作系统,可现场升级,可以同时运行多个程序(如 HYPERLINK /view/1266797.htm t _blank 视频控制器、数字录像和Java HYPERLINK /view/1132.htm t _blank 虚拟机),还可以进行安全的因特网在线交易。很难判断这种机顶盒是否是一个 HYPERLINK /view/6115.htm t _blank 嵌入式系统。显然,硬件性能的提升和价格的下降使 HYPERLINK /view/1472448.htm t _blank 通用计算机和 HYPERLINK /view/6115
20、.htm t _blank 嵌入式系统之间的界限变得很模糊,技术的进步使得我们很难定义什么是嵌入式。1.3 嵌入式linux应用特点嵌入式Linux的应用领域非常广泛,主要的应用领域有信息家电、PDA 、机顶盒、Digital Telephone、Answering Machine、Screen Phone 、数据网络、Ethernet Switches、Router、Bridge、Hub、Remote access servers、ATM、Frame relay 、远程通信、医疗电子、交通运输计算机外设、工业控制、航空航天领域等。就是利用Linux其自身的许多特点,把它应用到 HYPERLI
21、NK /view/6115.htm t _blank 嵌入式系统里。Linux做嵌入式的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;其次,Linux的 HYPERLINK /view/1366.htm t _blank 内核小、效率高,内核的更新速度很快,linux是可以定制的,其系统内核最小只有约134KB。第三,Linux是免费的OS,在价格上极具竞争力。 Linux还有着 HYPERLINK /view/18554.htm t _blank 嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多
22、种硬件平台,是一个跨平台的系统。到目前为止,它可以支持二三十种CPU。而且性能稳定,裁剪性很好,开发和使用都很容易。很多CPU包括家电业芯片,都开始做Linux的平台移植工作。移植的速度远远超过Java的开发环境。也就是说,如果今天用Linux环境开发产品,那么将来换CPU就不会遇到困扰。同时, HYPERLINK /view/573460.htm t _blank Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的 HYPERLINK /view/7649.htm t _blank TCP/IP协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及 HYPERLI
23、NK /view/5030.htm t _blank 无线网络,Toker ring( HYPERLINK /view/115033.htm t _blank 令牌环网)、光纤甚至卫星的支持。所以Linux很适于做信息家电的开发。还有使用Linux为的是来开发无线连接产品的开发者越来越多。Linux在快速增长的无线连接应用主场中有一个非常重要的优势,就是有足够快的开发速度。这是因为LInux有很多工具,并且Linux为众多程序员所熟悉。因此,我们要在 HYPERLINK /view/6115.htm t _blank 嵌入式系统中使用 HYPERLINK /view/46577.htm t _
24、blank Linux操作系统。Linux的大小适合 HYPERLINK /view/18554.htm t _blank 嵌入式操作系统Linux固有的模块性,适应性和可配置性,使得这很容易做到。另外,Linux源码的实用性和成千上万的程序员热切期望它用于无数的嵌入式应用软件中,导致很多嵌入式Linux的出现,包括: HYPERLINK /view/1737837.htm t _blank Embedix,ETLinux,LEM,Linux Router Project,LOAF,uCLinux,muLinux,ThinLinux,FirePlug,Linux和PizzaBox Linux相
25、比微软,Linux的图形界面发展很快,像GNOME,KDE,UTITY等都是很优秀的 HYPERLINK /view/7348571.htm t _blank 桌面管理器,并且其背后有着众多的社团支持,可定制性强,已经在Unix和Linux世界普及开来。1.4 发展前景有巨大的市场前景和商业机会,出现了大量的专业公司比如 HYPERLINK /view/1210860.htm t _blank MontavistaLineo Emi等,有行业协会如Embedded Linux Consortum等,得到世界著名计算机公司和OEM板级厂商的支持,例如IBM Motorola Intel等。传统的
26、 HYPERLINK /view/6115.htm t _blank 嵌入式系统厂商也采用了Linux策略,如Lynxworks Windriver QNX等,还有Internet上的大量嵌入式Linux爱好者的支持。嵌入式Linux支持几乎所有的嵌入式CPU和被移植到几乎所有的嵌入式OEM板。2 Linux Shell与嵌入式简介2.1 shell 的定义Shell是一种专用于用户与操作系统内核交互运行的脚本程序,如图1-1所示,shell是计算机使用者与UNIX/linux系统内核进行交流的渠道。内核是操作系统的核心,涵盖资源管理、进程调度等众多内容。内核在开机的时候由bootloader
27、引导时载入内存,关机之前一直由它管理计算机资源。它的主要功能是进程管理、物理资源管理、文件处理和计算机间及进程间通信等。内核始终运行在内存上,其余的应用程序保存在磁盘上。当用户打开这些应用时,应用程序便统统由内核加载到内存中运行。当用户关闭应用时,便相当于对程序发送信号,内核关闭应用并且进行资源回收。Shell伴随着用户的登陆而启动。用户在终端中输入shell指令。随后便可以解释执行。 图2-1 shell的模型Shell是在用户登陆成功后便开始运行的,这时候它会提醒用户开始输入命令并将其进行处理。用户输入完成口令时,Shell先用词法分析器对其进行词法分析、分割。再将分割处理后的口令交由内核
28、来进行完成。比如管道、重定向、通配符等。内核会逐一匹配,完成任务。广大的linux使用者均是通过在终端的键入口令交由shell处理来达成与内核的交互。用户在输入一些相似的命令的时候,肯定很乐意看到这些工作可以由计算机自行完成。因此人们发明了shell脚本。用一个文件涵盖所有的命令,这就是shell脚本,随后运行这个文件,就可实现shell命令的自动执行。它的功能相当于系统批处理文件,用一个文件包含所有的shell指令,然后通过执行便可完成所有工作。Shell脚本除了这些功能以外还提供了强大的逻辑处理语句,比如判断、循环、匹配等等。这中逻辑处理与其他的程序设计语言都是相通的,因此对于初学者来说就
29、显得很简单。但是,shell的使用并不是懂了语法后就可以进行的,它需要用户对操作系统有一定的了解。要了解内核的工作方式,系统提供了grep、sed和awk等工具。学会使用这些工具对处理命令输出和输入文件时会发挥出极大的作用。学会使用shell脚本的编写执行后就可以把它看做是一种编程语言了,而内核就是它的编译器。2.1.1 UNIX Shell总的来说市场上绝大部分unix内核都支持这三种主流的shell。在运行的时候虽然他们的功能非常相似,但是毕竟是三种不同的脚本语言,因此语法有区别,运行效率也有很大不同。首先来看Bourne shell。它是标准的unix shell。在系统管理领域的使用尤
30、为广泛。它提供了一种简洁、高效、快速的shell脚本编写方式。在该版本shell中管理员常以root身份进行操作。它的命令提示符是$。然后来看C shell。它是由美国加州大学伯克利分校在上世纪八十年代开发的一个版本,开发者为Bill Joy。他的目的是为了让用户更容易地使用交互性shell。因此他加入了很多友好的功能,比如命令历史查询、作业控制等新功能。而且由于效率更高,因此广受用户喜爱。它的默认命令提示符是%。最后来看Korn shell。Korn shell的开发是基于了当时的很有趣的一个现象:相当长的一段时间里。人们用Bourne shell做开发,用C shell做交互。因此开发者结
31、合了这两个版本共有的优点,最终贝尔实验室的大卫.科恩在上个世纪八十年代末开发出了Korn shell。Korn shell几乎完全向上兼容Bourne shell,所以老的Bourne程序在Kore shell中运行良好。Novell公司开发了一个Korn shell的新版本(以前的版本为ksh93),支持在桌面上进行X window编程。dtksh.Dtksh是大多数UNIX系统硬件厂商所支持的通用桌面环境(Common Desktop Environment,CDE)的标准部件,Korn shell的公共域版本(/stable/shells/pdksh)称为psksh,这种版本也在包括li
32、nux在内的多种平台上可用。用于windows的Korn shell可以在/uwin上找到。它的默认命令提示符是$。2.1.2 Linux Shell通常,由于很多linux版本已经包含shell了,因此用户安装完linux之后立马就可以使用GNU的shell和其他工具,即非标准unix shell和工具。Linux默认的shell版本是bash。这种版本是在Bource shell的基础上进行了进一步的开发而生成的加强版。它扩展了很多的功能,不仅体现在代码的编写上,用户在使用的过程中能够根据自己的需要独立剪裁工作环境,甚至可以建立快捷键完成一些常用操作。由于种种优势,使得bash当之无愧地成
33、为了当前linux用户使用最普遍的shell版本。可以到官方网站“/software/bash/bash.html”下载。它的默认命令提示符是$。TC shell也是广大linux用户常用的一种shell版本。作为C shell在linux系统中的一个兼容性分支,它已经被注入了新的血液,功能性也大大增强。下载地址为 HYPERLINK http:/www.tcsh.rog/MostRecentRelease www.tcsh.rog/MostRecentRelease。 它的默认命令提示符是。另一种linux shell版本名为Z shell,它结合了前三个版本的很多功能。还有一种名为Publ
34、ic Domain的shell,这种shell是Korn shell的克隆版本,使用时需要向美国电报电话付费,即它的发行商。它的默认提示符是$。若想了解自己所使用的linux有几种版本的shell,可以查看/etc/shell目录下的文件。例如在终端中运行如下命令:$cat /etc/shell/bin/bash/bin/sh/bin/ash/bin/bsh/bin/tcsh/bin/csh/bin/ksh/bin/zsh在linux系统中,/ect/shell目录中的文件便是当前环境中所有可用的shell版本。2.2 shell的历史Bournce shell是一种编程语言,作为一门语言来讲
35、,它的参照模板是Algol,即当时的很流行的程序设计语言。Bourne shell是在1977年底被美国电话电报公司所推出,开发者用自己的名字为其命名。二者之间有很强的联系性,语法类似,功能也大致相同。在实际的运用过程中,bourne shell主要被用于操作系统(即当时的unix)自动化运行及管理进程,其功能效果与十分强大,因而风靡一时。而且其操作简单,运行高效,备受广大用户的欢迎,但它也不是没有弱点的,最大的缺点便是交互性有所欠缺,缺乏如命令历史、作业控制能相关的友好功能。随后,在二十世纪八十年代早期,加州伯克利大学由Bill Joy率领的开发团队为了改善当前所广泛使用的Bourne sh
36、ell在交互性上的不足,开发了一款新型的shell,即C shell。与bourne相比,它的交互性更强,更加友好,比如增加了命令行历史功能,但是这是以牺牲运行效率为代价的,不论是个人电脑还是高端服务器,它的运行都比较缓慢。当C shell被开发出来并在市场上存在了一段时间之后,用户在shell的使用方面有了更加明确的选择,不过这激发了人们越来越多的关于二者之间哪一个更好用的讨论。Bourne的效率更高,但是交互性有限,C shell使用更容易,但是运行缓慢。在这种背景下,开发者在C shell问世几年后与1986年推出了一个新版的shell版本,即korn shell,这次仍然是美国电话电报
37、公司发行的。它是在bourne shell的基础上对其底层代码进行了深度发掘,并且兼容性更好,即能适应多种环境和平台,而不是仅限于unix系统。类似于对前辈的拓展吧。于是很自然地,这款设计更加人性化且运行高效的新版本shell成为了广大unix的首选,在其发行的众多版本中,1988年发行的堪称经典。1988年,pdksh发布,它是 Pubilc Domain Korn Shell的简称。这是一款Korn shell的克隆版本。与其母版一样,Pdksh也有极强的适应性和生存能力,适合多种环境,多种操作系统之间可以共享指令代码,符合POSIX标准。Z shell预期一样也是korn shell的克
38、隆版本。最后,着重提一下bash,这也是如今我们大部分用户(包括我在内)正在使用的shell。bash是Bourne Again shell的简写,在1988年发行。实际上就是对Bourne shell的一个改进版吧。其功能更加完善,交互性也十分成熟,成为了linux的默认shell。它在变量、文件、函数、运算方面有独到的见解。2.3 shell的作用 HYPERLINK C:UsersAdministratorDesktophtmlssentence_detail170.htm t right Shell的一项主要功能是在交互方式下解释从命令行输入的命令,shell解析命令行,将其分解为词(
39、也称token),词之间由空白分隔, HYPERLINK C:UsersAdministratorDesktophtmlssentence_detail171.htm t right 空白由制表符、空格键或换行组成,如果词中有特殊的元字符,shell会对其进行替换。 HYPERLINK C:UsersAdministratorDesktophtmlssentence_detail172.htm t right Shell处理文件I/O和后台进程。对命令行的处理结束后,shell搜索命令并开始运行它。 HYPERLINK C:UsersAdministratorDesktophtmlssente
40、nce_detail173.htm t right Shell的另一项重要功能是定制用户环境,这通常在shell的初始化文件中完成。 HYPERLINK C:UsersAdministratorDesktophtmlssentence_detail174.htm t right 初始化文件中有很多定义,包括设置终端键和窗口属性,设置用来定义搜索路径、权限、提示符和终端类型的变量,设置特定应用程序所需的变量,如窗口、字处理程序和编辑语言的库等。 HYPERLINK C:UsersAdministratorDesktophtmlssentence_detail176.htm t right Kor
41、n/Bash shell和C/TC shell还提供了更多的定制功能:历史添加、别名、设置内置变量防止用户破坏文件或无意中退出,通知用户作业完成。 HYPERLINK C:UsersAdministratorDesktophtmlssentence_detail178.htm t right Shell还能用作解释性的编程语言。 HYPERLINK C:UsersAdministratorDesktophtmlssentence_detail179.htm t right Shell程序(也称shell脚本)由文件中的一列命令组成。 HYPERLINK C:UsersAdministrator
42、Desktophtmlssentence_detail180.htm t right Shell程序用编辑器生成(也可以在命令行上直接输入脚本)。 HYPERLINK C:UsersAdministratorDesktophtmlssentence_detail181.htm t right 他们由UNIX命令组成,命令之间插入一些基本的程序结构,如变量赋值、条件测试和循环。 HYPERLINK C:UsersAdministratorDesktophtmlssentence_detail182.htm t right Shell脚本不需要编译。Shell会逐行解释脚本,就好像它是从键盘输入一
43、样。 HYPERLINK C:UsersAdministratorDesktophtmlssentence_detail183.htm t right Shell负责解释命令,因此,用户需要了解可用的命令有哪些。2.4 shell的职责Shell负责确保用户在命令提示符后输入的命令被正确执行。其职责包括:1)读取输入并解析命令行替换特殊字符,比如通配符和历史命令符。2)设置管道、重定向和后台处理。3)处理信号。4)程序执行的相关设置。2.5 嵌入式简介定义:IEEE(Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对
44、 HYPERLINK /view/6115.htm t _blank 嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。原文为:Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)。 HYPERLINK /view/6115.htm t _blank 嵌入式系统是一种专用的 HYPERLINK /view/1130583.htm t _blank 计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的 HYPERLINK /v
45、iew/1258964.htm t _blank 嵌入式处理器控制板。事实上,所有带有数字接口的设备,如 HYPERLINK /subview/5663/5063576.htm t _blank 手表、微波炉、 HYPERLINK /view/111680.htm t _blank 录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个 HYPERLINK /subview/17674/17674.htm t _blank 程序实现整个控制逻辑。从 HYPERLINK /view/5314991.htm t _blank 应用对象上加以定义,从右图中可以看
46、出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。国内普遍认同的 HYPERLINK /view/6115.htm t _blank 嵌入式系统定义为:以应用为中心,以 HYPERLINK /view/62176.htm t _blank 计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。企业嵌入式开发。嵌入式设计是企业电子产品设计的重要组成,目前国内外中小型企业内部都建立了自己的嵌入式开发团队。团队所需的人员职位构成包括:(1)系统设计工程师 (2)硬件工程师 (3)底层驱动工程师 (4)Linux系统工程师 (5)应用设计工程
47、师等。对于企业而言,嵌入式开发越来越朝着敏捷开发、专业操作的方向发展。国内也逐步涌现出一些专门定制开发电子产品、进行嵌入式外包的专业公司。对于企业而言,随时关注嵌入式承载硬件的发展尤其重要,尤其是ARM、FPGA、MCU的结构、工艺、速度正在经历着不断的变革。一个嵌入式系统装置一般都由 HYPERLINK /view/4353330.htm t _blank 嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和 HYPERLINK /view/7886.htm t _blank 应用软件层组成。执行装置也称为被控对象,它可以接受 HYPERLI
48、NK /view/4353330.htm t _blank 嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。执行装置可以很简单,如手机上的一个微小型的电机,当手机处于震动接收状态时打开;也可以很复杂,如SONY 智能 HYPERLINK /view/430307.htm t _blank 机器狗,上面集成了多个微小型控制电机和多种传感器,从而可以执行各种复杂的动作和感受各种状态信息。硬件层中包含 HYPERLINK /view/27055.htm t _blank 嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一片
49、HYPERLINK /view/1258964.htm t _blank 嵌入式处理器基础上添加电源电路、 HYPERLINK /view/2246970.htm t _blank 时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在ROM中。 HYPERLINK /view/25278.htm t _blank 硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或 HYPERLINK /view/1730227.htm t _blank 板级支持包(Board Support Package,BSP),它
50、将系统上层软件与底层硬件分离开来,使系统的底层 HYPERLINK /view/1048.htm t _blank 驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP 层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。BSP具有以下两个特点。硬件相关性:因为 HYPERLINK /view/2079532.htm t _blank 嵌入式实时系统的硬件环境具有应用相关性,而作为上层软 件与硬件平台之间的接口,BSP需要为操作系统提供操作和控制具体硬件的方法。操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不
51、同的操作系统具有特定的硬件接口形式。实际上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。设计一个完整的BSP需要完成两部分工作: HYPERLINK /view/6115.htm t _blank 嵌入式系统的硬件初始化以及BSP功能,设计硬件相关的 HYPERLINK /view/547398.htm t _blank 设备驱动。特点:1)可裁剪性。支持开放性和可伸缩性的 HYPERLINK /view/1188494.htm t _blank 体系结构。2)强实时性。EOS实时性一般较强,可用于各种设备控制中。3)统一的接口。提供设备统一的
52、驱动接口。4)操作方便、简单、提供友好的图形GUI和图形界面,追求易学易用。提供强大的网络功能,支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP HYPERLINK /view/63557.htm t _blank 协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。5)强稳定性,弱 HYPERLINK /view/4889540.htm t _blank 交互性。 HYPERLINK /view/6115.htm t _blank 嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。 HYPERLINK /view/18554.
53、htm t _blank 嵌入式操作系统的 HYPERLINK /view/1309799.htm t _blank 用户接口一般不提供操作命令,它通过系统的调用命令向 HYPERLINK /view/1976812.htm t _blank 用户程序提供服务。6)固化代码。在 HYPERLINK /view/6115.htm t _blank 嵌入式系统中, HYPERLINK /view/18554.htm t _blank 嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。7)更好的硬件适应性,也就是良好的移植性。8)嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体
54、产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。文件系统: HYPERLINK /view/4710402.htm t _blank 通用操作系统的文件系统通常具有以下功能:提供用户对文件操作的命令。提供用户共享文件的机制。管理文件的存储介质。提供文件的存取控制机制,保障文件及文件系统的安全性。提供文件及文件系统的备份和恢复功能。提供对文件的加密和解密功能。嵌入式文件系统比较简单,主要提供文件存储、检索和更新等功能,一般不提供保护和加密等安全机制。它以 HYPERLINK /view/47173.htm t _blank 系统调用和命令方式提供文件的各种操作,主要有:设置、修
55、改对文件和目录的存取权限。提供建立、修改、改变和删除目录等服务。提供创建、打开、读写、关闭和撤销文件等服务。文件系统的特点1)兼容性。嵌入式文件系统通常支持几种标准的文件系统,如FAT32、JFFS2、YAFFS等。2) HYPERLINK /view/1411781.htm t _blank 实时文件系统。除支持标准的文件系统外,为提高实时性,有些嵌入式文件系统还支持自定义的 HYPERLINK /view/1411781.htm t _blank 实时文件系统,这些文件系统一般采用连续的方式存储文件。3)可裁剪、可配置。根据 HYPERLINK /view/6115.htm t _blan
56、k 嵌入式系统的要求选择所需的文件系统,选择所需的存储介质,配置可同时打开的最大文件数等。4)支持多种存储设备。 HYPERLINK /view/6115.htm t _blank 嵌入式系统的外存形式多样了,嵌入式文件系统需方便的挂接不同存储设备的驱动程序,具有灵活的设备管理能力。同时根据不同外部 HYPERLINK /view/87697.htm t _blank 存储器的特点,嵌入式文件系统还需要考虑其性能、寿命等因素,发挥不同外存的优势,提高存储设备的可靠性和使用性。2.6 安卓与linux安卓Android这个原本陌生的词,如今已经无人不知,无人不晓,不知道什么时候起,安卓已经是智能
57、手机,平板电脑首选的操作系统,而事实上,安卓到底是不是一个操作系统呢?安卓开发与嵌入式开发之间又存在什么样的关系呢?我们来尝试解开这些疑问,了解安卓与嵌入式之间的关系。实际上,Android安卓并不是一个操作系统,而是一个需要Linux平台来支撑其运行的大型功能包,或者说是一个平台,一个更易于满足人们对移动互联应用需要的功能集成平台。这个平台由Google公司开发,维护并不断升级,由于其开源的特性,使得广大移动互联产品厂商更愿意用这个平台作为其自己产品的应用平台,并更容易对其进行修改、完善和二次开发。而谷歌公司在开发安卓的时候,就考虑到了其平台上应用软件开发的难易程度,为了吸引更多的软件开发爱
58、好者在谷歌开发的安卓平台上尽情施展自己的想象力,开发出更多丰富易用的应用软件,Google选择了Java语言作为Android平台应用软件开发的首选语言,因为JAVA语言更易学,开发周期更短,并且熟悉JAVA的人更多,即便没有编程开发经验的人,只需月余便可掌握java开发,更何况大量高级研发程序员,如果有兴趣只需一周便可用java语言上手开发安卓软件,这极大的降低了android平台上应用软件开发的门槛,从而为迅速丰富谷歌市场、安卓市场提供了可能。日前,谷歌公司已经将安卓开发集成环境打包,只需一键安装,便可进行安卓应用程序开发,这也进一步说明了,Google希望让安卓开发的门槛越低越好,越多的
59、人能够进行安卓应用软件开发,谷歌的安卓系统就越有长久的生命力,避免sybain一样的命运!那么,到底安卓开发是不是嵌入式开发呢?安卓开发语言首选是java,但如果想在安卓平台开发大型的游戏、地图、导航、通讯等软件,还是需要更高级的开发语言,如C、C+,因为安卓是运行在Linux系统上面的一个应用平台,因此,在Linux系统层面,用更高级的编程语言当然可以开发出更有效率的大型应用程序。掌握JAVA语言,可以开发安卓系统平台上大部分简单的应用程序,但是如果想真正开发一个大型安卓平台的项目,恐怕,还是要更高级的研发工程师,而这个研发工程师必须掌握Linux系统下C、C+等程序设计语言,并且精通系统编
60、程技术,网络通讯技术等嵌入式领域核心技术,因此,安卓开发其实如果真的要走向更深层次,是必须要成为嵌入式开发工程师,才能够胜任的。Android从诞生到现在也不过3年的时间,但是也就是在这短短的3年内Android创造了一个迅速被人们知晓并追捧的奇迹。2007 年11 月5 日,Google 与其他33 家手机制造商(包含摩托罗拉、宏达电、三星、LG)、手机晶片供应商、软硬体供应商、电信业者所联合组成的开放手持装置联盟(Open Handset Alliance),发布了名为Android的开放手机软硬体平台。该联盟的成员宣布日后都会在Android平台上开发他们的新的业务。不久之后的2008
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/Z 270-2026安全与韧性业务连续性管理体系业务连续性策略指南
- T/ZJSEE 0048.2-2025虚拟电厂 第2部分:信息交互功能规范
- T/JCJJ 048-2024钢渣资源回收利用一次处理工艺技术要求
- T/CNCA 065-2024二氧化碳深部咸水层地质封存泄漏监测指标体系
- T/CASMES 400-2024质子交换膜水电解制氢阳极催化剂 测试方法
- T/CSMT YB015-2025光电复合电离源飞行时间质谱仪性能测试方法
- GB/T 18591-2026焊接预热温度、道间温度及预热维持温度的测量
- 2027届重庆市沙坪坝区第八中学数学七上期末统考试题含解析
- 2025-2026学年辽宁省凤城市初中政治九年级期末上册自测核心强化题(附答案)
- PHP商城开发面试题及详细答案(实战版)
- GB/Z 270-2026安全与韧性业务连续性管理体系业务连续性策略指南
- 2026年溶聚丁苯橡胶行业洞察报告及未来五至十年发展趋势报告
- 2026年健康科普大赛基础测试题含答案
- 2026年四川省高考历史真题试卷
- 八年级物理上册期末《声现象》6大易错题专项训练
- 2026人教版六年级数学上册活动课《水是生命之源》教案
- 2026年四川省拟任县处级领导干部理论(任职资格考试)全真模拟试题及答案
- 钩吻碱中毒(断肠草中毒)的急诊处理
- 冷轧硅钢及金属制品深加工项目可行性研究报告模板拿地申报
- 制度壁垒经济效应-洞察与解读
- 设备日常维护保养培训课件
评论
0/150
提交评论