嵌入式linux操作系统原理与应用_第1页
嵌入式linux操作系统原理与应用_第2页
嵌入式linux操作系统原理与应用_第3页
嵌入式linux操作系统原理与应用_第4页
嵌入式linux操作系统原理与应用_第5页
已阅读5页,还剩229页未读 继续免费阅读

下载本文档

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

文档简介

第1章嵌入式系统根底11.1嵌入式系统概述1嵌入式系统根本概念1嵌入式系统的应用领域1嵌入式系统组成2嵌入式系统的特点3嵌入式系统的开展趋势41.2嵌入式操作系统6操作系统的根本功能6嵌入式操作系统7嵌入式操作系统体系结构8嵌入式操作系统的选择11几种代表性嵌入式操作系统比较121.3嵌入式Linux根底131.3.1Linux简介131.3.2嵌入式Linux17Linux的安装根底181.3.4基于虚拟机的Linux的安装20Linux虚拟机的设置251.4Linux目录结构及文件291.4.1Linux文件系统29Linux目录结构31文件类型及文件属性331.5Linux常用操作命令361.5.1shell命令根底36文件与目录相关命令37磁盘管理与维护命令45系统管理与设置命令47网络相关命令49压缩备份命令51习题一53第2章Linux编程根底542.1Linux下的C语言编程54Linux下的C语言编程概述542.1.2Linux下C语言开发流程552.2VIM编辑器582.2.1VIM的模式582.2.2VIM常用操作602.3GCC编译器642.3.1GCC编译器简介642.3.2GCC编译流程652.3.3GCC常用编译选项67库依赖692.4GDB调试器702.4.1GDB概述702.4.2GDB使用流程702.4.3GDB根本命令752.4.4Gdbserver远程调试792.5Make工程管理器80工程管理器概述802.5.2Makefile根本结构812.5.3Makefile变量852.5.4Makefile规那么882.5.5使用自动生成工具生成Makefile892.6Linux下的集成开发环境922.6.1Eclipse集成开发环境简介922.6.2Eclipse的开发流程952.6.3使用CVS进行版本管理972.7文件I/O编程1022.7.1文件I/O编程根底102根本I/O操作103标准I/O操作1062.8进程控制编程1092.8.1Linux下的进程概述1092.8.2Linux进程编程1112.8.3Zombie进程1202.9进程间的通信和同步1212.9.1Linux下进程间通信概述121管道通信122共享内存通信1302.9.4其他方式通信1332.10多线程编程133线程的根本概念133线程的实现134修改线程属性136多线程访问控制138习题二140第3章基于Linux的嵌入式软件开发1413.1嵌入式软件结构1413.1.1嵌入式软件体系结构141基于Linux的嵌入式软件1433.2嵌入式软件开发流程1443.2.1嵌入式Linux设计概述1443.2.2基于开发板的二次开发1453.2.3基于Linux的嵌入式软件开发流程1463.3嵌入式Linux开发环境1473.3.1ARM处理器硬件开发平台1473.3.2建立嵌入式交叉编译环境1483.3.3配置开发环境1493.4嵌入式系统引导代码1583.4.1Bootloader简介1583.4.2常用的bootloader1593.4.3Bootloader根本原理1603.4.4Bootloader移植实例一:U_Boot1643.4.5Bootloader移植实例二:vivi1673.5Linux内核结构及移植1693.5.1Linux内核结构1693.5.2Linux的移植1733.5.3修改Linux内核源码1753.5.4内核的裁剪177内核的编译和下载1793.6嵌入式文件系统及移植1793.6.1嵌入式文件系统根底1793.6.2嵌入式文件系统的设计1823.6.3嵌入式根文件系统的制作1833.7Linux设备驱动概述1843.7.1Linux设备驱动作用1843.7.2Linux设备驱动程序的根本结构1853.7.3Linux设备驱动的分类1863.7.4Linux设备文件和设备文件系统1873.8设备驱动程序接口1883.8.1Linux设备驱动的加载方式1883.8.2设备驱动程序接口1903.8.3Linux设备控制方式1913.9Linux设备驱动开发流程1933.9.1设备驱动开发流程193字符设备驱动框架196习题三203第4章嵌入式应用程序设计2044.1嵌入式应用程序设计概述204嵌入式软件的分类2044.1.2嵌入式GUI2054.1.3常用嵌入式GUI2064.2MiniGUI概述2074.2.1MiniGUI简介2074.2.2MiniGUI的架构2084.2.3MiniGUI的移植2104.2.4MiniGUI的编译和安装2104.3MiniGUI编程根底2134.3.1MiniGUI的窗口与消息机制2134.3.2MiniGUI的控件215的对话框2164.4MiniGUI程序框架2174.4.1MiniGUI程序框架217编译、链接和运行2224.4.3利用Eclipse编写MiniGUI程序2234.5Qt编程根底2264.5.1Qt简介2264.5.2QT/Embedded2284.5.3QT开发环境的搭建2294.5.4QT程序设计根本流程2304.6信号和槽机制232根本概念232信号和槽机制的原理234信号和槽实例2364.7图形界面设计238的窗口类Widgets238使用QtDesigner编写QT程序2394.7.3Qt中常用的控件2444.8使用Eclipse开发QT程序2474.8.1QT插件的安装2474.8.2Eclipse平台下QT开发过程2484.9Qt程序综合实例2514.9.1需求说明2514.9.2界面设计2514.9.3功能实现252习题四255第5章嵌入式数据库2565.1嵌入式数据概述256嵌入式数据库简介2565.1.2嵌入式数据库的特点及分类2575.1.3嵌入式数据库的应用2595.2SQLite数据库2605.2.1SQLite数据库概述2605.2.2SQLite数据库的安装2615.2.3SQLite数据库根本命令2625.2.4SQLite数据库管理命令2635.2.5SQLite的API函数2665.2.6SQLite实例分析2675.3mSQL数据库2695.3.1mSQL简介2695.3.2mSQL数据库的安装2695.3.3mSQL的常用API函数2715.3.4mSQL数据库的使用2715.4BerkeleyDB数据库2735.4.1BerkeleyDB简介2735.4.2BerkeleyDB的安装274习题五274第6章嵌入式Linux网络编程2756.1网络协议概述275网络协议参考模型2756.1.2TCP/IP协议族2766.1.3TCP和UDP2776.2网络编程根底2796.2.1socket概述2796.2.2根本数据结构和函数2806.2.3socket根底编程2826.3TCP通信编程2846.3.1TCP通信过程2846.3.2TCPServer程序设计2886.3.3TCPClient程序设计2916.3.4TCP程序测试过程2926.4UDP通信编程2926.4.1UDP通信过程2926.4.2UDP效劳器端程序设计2936.4.3UDP客户端程序设计2946.4.4UDP程序测试过程296习题六297第7章嵌入式操作系统实验2987.1Linux常用命令298一.实验目的298三.实验预习要求298四.实验内容298五.实验步骤298六.思考题3017.2Linux下C语言开发环境302一.实验目的302三.实验预习要求302四.实验内容302五.实验步骤302六.思考题3067.3文件I/O及进程控制编程306一.实验目的306三.实验预习要求306四.实验内容306五.实验步骤306六.思考题3117.4进程通信以及多线程编程311一.实验目的311三.实验预习要求311四.实验内容311五.实验步骤311六.思考题3197.5嵌入式Linux开发环境320一.实验目的320三.实验预习要求320四.实验内容320五.实验步骤320六.思考题3247.6BootLoader内核和根文件系统324一.实验目的324三.实验预习要求324四.实验内容324五.实验步骤324六.思考题3307.7驱动程序设计330一.实验目的330三.实验预习要求331四.实验内容331五.实验步骤331六.思考题3347.8MiniGui应用编程334一.实验目的334三.实验预习要求334四.实验内容335五.实验步骤335六.思考题3367.9QT应用编程336一.实验目的336三.实验预习要求336四.实验内容336五.实验步骤337六.思考题3377.10嵌入式数据库337一.实验目的337三.实验预习要求338四.实验内容338五.实验步骤338六.思考题3387.11网络通信编程339一.实验目的339三.实验预习要求339四.实验内容339五.实验步骤339六.思考题342参考文献343第1章嵌入式系统根底本章首先介绍了嵌入式系统的根本概念、嵌入式软件的根本结构,然后介绍了嵌入式操作系统的根底知识,本章以Linux作为嵌入式操作系统进行介绍,对于Linux命令,本书只是介绍嵌入式开发中常用到的命令而不是所有的命令。本章最后对Linux根底知识进行了介绍,重点是Linux常用命令。1.1嵌入式系统概述嵌入式系统根本概念除了PC机以外,像数码相机、摄像机、大街上的交通灯控制、监视系统、数字式的示波器、数字万用表、数控洗衣机、电冰箱、VCD、DVD、iPAD等等,都是嵌入式系统的典型产品。可以说,嵌入式系统已经渗透到我们生活中的每个角落:工业、效劳业、消费电子…,那么什么是嵌入式系统呢?根据IEEE的定义,嵌入式系统是“控制、监视或者辅助操作机器和设备的装置〞〔原文为devicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants〕。这主要是从应用上加以定义的,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。不过上述定义并不能充分表达出嵌入式系统的精髓,目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为根底、软件硬件可裁剪、适应应用系统对功能、可靠性、本钱、体积、功耗严格要求的专用计算机系统。根据这个定义,可从三个方面来理解嵌入式系统:嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、本钱、体积等要求。所以,如果能建立相对通用的软硬件根底,然后在其上开发出适应各种需要的系统,是一个比较好的开展模式。目前的嵌入式系统的核心往往是一个只有几KB到几十KB大小的微内核,需要根据实际应用进行功能扩展或者裁减,由于微内核的存在,这种扩展能够非常顺利地进行。1.1.2嵌入式系统的应用领域嵌入式系统种类繁多,广泛应用于工业、交通、商业、金融、国防等国民经济的各个领域。据美国GartnerGroup公司调查认为,2000年全世界投入使用的嵌入式系统约有500亿个。如自动控制领域的工业自动化仪表与检测设备,化工过程自动化设备,电网系统,自动抄表设备,空中交通控制系统,自动收费,航天器姿态与轨道定位装置,移动,自动柜员机,IC卡系统,POS系统,全球定位系统〔GPS〕,手持电脑〔HPC〕,个人数字处理〔PDA〕,信息家电,Internet接入终端设备等。嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括:1.工业控制基于嵌入式芯片的工业自动化设备将获得长足的开展,目前已经有大量的8、16、32位嵌入式微控制器在应用中,网络化是提高生产效率和产品质量、减少人力资源的主要途径,如工业过程控制、数字机床、电力系统、电网平安、电网设备监测、石油化工系统。就传统的工业控制产品而言,低端型采用的往往是8位单片机。但是随着技术的开展,32位、64位的处理器逐渐成为工业控制设备的核心,在未来几年内必将获得长足的开展。2.交通管理在车辆导航、流量控制、信息监测与汽车效劳方面,嵌入式系统技术已经获得了广泛的应用,内嵌GPS模块、GSM模块的移动定位终端已经在各种运输行业获得了成功的使用。目前GPS设备已经从尖端产品进入了普通百姓的家庭,只需要几百元,就可以随时随地找到你的位置。3.信息家电这将成为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引领人们的生活步入一个崭新的空间。即使你不在家里,也可以通过线、网络进行远程控制。在这些设备中,嵌入式系统将大有用武之地。4.家庭智能管理系统水、电、煤气表的远程自动抄表,平安防火、防盗系统,其中嵌有的专用控制芯片将代替传统的人工检查,并实现更高,更准确和更平安的性能。目前在效劳领域,如远程点菜器等已经表达了嵌入式系统的优势。5.POS网络及电子商务公共交通无接触智能卡(ContactlessSmartcard,CSC)发行系统,公共卡发行系统,自动售货机,各种智能ATM终端将全面走入人们的生活,到时手持一卡就可以行遍天下。6.环境工程与自然水文资料实时监测,防洪体系及水土质量监测、堤坝平安,地震监测网,实时气象信息网,水源和空气污染监测。在很多环境恶劣,地况复杂的地区,嵌入式系统将实现无人监测。7.机器人嵌入式芯片的开展将使机器人在微型化,高智能方面优势更加明显,同时会大幅度降低机器人的价格,使其在工业领域和效劳领域获得更广泛的应用。这些应用中,可以着重于在控制方面的应用。就远程家电控制而言,除了开发出支持TCP/IP的嵌入式系统之外,家电产品控制协议也需要制订和统一,这需要家电生产厂家来做。同样的道理,所有基于网络的远程控制器件都需要与嵌入式系统之间实现接口,然后再由嵌入式系统来控制并通过网络实现控制。所以,开发和探讨嵌入式系统有着十分重要的意义。1.1.3嵌入式系统组成嵌入式系统是软硬件结合紧密的系统,一般而言,嵌入式系统由嵌入式硬件平台、嵌入式软件组成。其中嵌入式系统硬件平台包括各种嵌入式器件,图1-1下半局部所示的是一个以ARM嵌入式处理器为中心,由存储器、I/O设备、通信模块以及电源等必要辅助接口组成的嵌入式系统。嵌入式系统的硬件核心是嵌入式微处理器,有时为了提高系统的信息处理能力,常外接DSP和DSP协处理器〔也可内部集成〕,以完成高性能信号处理。典型的嵌入式系统组成嵌入式系统不同于普通计算机组成,是量身定做的专用计算机应用系统,在实际应用中的嵌入式系统硬件配置非常精简,除了微处理器和根本的外围电路以外,其余的电路都可根据需求和本钱进行裁剪、定制,非常经济、可靠。随着计算机技术、微电子技术、应用技术的不断开展及纳米芯片加工工艺技术的开展,以微处理器为核心,集成多功能的SOC系统芯片已成为嵌入式系统的核心。在嵌入式系统设计中,要尽可能地选择满足系统功能接口的SOC芯片。这些SOC集成了大量的外围USB、UART、以太网、AD/DA等功能模块。可编程片上系统SOPC(SystemOnProgrammableChip)结合了SOC和PLD、FPGA各自的技术特点,使得系统具有可编程的功能,是可编程逻辑器件在嵌入式应用中的完美表达,极大地提高了系统在线升级、换代能力。以SOC/SOPC为核心,用最少的外围部件和连接部件构成一个应用系统,满足系统的功能需求,这是嵌入式系统开展的一个方向。嵌入式系统软件一般包含4个方面:设备驱动层、实时操作系统RTOS、中间件层、实际应用程序层,嵌入式软件结构将在第三章详细介绍。1.1.4嵌入式系统的特点嵌入式系统的特点是相对通用计算机系统(通常指PC)而言的。与通用计算机相比,嵌入式系统的不同之处较多。下面列举了嵌入式系统的一些特点。1.嵌入性嵌入式指的是嵌入式系统通常需要与某些物理世界中特定的环境和设施紧密结合。这也是嵌入式系统的名称的由来。例如,汽车的电子防抱死系统必须与汽车的制动、刹车装置紧密结合;电子门锁必须嵌入到门内,数控机床的电子控制模块通常与机床也是一体的。2.专用性和通用计算机不同,嵌入式系统通常是面向某个特定应用的,所以嵌入式系统的硬件和软件,尤其是软件,都是为特定用户群设计的,它通常都具有某种专用性的特点。例如,方便实用的MP3、MP4有许多不同的外观形状,但都是实现某种特定功能的产品。3.实时性目前,嵌入式系统广泛应用于生产过程控制、数据采集、传输通信等场合,主要用来对宿主对象进行控制,所以都对嵌入式系统有或多或少的实时性要求。例如,对嵌入在武器装备中的嵌入式系统、在火箭中的嵌入式系统、一些工业控制装置中的控制系统等应用中的实时性要求就极高。当然,随着嵌入式系统应用的扩展,有些系统对实时性要求也并不是很高,例如近年来开展速度比较快的手持式计算机、掌上电脑等。但总体来说,实时性是对嵌入式系统的普遍要求,是设计者和用户重点考虑的一个重要指标。4.可靠性可靠性有时候也称为鲁棒性(Robustness),鲁棒是Robust的音译,也就是健壮和强壮的意思。由于有些嵌入式系统所承当的计算任务涉及产品质量、人身设备平安、国家机密等重大事务,加之有些嵌入式系统的宿主对象要工作在无人值守的场合,例如危险性高的工业环境中、内嵌有嵌入式系统的仪器仪表中、在人迹罕至的气象检测系统中,在侦察敌方行动的小型智能装置中等。所以与普通系统相比较,对嵌入式系统可靠性的要求极高。5.可裁剪性从嵌入式系统专用性的特点来看,作为嵌入式系统的供给者,理应提供各式各样的硬件和软件以备选用。但是,这样做势必会提高产品的本钱。为了既不提高本钱,又满足专用性的需要,嵌入式系统的供给者必须采取相应措施使产品在通用和专用之间进行某种平衡。目前的做法是,把嵌入式系统硬件和操作系统设计成可裁剪的,以便使嵌入式系统开发人员根据实际应用需要来量体裁衣,去除冗余,从而使系统在满足应用要求的前提下到达最精简的配置。6.功耗低有很多嵌入式系统的宿主对象都是一些小型应用系统,例如移动、PDA、MP3、飞机、舰船、数码相机等,这些设备不可能配给容量较大的电源,因此低功耗一直是嵌入式系统追求的目标。例如,的待机时间一直是重要性能指标之一,它根本上由内部的嵌入式系统功耗决定。而对有源的电视、DVD等设备,低耗电也同样是追求的指标之一。对于功耗的节省也可以从两方面入手:一方面在嵌入式系统硬件设计的时候,尽量选择功耗比较低的芯片并把不需要的外设和端口去掉。另外一方面,嵌入式软件系统在对功能性能进行优化的同时,也需要对功耗做出必要的优化,尽可能节省对外设的使用,从而到达省电的目的。1.1.5嵌入式系统的开展趋势信息时代,数字时代使得嵌入式产品获得了巨大的开展契机,为嵌入式市场展现了美好的前景,同时也对嵌入式生产厂商提出了新的挑战,从中我们可以看出未来嵌入式系统的几大开展趋势:1.由8位处理向32位过渡初期的嵌入式处理器以单片机为主,单片机是集成了CPU、ROM、RAM和I/O接口的微型计算机。它有很强的接口性能,非常适合于工业控制,因此又叫微控制器(MCU)。它与通用处理器不同,它是以工业测控对象、环境、接口等特点出发,向着增强控制功能,提高工业环境下的可靠性等方向开展。随着微电子和嵌入式技术的蓬勃开展,基于高性能ARM微处理器的嵌入式工控机平台,以其体积小、可靠性高、本钱低等优点,克服了传统工控机体积庞大、故障率高以及难以较长时间适应于工业控制恶劣环境等缺点,广泛应用于工业控制领域。在嵌入式家族中,采用32位RISC架构的ARM微处理器迅速占领了大局部市场。随着国内嵌入式应用领域的开展,ARM芯片必然会获得更广泛的重视和应用。2.由单核向多核过渡CPU从诞生之日起,主频就在不断的提高,如今主频之路已经走到了拐点。桌面处理器的主频在2000年到达了1GHz,2001年到达2GHz,2002年到达了3GHz。但在将近5年之后我们仍然没有看到4GHz处理器的出现。电压和发热量成为最主要的障碍,导致在桌面处理器特别是笔记本电脑方面,Intel和AMD无法再通过简单提升时钟频率就可设计出下一代的新CPU。面对主频之路走到尽头,Intel和AMD开始寻找其它方式用以在提升能力的同时保持住或者提升处理器的能效,而最具实际意义的方式是增加CPU内处理核心的数量。多内核是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。多核技术的开发源于工程师们认识到,仅仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善,先前的处理器产品就是如此。他们认识到,在先前产品中以那种速率,处理器产生的热量很快会超过太阳外表。即便是没有热量问题,其性价比也令人难以接受,速度稍快的处理器价格要高很多。英特尔工程师们开发了多核芯片,使之满足“横向扩展〞〔而非“纵向扩充〞〕方法,从而提高性能。该架构实现了“分治法〞战略。通过划分任务,线程应用能够充分利用多个执行内核,并可在特定的时间内执行更多任务。多核处理器是单枚芯片〔也称为“硅核〞〕,能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在两个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。目前单芯片多处理器已经成为处理器体系结构开展的一个重要趋势。3.MCU、FPGA、ARM、DSP等齐头并进嵌入式的应用无处不在,因此未来嵌入式芯片必定是MCU、FPGA、ARM、DSP等齐头并进的局面,各种芯片在不同的领域都有特定的位置,很难出现一种芯片一统天下的局面。单片机〔MCU〕,又称为微控制器,在一块半导体芯片上集中了CPU、ROM、RAM、I/O接口、时钟/计时器、中断系统,构成一台完整的数字计算机,单片机在工业控制领域还将占据很大市场。FPGA即现场可编程门阵列,是一种可由最终用户配置、实现许多复杂的逻辑功能的通用逻辑器件。常用于原型逻辑硬件设计,FPGA在嵌入式芯片设计方面占据主导地位。

ARM〔AdvancedRISCMachines〕是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行,目前ARM在消费类电子产品中占有很大市场。DSP〔DigitalSingnalProcessor〕是一种独特的微处理器,有自己的完整指令系统,是以数字信号来处理大量信息的器件。由于它运算能力很强,速度很快,体积很小,而且采用软件编程具有高度的灵活性,因此为从事各种复杂的应用提供了一条有效途径。4.向网络化功能开展互联网在经历过以“大型主机〞、“效劳器和PC机〞、“和移动互联网终端〔MID〕〞为载体的三个开展阶段后,将逐步迈向以嵌入式设备为载体的第四阶段,英特尔称之为“嵌入式互联网〞。在这个即将到来的第四阶段中,嵌入式设备和应用将真正让互联网无处不在,人们不管是在工作、娱乐、学习甚至休息的时候,都能7×24小时地与互联网保持连接。英特尔相信嵌入式互联网的快速崛起将到2023年时孕育出价值100亿美元,并预测到2023年将新增150亿个嵌入式计算设备与互联网的连接。为适应嵌入式分布处理结构和应用上网需求,面向21世纪的嵌入式系统要求配备标准的一种或多种网络通信接口。针对外部联网要求,嵌入设备必需配有通信接口,相应需要TCP/IP协议簇软件支持;新一代嵌入式设备还需具备IEEE1394、USB、CAN、Bluetooth或IrDA通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。为了支持应用软件的特定编程模式,如Web或无线Web编程模式,还需要相应的浏览器,如HTML、WML等。5.嵌入式操作系统呈多元化趋势嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。随着因特网技术的成熟、带宽的提高,像、及电冰箱、微波炉等嵌入式电子设备的功能不再单一,电气结构也更为复杂。为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位RISC芯片或信号处理器DSP增强处理能力;同时还采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用程序设计、保障软件质量和缩短开发周期。目前很多厂商已经充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。比方三星在推广Arm7,Arm9芯片的同时还提供开发板和板级支持包〔BSP〕,而WindowCE在主推系统时也提供EmbeddedVC++作为开发工具,还有Vxworks的Tornado开发环境,DeltaOS的Limda编译环境等等都是这一趋势的典型表达。当然,这也是市场竞争的结果。目前,国外商品化的嵌入式实时操作系统,已进入我国市场的有WindRiver、Microsoft、QNX和Nuclear等产品。我国自主开发的嵌入式系统软件产品如科银(CoreTek)公司的嵌入式软件开发平台DeltaSystem,它不仅包括DeltaCore嵌入式实时操作系统,而且还包括LamdaTools交叉开发工具套件、测试工具、应用组件等;此外,中科院也推出了Hopen嵌入式操作系统。1.2嵌入式操作系统操作系统的根本功能操作系统是一组程序的集合,而每个程序都将完成特定的功能,其中的一局部程序随着系统的运行而驻留在内存中,通常把这局部程序称为系统的内核或核心程序;另一局部程序那么存放在外存中,需要时由外存调入内存运行。从用户使用的角度来看,操作系统为用户提供访问计算机资源的接口。从资源管理的角度来看,操作系统要对计算机资源进行控制和管理,其功能主要分为中央处理器的控制与管理、存储器的分配与管理、外部设备的控制与管理、文件的控制与管理和作业的控制与管理等五个局部。1.处理器的控制与管理中央处理器〔CPU,CentralProcessingUnit〕是计算机系统中最重要的硬件资源,任何程序只有占有了CPU才能运行,其处理信息的速度要比存储器的存取速度和外部设备的工作速度快得多,只有协调好它们之间的关系才能充分发挥CPU的作用。操作系统可以使CPU按预先规定的优先顺序和管理原那么,轮流地为外部设备和用户效劳,或在同一段时间内并行地处理多项任务,以到达资源共享,从而使计算机系统的工作效率得到最大的发挥。2.存储器的分配与管理计算机在处理问题时不仅需要硬件资源,还要用到操作系统、编译系统、用户程序和数据等许多软件资源,而这些软件资源何时放到内存的什么地方,用户数据存放到哪里,都需要由操作系统对内存进行统一地分配并加以管理,使它们既保持联系,又防止互相干扰。如何合理地分配与使用有限的计算机内存空间,是操作系统对存储器进行管理的一项重要工作。3.外部设备的控制与管理操作系统控制外部设备和CPU之间的通道,把提出请求的外部设备按一定的优先顺序排好队,等待CPU响应。为了提高CPU与输入/输出设备之间并行操作的程度,协调高速CPU和低速输入/输出设备之间的工作节奏,操作系统通常在内存中设定一些缓冲区,使CPU与外部设备通过缓冲区成批传送数据。数据传输方式是:先从外部设备一次读入一组数据到内存的缓冲区,CPU依次从缓冲区读取数据,待缓冲区中的数据用完后再从外部设备读入一组数据到缓冲区。这样成组进行CPU与输入/输出设备之间的数据交互,减少了CPU与外部设备之间的交互次数,提高了运算速度。4.文件的控制和管理把逻辑上具有完整意义的信息集合以一个名字作为整体记录下来保存在存储设备中,这个整体信息就称为文件。为了区别不同信息的文件,分别对它们命名,称为文件名。例如,一个源程序、一批数据、一个文档、一个表格或一幅图片都可以各自组成一个文件。操作系统根据用户要求实现按文件名存取,负责对文件的组织以及对文件存取权限、打印等的控制。5.作业的控制和管理作业包括程序、数据以及解题的控制步骤。一个计算问题是一个作业,一个文档的打印也是一个作业。操作系统对进入系统的所有作业进行组织和管理,以提高运行效率。操作系统的作业管理功能提供“作业控制语言〞,用户通过它来书写控制作业执行的说明书。同时,还为操作员和终端用户提供与系统对话的“命令语言〞,用它来请求系统效劳。操作系统按作业说明书的要求或收到的命令控制用户作业的执行。1.2.2嵌入式操作系统1.嵌入式操作系统的开展作为嵌入式系统〔包括硬、软件系统〕极为重要组成局部的嵌入式操作系统,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统具有通用操作系统的根本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。嵌入式操作系统伴随着嵌入式系统的开展经历了四个比较明显的阶段:第一阶段:无操作系统的嵌入算法阶段,以单芯片为核心的可编程控制器形式的系统,具有与监测、伺服、指示设备相配合的功能。应用于一些专业性极强的工业控制系统中,通过汇编语言编程对系统进行直接控制,运行结束后去除内存。系统结构和功能都相对单一,处理效率较低,存储容量较小,几乎没有用户接口。第二阶段:以嵌入式CPU为根底、简单操作系统为核心的嵌入式系统。CPU种类繁多,通用性比较差;系统开销小、效率高;一般配备系统仿真器,操作系统具有一定的兼容性和扩展性;应用软件较专业,用户界面不够友好;系统主要用来控制系统负载以及监控应用程序运行。第三阶段:通用的嵌入式实时操作系统阶段,以嵌入式操作系统为核心的嵌入式系统。能运行于各种类型的微处理器上,兼容性好;内核精小、效率高,具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口〔API〕;嵌入式应用软件丰富。第四阶段:以基于Internet为标志的嵌入式系统。这是一个正在迅速开展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的开展以及Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Internet的结合将代表着嵌入式技术的真正到来。2.嵌入式操作系统特点嵌入式系统覆盖面很广,从很简单到复杂度很高的系统都有,这主要是由具体的应用要求决定的。简单的嵌入式系统根本没有操作系统,而只是一个控制循环。但是当系统变得越来越复杂时,就需要一个操作系统来支持,否那么,应用软件就会变得过于复杂,使开发难度过大,平安性和可靠性都难以保障。在多任务嵌入式系统中,合理的任务调度必不可少,单纯通过提高处理器的速度无法到达目的,这样就要求嵌入式系统的软件必须具有多任务调度的能力。和通用操作系统比较,嵌入式操作系统具有通用操作系统的根本特点。但是也有自己的特点:可定制性:用户可以根据需要来添加或裁剪操作系统的内核。可移植性:可以支持在不同的处理器上运行。实时性:很多应用要求实时性,所以要求嵌入式操作系统提供实时支持。资源限制:出于本钱、体积、能源等要求,嵌入式系统的资源相对通用操作系统来说非常有限,因此嵌入式操作系统的内核往往会很小。可靠性:遇到异常情况时系统能稳定可靠地工作。应用编程接口:为应用程序的开发提供系统调用〔应用编程接口API〕功能。嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。1.2.3嵌入式操作系统体系结构按照软件体系结构,可以把嵌入式操作系统分为3大类:宏内核结构、分层结构、微内核结构。它们的差异主要表现在两个方面:一是内核的设计,即在内核中包含了哪些功能组件,二是在系统中集成了哪些其它的系统软件(如设备驱动程序和中间件)。宏内核结构1.宏内核结构宏内核结构又称为整体结构,单体结构(monolithic),它是嵌入式软件常用形式之一,特别适合低端嵌入式应用开发,也是早期嵌入式软件开发的唯一体系结构。这种结构的实质就是“无体系结构〞:整个嵌入式软件是一组程序(函数)的集合,不区分应用软件、系统软件、驱动程序等,每个函数均可根据需要调用其他任意函数。图1-2给出了宏内核体系结构的示意模型。这种体系结构下的嵌入式软件开发有以下特点:(1)系统中每个函数有唯一定义好的接口参数和返回值,函数间调用不受限制。(2)软件开发是设计、函数编码/调试、链接成系统的反复过程,所有函数相互可见,不存在任何的信息隐藏。(3)函数调用可以有简单的分类,如核心调用、系统调用、用户调用等,用以简化编程,当然也可以不严格划分。(4)系统有唯一的主程序入口(如C程序的main函数)。宏内核是一个很大的实体。它的内部又可以被分为假设干模块〔或者是层次或其它〕。但是在运行的时候,它是一个独立的二进制大映象。其模块间的通讯是通过直接调用其它模块中的函数实现的,而不是消息传递。使用这种结构的优点是:模块之间直接调用函数,除了函数调用的开销外,没有额外开销。代码执行效率高。缺点是:庞大的操作系统有数以千计的函数。复杂的调用关系势必导致操作系统维护的困难。因此,可移植性和扩展性非常差。分层结构2.分层结构图1-3给出了层次结构(LayeredArchitecture)的系统模型,其中各种软件分层组织,每层为上层软件提供效劳并作为下层软件的客户。对多数层次结构而言,内层只对直接外层开放,对其他各层隐蔽,因此这些层次往往可以看成是虚拟机(或抽象层)。层次结构具有以下特点:(1)每一层对其上层而言好似是一个虚拟的计算机〔virtualmachine〕。(2)下层为上层提供效劳,上层利用下层提供的效劳。(3)层与层之间定义良好的接口,上下层之间通过接口进行交互与通信(4)每层划分为一个或多个模块〔又称组件〕,在实际应用中可根据需要配置个性化的RTOS。实际上,分层结构是最常用的嵌入式软件体系结构之一。在常用的嵌入式软件中,许多嵌入式操作系统、嵌入式数据库等都是层次结构的。图1-3是一种分层结构的嵌入式实时操作系统,其中实时多任务内核完成进程管理、任务调度等根本功能,在此根底上依次实现了内存管理、I/O、设备驱动、文件系统、网络、应用软件等功能。采用分层结构的优点有:有利于将复杂的功能简化,“分而治之〞,便于设计实现。每层的接口都是抽象的,支持标准化,因此很容易支持软件的重用。可移植性、可替换性好。开发和维护简单,当我们要替换系统中的某一层时,只要接口不变,不会影响到其它层。分层结构的缺点有:系统效率低,由于每个层次都要提供一组API接口函数,从而影响系统的性能。底层修改时会产生连锁反响。3.微内核结构微内核(Microkernel)结构,又称为客户机/效劳器结构(Client/ServerArchitecture,C/S)是现代软件常用体系结构之一,如图1-4所示。根本思想是:把操作系统的大局部功能剥离出去,只保存最核心的功能单元,微内核中只提供几种根本效劳:任务调度、任务间通信、底层的网络通信和中断处理接口、以及实时时钟等。因此整个内核非常小〔可能只有数十KB〕,内核任务在独立的地址空间运行,速度极快。其它效劳,如存储管理、文件管理、中断处理、网络通信等,以内核上的协作任务形式出现〔功能效劳器〕。客户任务执行中需要某种效劳,那么向效劳器任务发出申请。客户-效劳器结构基于微内核结构的操作系统一般包括如下组成局部:根本内核:嵌入式RTOS中最核心,最根底的局部。在微内核结构中,必须拥有任务管理〔进程/线程〕、中断管理〔包括时钟中断〕、根本的通信管理和存储管理。扩展内核:在微内核的根底上新的功能组件可以动态地添加进来,这些功能可以组成为方便用户使用而对RTOS进行的扩展。它建立在根本内核根底上,提供GUI、TCP/IP、Browser、PowerManager、FileManager等应用编程接口。设备驱动接口:建立在RTOS内核与外部硬件之间的一个硬件抽象层,用于定义软件与硬件的界限,方便RTOS的移植、升级。在有些嵌入式RTOS中,没有专门区分这一局部,统归于RTOS根本内核。应用编程接口:建立在RTOS编程接口之上的、面向应用领域的编程接口〔也称为应用编程中间件〕。它可以极大地方便用户编写特定领域的嵌入式应用程序。微内核操作系统的优点是:内核小,扩展性好。平安性高:客户单元和效劳单元的内存地址空间是相互独立的,因此系统的平安性更高。各个效劳器模块的相对独立性,便于移植和维护。微内核操作系统的缺点是:内核与各个效劳器之间通过通信机制进行交互,这使得微内核结构的效率降低。由于它们的内存地址空间是相互独立的,所以切换时,也会增加额外的开销。在实际应用中,许多嵌入式操作系统是将层次结构和微内核结构结合起来,形成基于分层的微内核结构,这样便把分层结构和微内核结构的优点都发挥出来了,如大家熟知的VxWorks、WindowsCE、Linux等操作系统都是采用这种结构。如图1-5所示是Linux操作系统的根本结构。Linux操作系统体系结构1.2.4当我们在设计信息电器、数字医疗设备等嵌入式产品时,嵌入式操作系统的选择至关重要。一般而言,在选择嵌入式操作系统时,可以遵循以下原那么。总的来说,就是“做加法还是做减法〞的问题。1.市场进入时间制定产品时间表与选择操作系统有关系,实际产品和一般演示是不同的。目前是Windows程序员可能是人力资源最丰富的。现成资源最多的也就可能是WinCE。使用WinCE能够很快进入市场。因为WinCE+X86做产品实际上是在做减法,去掉你不要的功能,能很快出产品,但伴随的可能是本钱高,核心竞争力差。而某些高效的操作系统可能由于编程人员缺乏,或由于这方面的技术积累不够,影响开发进度。2.可移植性当进行嵌入式软件开发时,可移植性是要重点考虑的问题。良好的软件移植性应该比较好,可以在不同平台、不同系统上运行,跟操作系统无关。软件的通用性和软件的性能通常是矛盾的。即通用性是以损失某些特定情况下的优化性能为代价。很难设想开发一个嵌入式浏览器而仅能在某一特定环境下应用。反过来说,当产品与平台和操作系统紧密结合时,往往你的产品的特色就蕴含其中。3.可利用资源产品开发不同于学术课题研究,它是以快速、低本钱、高质量的推出适合用户需求的产品为目的的。集中精力研发出产品的特色,其他功能尽量由操作系统附加或采用第三方产品,因此操作系统的可利用资源对于选型是一个重要参考条件。Linux和WinCE都有大量的资源可以利用,这是他们被看好的重要原因。其他有些实时操作系统由于比较封闭,开发时可以利用的资源比较少,因此多数功能需要自己独立开发。从而影响开发进度。近来的市场需求显示,越来越多的嵌入式系统,均要求提供全功能的Web浏览器。而这要求有一个高性能、高可靠的GUI的支持。4.系统定制能力信息产品不同于传统PC的Wintel结构的单纯性,用户的需求是千差万别的,硬件平台也都不一样,所以对系统的定制能力提出了要求。要分析产品是否对系统底层有改动的需求,这种改动是否伴随着产品特色?Linux由于其源代码开放的天生魅力,在定制能力方面具有优势。随着WinCE源码的开放,以及微软在嵌入式领域力度的加强,其定制能力会有所提升。5.本钱本钱是所有产品不得不考虑的问题。操作系统的选择会对本钱有什么影响呢?Linux免费,WinCE等商业系统需要支付许可证使用费,但这都不是问题的答案。本钱是需要综合权衡以后进行考虑的——选择某一系统可能会对其他一系列的因素产生影响,如对硬件设备的选型、人员投入、以及公司管理和与其他合作伙伴的共同开发之间的沟通等许多方面的影响。6.中文内核支持国内产品需要对中文的支持。由于操作系统多数是采用西文方式,是否支持双字节编码方式,是否遵循GBK,GBl8030等各种国家标准,是否支持中文输入与处理,是否提供第三方中文输入接口是针对国内用户的嵌入式产品必需考虑的重要因素。上面提到用WinCE+x86出产品是减法,这实际上就是所谓PC家电化;另外一种做法是加法,利用家电行业的硬件解决方案〔绝大局部是非x86的〕加以改进,加上嵌入式操作系统,再加上应用软件。这是所谓家电PC化的做法,这种加法的优势是本钱低,特色突出,缺点是产品研发周期长,难度大〔需要深入了解硬件和操作系统〕。如果选择这种做法,Linux是一个好选择,它让你能够深入到系统底层,如果你愿意并且有能力。1.2.51.VxWorksVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统〔RTOS〕,是Tornado嵌入式开发环境的关键组成局部。具备良好的持续开展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域逐渐占据一席之地。VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等特点。然而其价格昂贵,由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不提供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护本钱都非常高。支持的硬件数量有限。2.WindowsCEWindowsCE与Windows系列有较好的兼容性,无疑是WindowsCE推广的一大优势。其中WinCE3.0是一种针对小容量、移动式、智能化、32位模块化实时嵌入式操作系统。为建立针对掌上设备、无线设备的动态应用程序和效劳提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,并且通常适用于那些对内存占用空间具有一定限制的设备。它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的根本内核需要至少200KB的ROM。从技术角度上讲,WindowsCE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的定制;在效率、功耗方面的表现并不出色,而且和Windows一样占用过多的系统内存,应用程序庞大;版权许可费也是厂商不得不考虑的因素。3.嵌入式Linux这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,在近几年来成为研究热点,据IDG预测嵌入式Linux将占未来两年的嵌入式操作系统份额的50%。由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。遵从GPL,无须为每例应用交纳许可证费。有大量的应用软件可用。其中大局部都遵从GPL,是开放源代码和免费的。可以稍加修改后应用于用户自己的系统。有大量的免费的优秀的开发工具,且都遵从GPL,是开放源代码的。有庞大的开发人员群体。无需专门的人才,只要懂Unix/Linux和C语言即可。随着Linux在中国的普及,这类人才越来越多。所以软件的开发和维护本钱很低。优秀的网络功能,这在Internet时代尤其重要。稳定,这是Linux本身具备的一个很大优点。内核精悍,运行所需资源少,十分适合嵌入式应用。支持的硬件数量庞大。嵌入式Linux和普通Linux并无本质区别,PC上用到的硬件嵌入式Linux几乎都支持。而且各种硬件的驱动程序源代码都可以得到,为用户编写自己专有硬件的驱动程序带来很大方便。在嵌入式系统上运行Linux的一个缺点是需要添加实时软件模块。而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的局部。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点。4.µC/OS一ⅡµC/OS一Ⅱ是著名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于8位,16位和32位单片机或数字信号处理器〔DSP〕。它是在原版本µC/OS的根底上做了重大改进与升级,并有了近十年的使用实践,有许多成功应用该实时内核的实例。它的主要特点如下:(1)公开源代码,容易就能把操作系统移植到各个不同的硬件平台上。(2)可移植性,绝大局部源代码是用C语言写的,便于移植到其他微处理器上。(3)可裁剪性,有选择的使用需要的系统效劳,以减少所需的存储空间。(4)抢先式,完全是抢先式的实时内核,即总是运行就绪条件下优先级最高的任务。(5)多任务,可管理64个任务,任务的优先级必须是不同的,不支持时间片轮转调度法。(6)可确定性,函数调用与效劳的执行时间具有可确定性,不依赖于任务的多少。(7)实用性和可靠性,成功应用该实时内核的实例,是其实用性和可靠性的最好证据。由于µC/OS一Ⅱ仅是一个实时内核,这就意味着它不像其他实时操作系统那样提供给用户的只是一些API函数接口,还有很多工作需要用户自己去完成。1.3嵌入式Linux根底Linux简介1.Linux的简短历史尽管Linux绝对是最流行的开源操作系统,但是相对于其他操作系统的漫长历史来说,Linux的历史非常短暂。在计算机出现早期,程序员是使用硬件语言在裸硬件上进行开发的。缺少操作系统就意味着在某个时间只有一个应用程序〔和一个用户〕可以使用这些庞大而又昂贵的设备。早期的操作系统是在20世纪50年代开发的,用来提供简单的开发体验。70年代,AndrewTanenbaum创立了一个微内核版本的UNIX®,名为MINIX〔代表minimalUNIX〕,它可以在小型的个人计算机上运行。这个开源操作系统在20世纪90年代激发了LinusTorvalds开发Linux的灵感。当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有Unix操作系统的全部功能,因而开始了Linux雏形的设计。主要Linux内核发行版简史Linux的历史是和GNU紧密联系在一起的,其开展如图1-6所示。1983年,理察·马修·斯托曼〔RichardStallman〕创立了GNU方案〔GNUProject〕。这个方案有一个目标是为了开展一个完全免费自由的Unix-like操作系统。自1990年发起这个方案以来,GNU开始大量的产生或收集各种系统所必备的元件:函式库〔libraries〕、编译器〔compilers〕、调试工具〔debuggers〕、文字编辑器〔texteditors〕、网页效劳器〔webserver〕,以及一个Unix的使用接口〔Unixshell〕,执行核心〔kernel〕。1990年,GNU方案开始在马赫微核〔Machmicrokernel〕的架构之上开发系统核心,也就是所谓的GNUHurd,但是这个基于Mach的设计异常复杂,开展进度缓慢。到1991年Linux内核发布的时候,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发。在LinusTorvalds和其他开发人员的努力下,GNU组件可以运行于Linux内核之上。整个内核是基于GNU通用公共许可,也就是GPL〔GNUGeneralPublicLicense,GNU通用公共许可证〕。Linux之所以受到广阔计算机爱好者的喜爱,主要原因有两个,一是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿使用,无约束地继续传播。另一个原因是,绝大多数基于Linux内核的操作系统使用了大量的GNU软件,包括了shell程序、工具、程序库、编译器及工具,还有许多其他程序,例如Emacs。正因为如此,GNU方案的开创者理查德·马修·斯托曼博士提议将Linux操作系统改名为GNU/Linux。Linux快速从一个个人工程进化成为一个全球数千人参与的开发工程。对于Linux来说,最为重要的决策之一是采用GPL〔GNUGeneralPublicLicense〕。在GPL保护之下,Linux内核可以防止商业使用,并且它还从GNU工程〔RichardStallman开发,其源代码要比Linux内核大得多〕的用户空间开发受益。这允许使用一些非常有用的应用程序,例如GCC〔GNUCompilerCollection〕和各种shell支持。Linux以它的高效性和灵活性著称。它能够在PC计算机上实现全部的Unix特性,具有多任务、多用户的能力。Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用WindowsNT一样,允许我们使用窗口、图标和菜单对系统进行操作。2.Linux版本Linux的版本包括内核版本和发行版本。Linux内核的版本号格式是:x.y.zz-www,Linux内核的版本号分为主版本号、次版本号和扩展版本号等。根据稳定版本、测试版本和开发版本定义不同版本序列。稳定版本的主版本号用偶数表示,例如:2.2、2.4、2.6。每隔2~3年启动一个Linux稳定主版本号。紧接着是次版本号,例如:、2.6.14、2.6.15。次版本号不分奇偶数,顺序递增。每隔1~2个月发布一个稳定版本。然后是升级版本号,例如:.3、、。升级版本号不分奇偶数,顺序递增。每周几次发布升级版本号,修正最新的稳定版本的问题。另外一种是测试版本。在下一个稳定版本发布之前,每个月发布几个测试版本,例如:-rc1。通过测试,可以使内核正式发布的时候更加稳定。还有一类是开发版本。开发版本的主版本号用奇数表示,例如:2.3、2.5。也有次版本号,例如:、2.5.33。开发版本是不稳定的,适合内核开发者在新的稳定的主版本发布之前使用。我们可以从Linux官方网站上:下载最新的内核代码。Linux内核的开展过程中,我们还不得不提一下各种Linux发行版的作用,因为正是它们推动了Linux的应用,从而也让更多的人开始关注Linux。一些组织或厂家,将Linux系统的内核与外围实用程序(Utilities)软件和文档包装起来,并提供一些系统安装界面和系统配置、设定与管理工具,就构成了一种发行版本(Distribution),Linux的发行版本其实就是Linux核心再加上外围的实用程序组成的一个大软件包而已。相对于Linux操作系统内核版本,发行版本的版本号随发布者的不同而不同,与Linux系统内核的版本号是相对独立的。因此把SUSE、RedHat、Ubuntu、Slackware等直接说成是Linux是不确切的,它们是Linux的发行版本,更确切地说,应该叫做“以Linux为核心的操作系统软件包〞。根据GPL准那么,这些发行版本虽然都源自一个内核,并且都有自己各自的奉献,但都没有自己的版权。Linux的各个发行版本,都是使用Linus主导开发并发布的同一个Linux内核,因此在内核层不存在什么兼容性问题。每个版本都不一样的感觉,只是在发行版本的最外层才有所表达,而绝不是Linux本身特别是内核不统一或是不兼容。90年代初期Linux开始出现的时候,仅仅是以源代码形式出现,用户需要在其他操作系统下进行编译才能使用。后来出现了一些正式版本。目前最流行的几个正式版本有:SUSE、RedHat、Fedora、Ubuntu。SUSE是德国最著名的Linux发行版,在全世界范围也享有较高的声誉。SUSE自主开发的软件包管理系统YaST也大受好评。SUSE于2003年年末被Novell收购。SUSE之后的发布显得比较混乱,比方9.0版本是收费的,而10.0版本〔也许由于各种压力〕又免费发布。这使得一局部用户感到困惑,也转而使用其它发行版本。但是,瑕不掩瑜,SUSE仍然是一个非常专业、优秀的发行版。RedHatLinux是国内,乃至是全世界的Linux用户所最熟悉、最耳闻能详的发行版。RedHat最早由BobYoung和MarcEwing在1995年创立。而公司在最近才开始真正步入盈利时代,归功于收费的RedHatEnterpriseLinux〔RHEL,RedHat的企业版〕。而正统的RedHat版本早已停止技术支持,最后一版是RedHat9.0。于是,目前RedHat分为两个系列:由RedHat公司提供收费技术支持和更新的RedHatEnterpriseLinux,以及由社区开发的免费的FedoraCore。FedoraCore1发布于2003年年末,而FC的定位便是桌面用户。FC提供了最新的软件包,同时,它的版本更新周期也非常短,仅六个月。目前最新版本为FC13。Ubuntu该词来自于祖鲁语和科萨语。Ubuntu〔发音"oo-BOON-too"--“乌班图〞〕被视为非洲人的传统理念,Ubuntu精神的大意是“人道待人〞〔对他人仁慈〕。另一种翻译可以是:“天下共享的信念,连接起每个人〞。作为一个基于GNU/Linux的平台,Ubuntu操作系统将ubuntu精神带到了软件世界。目前已有大量各种各样基于GNU/Linux的操作系统,例如:Debian,SuSE,Gentoo,RedHat和Mandriva。在这业已竞争纷繁的世界里,Ubuntu是又一个参与者。那么Ubuntu何以有所不同?Debian是一个广受称道、技术先进且有着良好支持的发行版,Ubuntu正是基于Debian之上,旨在创立一个可以为桌面和效劳器提供一个最新且一贯的Linux系统。Ubuntu囊括了大量从Debian发行版精挑细选的软件包,同时保存了Debian强大的软件包管理系统,以便简易的安装或彻底的删除程序。与大多数发行版附带数量巨大的可用可不用的软件不同,Ubuntu的软件包清单只包含那些高质量的重要应用程序。注重质量,Ubuntu提供了一个健壮、功能丰富的计算环境,既适合家用又适用于商业环境。本工程花费了大量必要的时间,努力精益求精,每6个月就会发布一个版本,以提供最新最强大的软件。Ubuntu支持各种形形色色的架构,包括i386〔386/486/Pentium(II/III/IV)和Athlon/Duron/Sempron处理器〕,AMD64〔Athlon64,Opteron,最新的64位Intel处理器),以及PowerPC〔iBook/Powerbook,G4andG5〕等。3.Linux功能特点(1)开放性Linux可以说是作为开放源码的自由软件的代表,作为自由软件,它有如下两个特点:一是它开放源码并对外免费提供,二是爱好者可以按照自己的需要自由修改、复制和发布程序的源码,并公布在Internet上,因此Linux操作系统可以从互联网上很方便地免费下载得到。(2)多用户、多任务Linux是真正的多任务多用户操作系统,只有很少的操作系统能提供真正的多任务能力,尽管许多操作系统声明支持多任务,但并不完全准确,如Windows。而Linux那么充分利用了X86CPU的任务切换机制,实现了真正多任务、多用户环境,允许多个用户同时执行不同的程序,并且可以给紧急任务以较高的优先级。(3)设备独立性为了提高操作系统的可适应性和可扩展性,在现代操作中都毫无例外地实现了设备独立性,也称为设备无关性。应用程序独立于具体使用的物理设备。为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称。在Linux中和Unix一样,设备被巧妙的归属为特殊文件,受文件系统抽象和管理,因此其操作方式和文件系统一致。文件系统将对设备的操作递交给实际的设备驱动处理。(4)强大的网络功能实际上,Linux就是依靠互联网才迅速开展了起来,Linux具有强大的网络功能也是自然而然的事情。它可以轻松地与TCP/IP、LANManager、WindowsforWorkgroups、NovellNetware或WindowsNT网络集成在一起,还可以通过以太网或调制解调器连接到Internet上。Linux不仅能够作为网络工作站使用,更可以胜任各类效劳器,如X应用效劳器、文件效劳器、打印效劳器、邮件效劳器、新闻效劳器等等。(5)平安性由于可以得到Linux的源码,所以操作系统的内部逻辑可见,这样就可以准确地查明故障原因,及时采取相应对策。在必要的情况下,用户可以及时地为Linux打“补丁〞,这是其它操作系统所没有的优势。同时,这也使得用户容易根据操作系统的特点构建平安保障系统,不用担忧来自那些不公开源码的“黑盒子〞式的系统预留的什么“后门〞的意外打击。(6)可移植性Linux完全符合POSIX标准,POSIX是基于UNIX的第一个操作系统簇国际标准,Linux遵循这一标准,这使得UNIX下许多应用程序可以很容易地移植到Linux下,相反也是这样。Linux支持一系列的UNIX开发,它是一个完整的UNIX开发平台,几乎所有的主流程序设计语言都已移植到Linux上并可免费得到,如C、C++、Fortran77、ADA、PASCAL、Modual2、Tcl/TkScheme、SmallTalk/X等。1.3.2嵌入式Linux1.Linux作为嵌入式操作系统的优势从Linux系统的开展过程可以看出,Linux从最开始就是一个开放的系统,并且它始终遵循着源代码开发的原那么,它是一个成熟而稳定的网络操作系统,Linux作为嵌入式操作系统有如下优势。(1)低本钱开发系统Linux的源码开放性允许任何人可以获取并修改Linux的源码。这样一方面大大降低了开发的本钱,另一方面又可以提高开发产品的效率。并且还可以在Linux社区中获得支持,用户只需向邮件列表发一封邮件,即可获得作者的支持。(2)可应用于多种硬件平台Linux可支持X86、PowerPC、ARM、XSCALE、MIPS、SH、68K、Alpha、SPARC等多种体系结构,并且已经被移植到多种硬件平台。这对于经费、时间受限制的研究与开发工程是很有吸引力的。Linux采用一个统一的框架对硬件进行管理,同时从一个硬件平台到另一个硬件平台的改动与上层应用无关。(3)可定制的内核Linux具有独特的内核模块机制,它可以根据用户的需要,实时地将某些模块插入到内核中或者从内核中移走,并能根据嵌入式设备的个性需要量体裁衣。经裁剪的Linux内核最小可到达150KB以下,尤其适合嵌入式领域中资源受限的实际情况。当前的2.6内核参加了许多嵌入式友好特性,如构建用于不需要用户界面的内核选项。(4)性能优异Linux系统内核精简、高效和稳定,能够充分发挥硬件的功能,因此它比其他操作系统的运行效率更高。在个人计算机上使用Linux,可以将它作为工作站。它也非常适合在嵌入式领域中应用,比照其他操作系统,它占用的资源更少,运行更稳定,速度更快。(5)良好的网络支持Linux是首先实现TCP/IP协议栈的操作系统,它的内核结构在网络方面是非常完整的,并提供了对包括十兆位、百兆位及千兆位的以太网,还有无线网络、Tokenring(令牌环)和光纤甚至卫星的支持,这对现在依赖于网络的嵌入式设备来说无疑是很好的选择。Linux人才需求2.如何学习嵌入式Linux目前,嵌入式Linux开发大致涉及三个层次:引导程序、Linux内核和驱动程序、应用程序。从应用角度来说,对Linux嵌入式不同开发人才的需求是倒“金字塔〞型,如图1-7所示。需要最多的是应用程序开发人才,越往下,需求越少,而且学习门槛越高。因此学习Linux,准备做产品的话,建议大家不要把Linux当成终极目标〔当然,这是对应用而言的〕,而是把Linux当成一个平台。更重要的还在各种产品所需求的专业技术,如通信方面像CAN、RS485、GPRS等等,或者工业控制方面,IO控制、实时特性等等。Linux博大精深,研究起来永无止境,但是在产品中,只要一个产品够用就可以了。对于嵌入式Linux入门,如果有一定根底,可以从驱动开始;如果没有根底,建议还是从应用程序开始。因为从应用程序开始是最容易的,也是最直观的。而驱动程序运行在内核态,驱动本身的结构就比较复杂,如果要彻底弄明白驱动的运行机制,必定牵涉内核,对于高年级的学生恐怕问题会少一些,而对于低年级的学生,问题估计较多,容易失去学习的信心。嵌入式Linux可选图形界面很多,在网上找找,可以发现远非我们常说的QT、MiniGUI。还包括Tiny-X、Matchbox、OPIE、GPE等等。不同GUI有自己的特色,有自己的特殊应用场合,对于产品开发,根据需要选择适宜的GUI。对于学习,自然是选择容易得到、容易开发的GUI。QT是一个不错的选择,由于QT有一个PC上的模拟器,可以在没有实际液晶LCD的情况下,甚至在没有任何硬件的情况下都可以在PC上进行模拟开发。QT是收费的,当然,有免费版可用。MiniGUI是国产的,支持国货,可以考虑选择MiniGUI。MiniGUI可以用于工业控制场合,QT在这方面的应用目前用在手持设备中。1.3.3Linux嵌入式软件的开发是在交叉开发环境下进行的,对于嵌入式Linux而言,需要在宿主机(通常用PC机)建立一个Linux开发环境。因此必须在PC机上安装一个Linux操作系统。安装之前我们先介绍相关的根底知识。1.文件系统、分区和挂载文件系统是指操作系统中与管理文件有关的软件和数据。Linux的文件系统和Windows中的文件系统有很大的区别,Windows文件系统是以驱动器的盘符为根底的,而且每一个目录是与相应的分区对应,例如“E:\workplace〞是指此文件在E盘这个分区下。而Linux恰好相反,文件系统是一个文件树,且它的所有文件和外部设备(如硬盘、光驱等)都是以文件的形式挂载在这个文件树上,例如“\usr\local〞。总之,在Windows下,目录结构属于分区;在Linux下,分区属于目录结构。其关系如以下图1-8所示。a.Linux下目录与分区关系b.Windows下目录与分区关系分区和目录的关系因此,在Linux中把每一个分区和某一个目录对应,以后在对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一。这个把分区和目录对应的过程叫做挂载(Mount),而这个挂载在文件树中的位置就是挂载点。这种对应关系可以由用户随时中断和改变。2.主分区、扩展分区和逻辑分区硬盘分区是针对一个硬盘进行操作的,它可以分为:主分区、扩展分区、逻辑分区。要在硬盘上安装操作系统,那么该硬盘必须要有一个主分区,PC机每个硬盘最多只能分成4个主分区,主分区不利于应用程序使用,在主分区的根底上引入扩展分区〔Extendedpartion〕,因此可在硬盘4个主分区中的一个用作扩展分区,在扩展分区中可以建立多个逻辑分区〔Logicalpartion〕,不同操作系统对分区的表示和解释不同,DOS和Windows用驱动器字符〔盘符〕表示每个主分区或逻辑分区,盘符从C:开始依次分配。它们的关系如图1-9所示。Windows下主分区、扩展分区、逻辑分区示意图一般而言,对于先安

温馨提示

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

评论

0/150

提交评论