




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
太原理工大学毕业设计(论文)用纸iShell设计与实现摘要Shell的开发与使用是linux操作系统日渐普及的产物。而对于微型linuxshell的研究是linux研究的重点。利用微型的shell,不仅可以让用户更容易操作linux,也可以帮助用户理解linux工作原理,同时保护内核的安全性。本文对shell的研究包括对其功能的了解,并实现对shell的列表、管道、输入重定向、输出重定向等命令功能,可以比较全面地认识shell解释器,编写出可以实现的各种功能的具体代码,这样来编写一个简易的linuxshell解释器。在本文中所编写的shell是专门用于嵌入式设备的,在此类设备中,往往存储量小,功耗较低,但是对要求很苛刻,所以有一定的难度。本文的主要内容现先是介绍了一下shell的发展历史、特点和应用前景,紧接着解释shell与嵌入式的关系,大致了解一下linux与安卓在嵌入式开发中的地位。还罗列了shell的开发技术与unix系统编程。最终详细设计了shell的工作原理,并且附上了相关源代码,使得读者有一个大致了解。本系统全程采用C语言与unix系统高级编程开发,由本人独立完成。本系统对嵌入式开发人员操作linux系统内核与文件系统有较大帮助。关键词:Shell;程序;设计与实现;嵌入式太原理工大学毕业设计(论文)用纸iiDesignanddevelopmentoflinuxshellsystemAbstractAccompaniedbythepopularizeofthelinux,moreandmorepeoplearedoingdeeplystudyinit.Thestudyoftheshellinlinuxisthemostimportantthingwhenstudythelinux.Andhowtostudy?Itmainlyincludestheunderstandofsomeknowledgeandfunctionofthemicrolinuxshell.Throughthestudyoftheordersinshelllikelist,pipe,inputredirectandoutputredirect,readerscanhaveathoroughsenseabouttheshellandlearntousetheseordersaccuratelyinshellwhichplayanimportantroleinprogramminglater.Codeaccuratelyandachieveasimpleshellwiththefunctionsaboveafteranalyzingthedetailsofeveryfunctionsmodule.Moreover,intheembeddedfield,thehardwareresourcesarelimited,butdemandisunlimited.Thismeanstheyhavetouselimitedresourcestoaccomplishavarietyofneeds,andembeddeddesignandprogramminginthetraditionalPC,isverydifferent,anditoftenrequiresonlyasmallpartofalargeprogramonmeetitsneeds,sowehadtocutoutanumberofuselessprogramsinexchangeforspace.Intheembeddedfield,asthetraditionalKshell,Cshell,BourneShellandotherlarge-scaleshellprogramwillmakeourhardwareresourcesarestretched.Soweneedamoresuitableforembeddedsystemsusedintheshell,thisismyanotherobjectiveofthisdesign.Keywords:Shell;Process;Designandachieve;embedded太原理工大学毕业设计(论文)用纸目录摘要.iAbstract.ii前言.11绪论.21.1Shell的使用.21.2嵌入式linux.21.3嵌入式linux应用特点.31.4发展前景.42LinuxShell与嵌入式简介.52.1shell的定义.52.1.1UNIXShell.62.1.2LinuxShell.62.2shell的历史.72.3shell的作用.72.4shell的职责.82.5嵌入式简介.82.6安卓与linux.103LinuxShell的设计及相关技术.133.1简单shell设计思想.133.2复杂shell设计思想.133.2.1作业及作业前后调度实现方法.133.2.2管道.133.3相关函数介绍.144Myshell的实现.204.1Myshell简介.204.2Myshell的具体实现(附代码).204.2.1main主函数的实现.204.2.2分功能的实现.245效果图.25参考文献.31致谢.32外文原文.33中文翻译.39太原理工大学毕业设计(论文)用纸太原理工大学毕业设计(论文)用纸1前言当我第一次开始使用突然面对各种UNIX程序,会有很多的问题,如“功能”是什么,“我如何使用它们”。其实linux中的shell很简单,下面我们简单介绍一下:Linuxshell提供了用户与内核进行交互的机制,是操作系统的命令行界面。它的主要工作是分析用户的指令并调度内核执行。内核的执行是及其小心的,人为干预是很危险的,因此shell提供了一个安全的操作内核的途径。直观地来看shell是一种解释命令的程序,它可以将用户输入的贴近人类语言的表述解释给内核处理。不但如此,Shell还有自己语法并以此用于对命令的编辑,用户可以利用它写出由shell命令组成的脚本。在编写过程中你会爱发现,Shell编程语言与很多其他的编程语言风格相似,例如它也有c语言一样的循环逻辑和分支控制等,用此编程语言编写的Shell脚本程序能达到与其他程序一样的效果。早期的linux只有内核和命令行,为了方便用户的使用,linux又提供了与windows相似的友好的可视化图形界面,使得操作变得更加简单方便。这就是Xwindows。它像windows一样为用户提供窗口、图标以及菜单等显示部件。有了它,用户就可以在linux环境中从众多的代码行中解脱出来,利用鼠标就可快速对内核和环境进行配置。Windows系统内核自带图形界面,但是linux内核不自带界面,因此在linux领域中,图形界面主要靠第三方公司进行开发,KDE和GNOME都是很流行的窗口管理器工具。当然shell就实现了这一点,利用它可以对系统进行文件管理和事务管理等等的功能。每一位linux用户都可以拥有属于自己的或者特制的shell版本。这样可以使得他们的特定需求得到满足。与开发linux相似,人们在开发了多种版本linux的同时,也开发了很多版本的shell。比如:BourneShell:贝尔实验室在1977年底发布的。BASH:Bourne-AgainSHell的缩写,是GNU操作系统上默认的shell。KornShell:是对BourneSHell的发展,在大部分内容上与BourneShell兼容。CShell:是SUN公司Shell的BSD版本。作为一名以UNIX/Linux系统为主进行C语言程序开发的大学生,我对shell的强大功能和编写技巧有所体会。本论文详细介绍了shell是怎么样工作和组成的,对shell设计做一些简单的研究。虽然达不到原版Linux系统那样的效果,但是却有自己的独到的见解。可以供广大爱好者参考。太原理工大学毕业设计(论文)用纸21绪论Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux操作系统诞生于1991年的10月5日(这是第一次正式向外公布的时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。1.1Shell的使用不论是哪一种Shell,它最主要的功用都是解译使用者在命令列提示符号下输入的指令。Shell语法分析命令列,把它分解成以空白区分开的符号(token),在此空白包括了跳位键(tab)、空白和换行(NewLine)。如果这些字包含了metacharacter,shell将会评估(evaluate)它们的正确用法。另外,shell还管理档案输入输出及幕后处理(backgroundprocessing)。在处理命令列之后,shell会寻找命令并开始执行它们。Shell的另一个重要功用是提供个人化的使用者环境,这通常在shell的初始化档案中完成(.profile、.login、.cshrc、.tcshrc等等)。这些档案包括了设定终端机键盘和定义窗口的特征;设定变量,定义搜寻路径、权限、提示符号和终端机类型;以及设定特殊应用程序所需要的变量,例如窗口、文字处理程序、及程序语言的链接库。Kornshell和Cshell加强了个别化的能力:增加历程、别名、和内建变量集以避免使用者误杀档案、不慎签出、并在当工作完成时通知使用者。Shell也能当解译性的程序语言(interpretedprograminglanguage)。Shell程序,通常叫做命令文件,它由列在档案内的命令所构成。此程序在编辑器中编辑(虽然也太原理工大学毕业设计(论文)用纸3可以直接在命令列下写作程序,onlinescripting),由UN命令和基本的程序结构,例如变量的指定、测试条件、和循环所构成。您不需要编译shell命令档。Shell本身会解译命令档中的每一行,就如同由键盘输入一样。shell负责解译命令,而使用者则必须了解这些命令能做什么。这本书的索引列出了一些有用的命令和它们的使用方法。1.2嵌入式linux嵌入式linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_LinuxHardhatLinux等嵌入式Linux支持,实时性能稳定性好安全性好。如果分别让10位工程师给出嵌入式系统的定义,将得到10个不同的答案。一般来说,大部分的嵌入式系统执行特定的任务。我们假定最简单的嵌入式系统包括输入/输出功能,以及一些控制逻辑,该系统基于它的配置执行某些类型的功能。按照这个标准,可以认为一个包含实现控制逻辑74123计数器以及一个状态是一个嵌入式系统。也许可以补充说,该系统必须可通过存储在固件中的软件进行编程。这个新的嵌入式系统定义包括输入/输出(I/O),以及存储在系统固件中的控制逻辑。一个带有鼠标、键盘、网络连接并运行图形用户界面(GUI,graphicaluserinterface)多任务操作系统的桌面计算机显然满足这些要求,但我们能认为它是一个嵌入式系统吗?如果桌面计算机不是一个嵌入式系统,那么手持设备呢?它们有I/O功能,可以运行存储在固件中的控制逻辑。有人说,桌面计算机和手持设备都有通用计算机设备,可以运行软件来执行许多不同的任务,与之不同的是,嵌入式系统(例如,洗碗机控制器或飞行导航系统)主要是为特定任务而设计的。这种特定的功能限定使嵌入式设备有功能上的唯一性。如果是这样,为什么一些嵌入式系统设计成具有附加的功能,如存储在非易失性存储器中的程序,并且具有运行可以完成原始设计范围之外的任务的多任务操作系统的能力呢?在过去,区分嵌入式系统和通用计算机比简单得多。例如,可以很容易地区分出一个基于8051的T1分幅卡嵌入式系统和一台SunUNIX工作站。从功能方面很难区分一台Sun工作站和一个包含PowerPC以及32MB内存和16MB闪存的机顶盒。这样的机顶盒可以运行带GUI的多任务操作系统,可现场升级,可以同时运行多个程序(如视频控制器、数字录像和Java虚拟机),还可以进行安全的因特网在线交易。很难判断这种机顶盒是否是一个嵌入式系统。显然,硬件性能的提升和价格的下降使通用计算机和嵌入式系统之间的界限变得很模糊,技术的进步使得我们很难定义什么是嵌入式。太原理工大学毕业设计(论文)用纸41.3嵌入式linux应用特点嵌入式Linux的应用领域非常广泛,主要的应用领域有信息家电、PDA、机顶盒、DigitalTelephone、AnsweringMachine、ScreenPhone、数据网络、EthernetSwitches、Router、Bridge、Hub、Remoteaccessservers、ATM、Framerelay、远程通信、医疗电子、交通运输计算机外设、工业控制、航空航天领域等。就是利用Linux其自身的许多特点,把它应用到嵌入式系统里。Linux做嵌入式的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;其次,Linux的内核小、效率高,内核的更新速度很快,linux是可以定制的,其系统内核最小只有约134KB。第三,Linux是免费的OS,在价格上极具竞争力。Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台,是一个跨平台的系统。到目前为止,它可以支持二三十种CPU。而且性能稳定,裁剪性很好,开发和使用都很容易。很多CPU包括家电业芯片,都开始做Linux的平台移植工作。移植的速度远远超过Java的开发环境。也就是说,如果今天用Linux环境开发产品,那么将来换CPU就不会遇到困扰。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Tokerring(令牌环网)、光纤甚至卫星的支持。所以Linux很适于做信息家电的开发。还有使用Linux为的是来开发无线连接产品的开发者越来越多。Linux在快速增长的无线连接应用主场中有一个非常重要的优势,就是有足够快的开发速度。这是因为LInux有很多工具,并且Linux为众多程序员所熟悉。因此,我们要在嵌入式系统中使用Linux操作系统。Linux的大小适合嵌入式操作系统Linux固有的模块性,适应性和可配置性,使得这很容易做到。另外,Linux源码的实用性和成千上万的程序员热切期望它用于无数的嵌入式应用软件中,导致很多嵌入式Linux的出现,包括:Embedix,ETLinux,LEM,LinuxRouterProject,LOAF,uCLinux,muLinux,ThinLinux,FirePlug,Linux和PizzaBoxLinux相比微软,Linux的图形界面发展很快,像GNOME,KDE,UTITY等都是很优秀的桌面管理器,并且其背后有着众多的社团支持,可定制性强,已经在Unix和Linux世界普及开来。太原理工大学毕业设计(论文)用纸51.4发展前景有巨大的市场前景和商业机会,出现了大量的专业公司比如MontavistaLineoEmi等,有行业协会如EmbeddedLinuxConsortum等,得到世界著名计算机公司和OEM板级厂商的支持,例如IBMMotorolaIntel等。传统的嵌入式系统厂商也采用了Linux策略,如LynxworksWindriverQNX等,还有Internet上的大量嵌入式Linux爱好者的支持。嵌入式Linux支持几乎所有的嵌入式CPU和被移植到几乎所有的嵌入式OEM板。太原理工大学毕业设计(论文)用纸62LinuxShell与嵌入式简介2.1shell的定义Shell是一种专用于用户与操作系统内核交互运行的脚本程序,如图1-1所示,shell是计算机使用者与UNIX/linux系统内核进行交流的渠道。内核是操作系统的核心,涵盖资源管理、进程调度等众多内容。内核在开机的时候由bootloader引导时载入内存,关机之前一直由它管理计算机资源。它的主要功能是进程管理、物理资源管理、文件处理和计算机间及进程间通信等。内核始终运行在内存上,其余的应用程序保存在磁盘上。当用户打开这些应用时,应用程序便统统由内核加载到内存中运行。当用户关闭应用时,便相当于对程序发送信号,内核关闭应用并且进行资源回收。Shell伴随着用户的登陆而启动。用户在终端中输入shell指令。随后便可以解释执行。图2-1shell的模型Shell是在用户登陆成功后便开始运行的,这时候它会提醒用户开始输入命令并将其进行处理。用户输入完成口令时,Shell先用词法分析器对其进行词法分析、分割。再将分割处理后的口令交由内核来进行完成。比如管道、重定向、通配符等。内核会逐一匹配,完成任务。广大的linux使用者均是通过在终端的键入口令交由shell处理来达成与内核的交互。用户在输入一些相似的命令的时候,肯定很乐意看到这些工作可以由计算机自行完成。因此人们发明了shell脚本。用一个文件涵盖所有的命令,这就是shell脚本,随后运行这个文件,就可实现shell命令的自动执行。它的功能相当于系统批处理文件,用一个文件包含所有的shell指令,然后通过执行便可完成所有工作。Shell脚本除了这些功能以外还提供了强大的逻辑处理语句,比如判断、循环、匹配等等。这中逻辑处太原理工大学毕业设计(论文)用纸7理与其他的程序设计语言都是相通的,因此对于初学者来说就显得很简单。但是,shell的使用并不是懂了语法后就可以进行的,它需要用户对操作系统有一定的了解。要了解内核的工作方式,系统提供了grep、sed和awk等工具。学会使用这些工具对处理命令输出和输入文件时会发挥出极大的作用。学会使用shell脚本的编写执行后就可以把它看做是一种编程语言了,而内核就是它的编译器。2.1.1UNIXShell总的来说市场上绝大部分unix内核都支持这三种主流的shell。在运行的时候虽然他们的功能非常相似,但是毕竟是三种不同的脚本语言,因此语法有区别,运行效率也有很大不同。首先来看Bourneshell。它是标准的unixshell。在系统管理领域的使用尤为广泛。它提供了一种简洁、高效、快速的shell脚本编写方式。在该版本shell中管理员常以root身份进行操作。它的命令提示符是$。然后来看Cshell。它是由美国加州大学伯克利分校在上世纪八十年代开发的一个版本,开发者为BillJoy。他的目的是为了让用户更容易地使用交互性shell。因此他加入了很多友好的功能,比如命令历史查询、作业控制等新功能。而且由于效率更高,因此广受用户喜爱。它的默认命令提示符是%。最后来看Kornshell。Kornshell的开发是基于了当时的很有趣的一个现象:相当长的一段时间里。人们用Bourneshell做开发,用Cshell做交互。因此开发者结合了这两个版本共有的优点,最终贝尔实验室的大卫.科恩在上个世纪八十年代末开发出了Kornshell。Kornshell几乎完全向上兼容Bourneshell,所以老的Bourne程序在Koreshell中运行良好。Novell公司开发了一个Kornshell的新版本(以前的版本为ksh93),支持在桌面上进行Xwindow编程。dtksh.Dtksh是大多数UNIX系统硬件厂商所支持的通用桌面环境(CommonDesktopEnvironment,CDE)的标准部件,Kornshell的公共域版本(/stable/shells/pdksh)称为psksh,这种版本也在包括linux在内的多种平台上可用。用于windows的Kornshell可以在/uwin上找到。它的默认命令提示符是$。2.1.2LinuxShell通常,由于很多linux版本已经包含shell了,因此用户安装完linux之后立马就可以使用GNU的shell和其他工具,即非标准unixshell和工具。Linux默认的shell版本是bash。这种版本是在Bourceshell的基础上进行了进一步的开发而生成的加强版。它扩展了很多的功能,不仅体现在代码的编写上,用户在使用的过程中能够根据自己的需要独立剪裁工作环境,甚至可以建立快捷键完成一些常用操作。由于种种优势,使得太原理工大学毕业设计(论文)用纸8bash当之无愧地成为了当前linux用户使用最普遍的shell版本。可以到官方网站“/software/bash/bash.html”下载。它的默认命令提示符是$。TCshell也是广大linux用户常用的一种shell版本。作为Cshell在linux系统中的一个兼容性分支,它已经被注入了新的血液,功能性也大大增强。下载地址为www.tcsh.rog/MostRecentRelease。它的默认命令提示符是。另一种linuxshell版本名为Zshell,它结合了前三个版本的很多功能。还有一种名为PublicDomain的shell,这种shell是Kornshell的克隆版本,使用时需要向美国电报电话付费,即它的发行商。它的默认提示符是$。若想了解自己所使用的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.2shell的历史Bournceshell是一种编程语言,作为一门语言来讲,它的参照模板是Algol,即当时的很流行的程序设计语言。Bourneshell是在1977年底被美国电话电报公司所推出,开发者用自己的名字为其命名。二者之间有很强的联系性,语法类似,功能也大致相同。在实际的运用过程中,bourneshell主要被用于操作系统(即当时的unix)自动化运行及管理进程,其功能效果与十分强大,因而风靡一时。而且其操作简单,运行高效,备受广大用户的欢迎,但它也不是没有弱点的,最大的缺点便是交互性有所欠缺,缺乏如命令历史、作业控制能相关的友好功能。太原理工大学毕业设计(论文)用纸9随后,在二十世纪八十年代早期,加州伯克利大学由BillJoy率领的开发团队为了改善当前所广泛使用的Bourneshell在交互性上的不足,开发了一款新型的shell,即Cshell。与bourne相比,它的交互性更强,更加友好,比如增加了命令行历史功能,但是这是以牺牲运行效率为代价的,不论是个人电脑还是高端服务器,它的运行都比较缓慢。当Cshell被开发出来并在市场上存在了一段时间之后,用户在shell的使用方面有了更加明确的选择,不过这激发了人们越来越多的关于二者之间哪一个更好用的讨论。Bourne的效率更高,但是交互性有限,Cshell使用更容易,但是运行缓慢。在这种背景下,开发者在Cshell问世几年后与1986年推出了一个新版的shell版本,即kornshell,这次仍然是美国电话电报公司发行的。它是在bourneshell的基础上对其底层代码进行了深度发掘,并且兼容性更好,即能适应多种环境和平台,而不是仅限于unix系统。类似于对前辈的拓展吧。于是很自然地,这款设计更加人性化且运行高效的新版本shell成为了广大unix的首选,在其发行的众多版本中,1988年发行的堪称经典。1988年,pdksh发布,它是PubilcDomainKornShell的简称。这是一款Kornshell的克隆版本。与其母版一样,Pdksh也有极强的适应性和生存能力,适合多种环境,多种操作系统之间可以共享指令代码,符合POSIX标准。Zshell预期一样也是kornshell的克隆版本。最后,着重提一下bash,这也是如今我们大部分用户(包括我在内)正在使用的shell。bash是BourneAgainshell的简写,在1988年发行。实际上就是对Bourneshell的一个改进版吧。其功能更加完善,交互性也十分成熟,成为了linux的默认shell。它在变量、文件、函数、运算方面有独到的见解。2.3shell的作用Shell的一项主要功能是在交互方式下解释从命令行输入的命令,shell解析命令行,将其分解为词(也称token),词之间由空白分隔,空白由制表符、空格键或换行组成,如果词中有特殊的元字符,shell会对其进行替换。Shell处理文件I/O和后台进程。对命令行的处理结束后,shell搜索命令并开始运行它。Shell的另一项重要功能是定制用户环境,这通常在shell的初始化文件中完成。初始化文件中有很多定义,包括设置终端键和窗口属性,设置用来定义搜索路径、权限、提示符和终端类型的变量,设置特定应用程序所需的变量,如窗口、字处理程序和编辑语言的库等。Korn/Bashshell和C/TCshell还提供了更多的定制功能:历史添加、别名、设置内置变量防止用户破坏文件或无意中退出,通知用户作业完成。Shell还能用作解释性的编程语言。Shell程序(也称shell脚本)由文件中的一列命令组成。Shell程序用编辑器生成(也可以在命令行上直接输入脚本)。他们由UNIX命太原理工大学毕业设计(论文)用纸10令组成,命令之间插入一些基本的程序结构,如变量赋值、条件测试和循环。Shell脚本不需要编译。Shell会逐行解释脚本,就好像它是从键盘输入一样。Shell负责解释命令,因此,用户需要了解可用的命令有哪些。2.4shell的职责Shell负责确保用户在命令提示符后输入的命令被正确执行。其职责包括:1)读取输入并解析命令行替换特殊字符,比如通配符和历史命令符。2)设置管道、重定向和后台处理。3)处理信号。4)程序执行的相关设置。2.5嵌入式简介定义:IEEE(InstituteofElectricalandElectronicsEngineers,美国电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。原文为:DevicesUsedtoControl,MonitororAssisttheOperationofEquipment,MachineryorPlants)。嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。从应用对象上加以定义,从右图中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。企业嵌入式开发。嵌入式设计是企业电子产品设计的重要组成,目前国内外中小型企业内部都建立了自己的嵌入式开发团队。团队所需的人员职位构成包括:(1)系统设计工程师(2)硬件工程师(3)底层驱动工程师(4)Linux系统工程师(5)应用设计工程师等。对于企业而言,嵌入式开发越来越朝着敏捷开发、专业操作的方向发展。国内也逐步涌现出一些专门定制开发电子产品、进行嵌入式外包的专业公司。太原理工大学毕业设计(论文)用纸11对于企业而言,随时关注嵌入式承载硬件的发展尤其重要,尤其是ARM、FPGA、MCU的结构、工艺、速度正在经历着不断的变革。一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。执行装置可以很简单,如手机上的一个微小型的电机,当手机处于震动接收状态时打开;也可以很复杂,如SONY智能机器狗,上面集成了多个微小型控制电机和多种传感器,从而可以执行各种复杂的动作和感受各种状态信息。硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在ROM中。硬件层与软件层之间为中间层,也称为硬件抽象层(HardwareAbstractLayer,HAL)或板级支持包(BoardSupportPackage,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。BSP具有以下两个特点。硬件相关性:因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间的接口,BSP需要为操作系统提供操作和控制具体硬件的方法。操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。实际上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。设计一个完整的BSP需要完成两部分工作:嵌入式系统的硬件初始化以及BSP功能,设计硬件相关的设备驱动。特点:1)可裁剪性。支持开放性和可伸缩性的体系结构。2)强实时性。EOS实时性一般较强,可用于各种设备控制中。3)统一的接口。提供设备统一的驱动接口。4)操作方便、简单、提供友好的图形GUI和图形界面,追求易学易用。太原理工大学毕业设计(论文)用纸12提供强大的网络功能,支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。5)强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。6)固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。7)更好的硬件适应性,也就是良好的移植性。8)嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。文件系统:通用操作系统的文件系统通常具有以下功能:提供用户对文件操作的命令。提供用户共享文件的机制。管理文件的存储介质。提供文件的存取控制机制,保障文件及文件系统的安全性。提供文件及文件系统的备份和恢复功能。提供对文件的加密和解密功能。嵌入式文件系统比较简单,主要提供文件存储、检索和更新等功能,一般不提供保护和加密等安全机制。它以系统调用和命令方式提供文件的各种操作,主要有:设置、修改对文件和目录的存取权限。提供建立、修改、改变和删除目录等服务。提供创建、打开、读写、关闭和撤销文件等服务。文件系统的特点1)兼容性。嵌入式文件系统通常支持几种标准的文件系统,如FAT32、JFFS2、YAFFS等。太原理工大学毕业设计(论文)用纸132)实时文件系统。除支持标准的文件系统外,为提高实时性,有些嵌入式文件系统还支持自定义的实时文件系统,这些文件系统一般采用连续的方式存储文件。3)可裁剪、可配置。根据嵌入式系统的要求选择所需的文件系统,选择所需的存储介质,配置可同时打开的最大文件数等。4)支持多种存储设备。嵌入式系统的外存形式多样了,嵌入式文件系统需方便的挂接不同存储设备的驱动程序,具有灵活的设备管理能力。同时根据不同外部存储器的特点,嵌入式文件系统还需要考虑其性能、寿命等因素,发挥不同外存的优势,提高存储设备的可靠性和使用性。2.6安卓与linux安卓Android这个原本陌生的词,如今已经无人不知,无人不晓,不知道什么时候起,安卓已经是智能手机,平板电脑首选的操作系统,而事实上,安卓到底是不是一个操作系统呢?安卓开发与嵌入式开发之间又存在什么样的关系呢?我们来尝试解开这些疑问,了解安卓与嵌入式之间的关系。实际上,Android安卓并不是一个操作系统,而是一个需要Linux平台来支撑其运行的大型功能包,或者说是一个平台,一个更易于满足人们对移动互联应用需要的功能集成平台。这个平台由Google公司开发,维护并不断升级,由于其开源的特性,使得广大移动互联产品厂商更愿意用这个平台作为其自己产品的应用平台,并更容易对其进行修改、完善和二次开发。而谷歌公司在开发安卓的时候,就考虑到了其平台上应用软件开发的难易程度,为了吸引更多的软件开发爱好者在谷歌开发的安卓平台上尽情施展自己的想象力,开发出更多丰富易用的应用软件,Google选择了Java语言作为Android平台应用软件开发的首选语言,因为JAVA语言更易学,开发周期更短,并且熟悉JAVA的人更多,即便没有编程开发经验的人,只需月余便可掌握java开发,更何况大量高级研发程序员,如果有兴趣只需一周便可用java语言上手开发安卓软件,这极大的降低了android平台上应用软件开发的门槛,从而为迅速丰富谷歌市场、安卓市场提供了可能。日前,谷歌公司已经将安卓开发集成环境打包,只需一键安装,便可进行安卓应用程序开发,这也进一步说明了,Google希望让安卓开发的门槛越低越好,越多的人能够进行安卓应用软件开发,谷歌的安卓系统就越有长久的生命力,避免sybain一样的命运!那么,到底安卓开发是不是嵌入式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东遗传生物题目及答案
- 色彩这首短诗题目及答案
- 瑞安中考科学题目及答案
- 2024-2025学年陕西省西安市新城区高二上学期期末考试语文试题(解析版)
- 高中英语定语从句阶段检测卷(单句填空单句改错语篇填空)
- 2025年秋三年级上册语文同步教案 12 在牛肚子里旅行
- 骨科手术器械图课件
- 食堂人员配置安排
- 佛山管道设备管理制度
- 作业场所卫生管理制度
- 中国钛基复合材料行业市场前景预测及投资价值评估分析报告
- 2024年江苏省无锡市中考历史真题(原卷版)
- 三级营养师考试复习重点题(附答案)
- 重庆市沙坪坝区2023-2024学年四年级下学期语文期末试卷(含答案)
- 2025装配式混凝土居住建筑首个标准层段联合验收规程
- 安全领导力与执行力经典培训课件
- 四年级数学下册 六 运算律第4课时 乘法的分配律教学设计 苏教版
- 小学英语闽教版四年级下册Unit 8 Summer Vacation Part A教学设计及反思
- 2025-2030中国乙醚行业市场发展趋势与前景展望战略分析研究报告
- 2025年(四川)公需科目(心理健康与职业发展主题)题库及答案
- CJJ1-2025城镇道路工程施工与质量验收规范
评论
0/150
提交评论