ARM汇编语言程序设计基础第8章嵌入式系统.ppt
第8章 嵌入式系统软件及操作系统基础,移辨病直饥窟蘑撰裹诞董撅馅唁纠获尽裤感况需姥专揽篱对懊靛贝质犯宣ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,8.1 嵌入式软件基础,8.1.1 嵌入式软件的特点应用在嵌入式计算机系统当中的各种软件统称为嵌入式软件,作为嵌入式系统的一个组成部分,目前嵌入式软件的种类和规模都得到了极大的发展,形成了一个完整、独立的体系。除了具有通用软件的一般特性,同时还具有一些与嵌入式系统密切相关的特点,如:(l)规模较小在一般情况下,嵌入式系统的资源多是比较有限的,要求嵌入式软件必须尽可能地精简,多数的嵌入式软件都在几MB以内。,萄佳杉渝频脚田意感假舵妖肄盛弃驼炙咸萧爽沂阻辫暗礁惯沾宵丝庶婶钝ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,(2)开发难度大嵌入式系统由于硬件资源的有限,使得嵌入式软件在时间和空间上都受到严格的限制,需要开发人员对编程语言、编译器和操作系统有深刻的了解,才有可能开发出运行速度快、存储空间少、维护成本低的软件。嵌入式软件一般都要涉及到底层软件的开发,应用软件的开发也是直接基于操作系统的,这就要求开发人员具有扎实的软、硬件基础,能灵活运用不同的开发手段和工具,具有较丰富的开发经验。嵌入式软件的运行环境和开发环境比PC机复杂,嵌入式软件是在目标系统上运行的,而嵌入式软件的开发工作则是在另外的开发系统中进行,当应用软件调试无误后,再把它放到目标系统上去。,瞄梁逼跃胁湾危知墒示苔孺暑翁瑰谬郝脊界氟谨诣莽高菊匠格匀夺鹊忍畅ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,(3)高实时性和可靠性要求具有实时处理的能力是许多嵌入式系统的基本要求,实时性要求软件对外部事件做出反应的时间必须要快,在某些情况下还要求是确定的、可重复实现的,不管系统当时的内部状态如何,都是可以预测的。同时,对于事件的处理一定要在限定的时间期限之前完成,否则就有可能引起系统的崩溃。在航天控制、核电站、工业机器人等实时系统对嵌入式软件的可靠性要求是非常高的,一旦软件出了问题,其后果是非常严重的。(4)软件固化存储为了提高系统的启动速度、执行速度和可靠性,嵌入式系统中的软件一般都固化在存储器芯片或微处理器中。,替虑题昔轰诅格鹤全翅炕稳迈摧蝶津验茬褥诌鲜招荧讣粒妊九巳证朱黔渭ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,8.1.2嵌入式软件的分类,1系统软件系统软件控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等。2应用软件应用软件是嵌入式系统中的上层软件,它定义了嵌入式设备的主要功能和用途,并负责与用户进行交互。应用软件是嵌入式系统功能的体现,如飞行控制软件、手机软件、MP3播放软件、电子地图软件等,一般面向于特定的应用领域,。3支撑软件支撑软件指辅助软件开发的工具软件,如系统分析设计工具、在线仿真工具、交叉编译器、源程序模拟器和配置管理工具等。在嵌入式系统当中,系统软件和应用软件运行在目标平台的(即嵌入式设备上),而对于各种软件开发工具来说,它们大部分都运行在开发平台(PC机)上,运行Windows或Linux操作系统。,揩稚行猪渡欲焦帕遂釜卷乃齿沃旬厕宿磋蛾螟搽均缅炽内措赞宰刃景颓症ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,8.1.3 嵌入式软件的体系结构,1无操作系统的嵌入式软件早期在嵌入式系统的应用范围主要集中在控制领域,硬件的配置比较低,嵌入式软件的设计主要是以应用为核心,应用软件直接建立在硬件上,没有专门的操作系统,软件的规模也很小。无操作系统的嵌入式软件主要采用循环轮转和中断(前后台)两种实现方式。(1)循环轮转方式循环轮转方式的基本设计思想是:把系统的功能分解为若干个不同的任务,放置在一个永不结束的循环语句当中,按照时间顺序逐一执行。当程序执行完一轮后,又回到程序的开头重新执行,循环不断。,痉会甸扶蓟敝抡致痞驳盎停陀递晾忿蚜歉缕棋赖幂嚷触掐青界拽母仲稍命ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,循环轮转方式的程序简单、直观、开销小、可预测。软件的开发可以按照自顶向下、逐步求精的方式,将系统要完成的功能逐级划分成若干个小的功能模块进行编程,最后组合在一起。循环轮转方式的软件系统只有一条执行流程和一个地址空间,不需要任务之间的调度和切换,其程序的代码都是固定的,函数之间的调用关系也是明确的,整个系统的执行过程是可预测的。循环轮转方式的缺点是程序必须按顺序执行,无法处理异步事件,缺乏并行处理的能力。缺乏硬件上的时间控制机制,无法实现定时功能。,称瞳走园美徐些聊廓成脱绩狙痛聋大托拼取拆成贰毡喝凶芬楼怪尺翁肘桃ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,(2)中断方式中断方式又称为前后台系统形式,系统在循环轮转方式的基础上增加了中断处理功能。ISR(Interrupt Service Routine,中断服务程序)负责处理异步事件,即前台程序(foreground),也称为事件处理级程序。而后台程序(background)是一个系统管理调度程序,一般采用的是一个无限的循环形式,负责掌管整个嵌入式系统软、硬件资源的分配、管理以及任务的调度。后台程序也称为任务级程序。一般情形下,后台程序会检查每个任务是否具备运行条件,通过一定的调度算法来完成相应的操作。而一些对实时性有要求的操作通常由中断服务程序来完成,大多数的中断服务程序只做一些最基本的操作,如标记中断事件的发生等,其余的事情会延迟到后台程序去完成。,锅布哦稳胺浇骄当箍框现泪糊代官悠剔微袋迂需牡跳龟抛管捡瓦呐坝挫啡ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,2有操作系统的嵌入式软件从20世纪80年代开始,操作系统出现在嵌入式系统上。如今,嵌入式操作系统在嵌入式系统中广泛应用,尤其是在功能复杂、系统庞大的应用中显得愈来愈重要。在应用软件开发时,程序员不是直接面对嵌入式硬件设备,而是采用一些嵌入式软件开发环境,在操作系统的基础上编写程序。在控制系统中,采用前后台系统体系结构的软件,在遇到强干扰时,可能会使应用程序产生异常、出错,甚至死循环的现象,从而造成系统的崩溃。而采用嵌入式操作系统管理的系统,在遇到强干扰时,可能只会引起系统中的某一个进程被破坏,但这可以通过系统的监控进程对其进行修复,系统具有自愈能力,不会造成系统崩溃。,均青奴埠岭保渤至瘟肋扛绸元匿至芒签谊秸谷柠秆秀冉泪翔垦豹焰嗡锹绩ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,在嵌入式操作系统环境下,开发一个复杂的应用程序,通常可以按照软件工程的思想,将整个程序分解为多个任务模块,每个任务模块的调试、修改几乎不影响其他模块。利用商业软件提供的多任务调试环境,可大大提高系统软件的开发效率,降低开发成本,缩短开发周期。嵌入式操作系统本身是可以剪裁的,嵌入式系统外设、相关应用也可以配置,所开发的应用软件可以在不同的应用环境、不同的处理器芯片之间移植,软件构件可复用,有利于系统的扩展和移植。,迹咙讲俺础等弊泊么己其搔遍召详邪森搁痕侄素誓聚焙苏制播淖颗罩浩览ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,嵌入式软件的体系结构图如图8.1.2所示,最底层的是嵌入式硬件系统,包括嵌入式微处理器、存储器、键盘、LCD显示器等输入输出设备。在硬件层之上的是设备驱动层,它负责与硬件直接打交道,并为操作系统层软件提供所需的驱动支持。操作系统层可以分为基本部分和扩展部分,基本部分是操作系统的核心,负责整个系统的任务调度、存储管理、时钟管理和中断管理等功能;扩展部分为用户提供网络、文件系统、图形用户界面GUI、数据库等扩展功能,扩展部分的内容可以根据系统的需要来进行剪裁。在操作系统的上面是一些中间件软件。最上层是网络浏览器、MP3播放器、文本编辑器、电子邮件客户端、电子游戏等各种应用软件,实现嵌入式系统的功能。,俘削竞镇恭屈补松剔远腥促熔矿饲趾房纺循郧权饵略沫讼掩帽蔫颖肩应奉ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,图8.1.2 嵌入式软件体系结构,淳乡簿秦窝孺涵郸垂烦坡稀惺眠挟恼粤噎舞材怨饮崎苗狈绍尹虹拈哲绪钨ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,8.1.4 嵌入式系统的设备驱动,嵌入式系统的设备驱动层用来完成嵌入式系统硬件设备所需要的一些软件初始化和管理。设备驱动层直接对硬件进行管理和控制,并为上层软件提供所需的驱动支持。1板级支持包设备驱动层也称为BSP(Board Support Package,板级支持包),在BSP中把所有与硬件相关的代码都封装起来,为操作系统提供一个虚拟的硬件平台,操作系统运行在这个虚拟的硬件平台上。在BSP当中,使用一组定义好的编程接口来与BSP进行交互,并通过BSP来访问真正的硬件。在嵌入式系统中,BSP类似于PC系统中的BIOS和驱动程序。BSP把嵌入式操作系统与具体的硬件平台隔离开来。,抓痒骸剂讽唤念沥甄勺聂锁倡三猩讫酶盅兆茫战力他光锦甩徊传觉询烤拈ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,一般来说,BSP是针对某个特定的单板而设计的,系统都会提供相应的演示版本的BSP(最小系统BSP)。BSP对于用户(指系统开发人员)是开放的,用户可以根据不同的硬件需求对其进行改动或二次开发。在实际开发一个嵌入式系统的时候,通常可以找到一个与自己的硬件系统相近的演示版本的BSP,并以此为基础,进行修改和完善,以适应不同单板的需求。BSP主要包括BootLoader(引导加载程序)和设备驱动程序两个方面的内容。对于不同的嵌入式操作系统,BSP的具体结构和组成是不相同的。,壕泄银绰毁沙论含吟束拖司雕丹涂绍线心叠亚侠厢碰舒摄煌守辫认逮惜塞ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,2BootLoaderBootLoader(引导加载程序)是在操作系统内核运行之前运行的一小段程序。通过这段程序,初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统内核做好准备。BootLoader用来完成整个系统的加载启动任务。通常在系统上电或复位时,BootLoader程序从地址0 x00000000处开始执行。BootLoader的功能与嵌入式系统的硬件平台直接相关,不同的CPU体系结构和板级设备配置,BootLoader的功能不同。一般来说,BootLoader主要包含片级初始化、板级初始化和加载内核等一些基本功能。,住离畜最掣登獭畏非郡悲殖嗓屋语慑填淘皿臻腿狼论糙腕忻首疹钡堕纯锥ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,(1)片级初始化片级初始化是一个纯硬件的初始化过程,把微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。片级初始化主要完成设置微处理器的核心寄存器和控制寄存器、微处理器的核心工作模式及其局部总线模式等初始化。(2)板级初始化板级初始化是一个同时包含有软件和硬件在内的初始化过程,通过正确地设置各种寄存器的内容来完成微处理器以外的其他硬件设备的初始化。例如,初始化LED显示设备、定时器、串口通信和内存控制器,建立内存空间的地址映射,设置中断控制寄存器和某些软件的数据结构和参数等。(3)加载内核将操作系统和应用程序的映像从Flash存储器复制到系统的内存当中,然后跳转到系统内核的第一条指令处继续执行。,惹唆坏涂蜜毁握汀篆浴惫伯郁暮摊汕涟膝瞻佳滴鹰焕餐茂淆例该皆着烫壤ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,3设备驱动程序在一个嵌入式系统中,可以没有操作系统,但设备驱动程序是必不可少的。设备驱动程序是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供访问接口。不同功能的硬件设备,它们的设备驱动程序是不同的。但大多数的设备驱动程序都具有硬件启动(初始化)、硬件关闭(关机)、硬件停用(暂停)、硬件启用(重新启用)、读操作(读取数据)、写操作(写入数据)等基本功能。设备驱动程序通常可以完成一些特定的功能,这些功能一般采用函数的形式来实现,这些函数有分层结构和混合结构两种组织结构形式。,尊敦吾差信以劲艺肖险具咨秩唐拂羞诱才段穗雏叮摧拙松青圣志愉嚷总甚ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,在分层结构中,设备驱动程序中的函数分为硬件接口和调用接口两种类型。硬件接口直接跟硬件打交道的,直接去操作和控制硬件设备;调用接口不直接与硬件打交道,它们调用硬件接口当中的函数,与上层软件(包括操作系统、中间件和应用软件)打交道的。分层结构把所有与硬件有关的细节都封装在硬件接口当中,在硬件要升级时,只需要改动硬件接口当中的函数即可,而上层接口当中的函数不用做任何修改。在混合结构中,上层接口和硬件接口的函数是混在一起、相互调用的,之间没有明确的层次关系。,谴遂胀靠浸缕名骄烂嚏辑钻晴盟伊腥胶瘤植看焙洁亲续拷遮瞩扑葛赋佐漫ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,8.1.5 嵌入式中间件,中间件是一种软件平台技术,在银行、证券、电信等行业的大型计算机应用系统中广泛应用。近年来,中间件技术也被引入到嵌入式系统的设计中,并与实时多任务操作系统紧密结合。利用中间件技术可以使用户把精力集中到系统功能的实现上,实现嵌入式系统的软硬件协同设计。嵌入式中间件是指不包括操作系统内核、设备驱动程序和应用软件在内的所有系统软件。嵌入式中间件把原本属于应用软件层的一些通用的功能模块抽取出来,形成独立的一层软件,为应用软件提供一个灵活、安全、移植性好、相互通信、协同工作的平台。嵌入式中间件可以分为消息中间件、对象中间件、远程过程调用(Remote Procedure Calls,RPC)、数据库访问中间件、安全中间件等不同的类型。一些公司可提供嵌入式中间件集成解决方案,如Sun公司的嵌入式Java,微软公司的.NET Compact Frame-work,OMG(Object Management Group)的嵌入式CORBA等。,筏驳娜蕉淄胎暇耿哉舱莱律烃爽植釜辛迷内历肘伤芬术却荷阴讫戚囊偷弘ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,8.2嵌入式操作系统基础,8.2.1嵌入式操作系统的功能在嵌入式系统中工作的操作系统称为EOS(Embedded Operating System,嵌入式操作系统),EOS的基本功能主要体现在以下两个方面:1构成一个易于编程的虚拟机平台EOS构成一个虚拟机平台,EOS把底层的硬件细节封装起来,为运行在它上面的软件(如中间件软件和各种应用软件)提供了一个抽象的编程接口。软件开发在这个编程接口的上进行,而不直接与机器硬件层打交道。EOS所提供的编程接口实际上就是操作系统对外提供的系统调用函数。2系统资源的管理者EOS是一个系统资源的管理者,负责管理系统当中的各种软硬件资源,如处理器、内存、各种I/O设备、文件和数据等,使得整个系统能够高效、可靠地运转。,悔故砚木但清脾贡届蔫噪棍闲烛丑规琉吨淮馋铁荤火勒坷拂滔椅拷士蛙负ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,运行在嵌入式环境中的EOS其目标是为了完成某一项或有限项功能,而非通用型的操作系统,因此在性能和实时性方面有严格的限制,能耗、成本和可靠性通常是影响设计的重要因素,要求占用资源少,适合在有限存储空间运行,要求系统功能可以根据产品的设计要求进行剪裁、调整。所有的EOS都有一个内核(kernel),内核是系统当中的一个组件,它包含了任务管理、存储管理、输入输出(I/O)设备管理和文件系统管理四个功能模块。其中:任务管理:对嵌入式系统中的运行软件进行描述和管理,并完成处理机资源的分配与调度;存储管理:用来提高内存的利用率,方便用户的使用,并提供足够的存储空间;I/O设备管理:方便设备的使用,提高CPU和输入输出设备的利用率;文件管理:解决文件资源的存储、共享、保密和保护等问题。注意:不同的嵌入式系统的EOS所包含的组件可能各不相同,内核设计也可能各不相同的,完全取决于系统的设计以及实际的应用需求。,玉讳燕蝇唾阐耐声城苗私兵轴俘沛阀廷沂陪啼娄藩瘤嘱隋咕锻谱忻童悯渠ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,8.2.2嵌入式操作系统的分类,EOS可以按照系统的类型、响应时间和软件结构等不同的标准来分类。1按系统的类型分类按照系统的类型,可以把EOS分为商业化系统、专用系统和开放源代码系统三大类。(1)商业化系统商业化的EOS有风河公司(WindRiver)的VxWorks,微软公司的Windows CE,Palm公司的PalmOS等等,其特点是功能强大,性能稳定,辅助软件工具齐全,应用范围广泛,但成本较高。(2)专用系统专用系统是一些专业厂家为本公司产品特制的嵌入式操作系统,一般不提供给应用开发者使用。(3)开放源代码系统开放源代码的嵌入式操作系统有C/OS和各类嵌入式Linux系统等,具有免费、开源、性能优良、资源丰富、技术支持强等优点,是近年来发展迅速的一类操作系统。,例剐缺磕惕架带忙突碱尿怨良刹终拐贸怂怂恍今绕儿麦裔链晴谜滁簿懦喇ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,2按响应时间分类按照系统对响应时间的敏感程度,EOS可以分为RTOS(Real Time Operating Systems,实时操作系统)和非实时操作系统两大类:。RTOS对响应时间有非常严格的要求,当某一个外部事件或请求发生时,相应的任务必须在规定的时间内完成相应的处理。RTOS可以分为硬实时和软实时两种情形。(1)硬实时系统硬实时系统对响应时间有严格的要求,如果响应时间不能满足可能会引起系统的崩溃或致命的错误。(2)软实时系统软实时系统对响应时间有要求,如果响应时间不能满足,将需要支付能够接受的额外代价。非实时系统对响应时间没有严格的要求,各个进程分享处理器,以获得各自所需要的运行时间。,逆跌氦亢阻幂貉诚宴己担皱爽俱魁之镣尤弦蕊集龟吼恢又秒盈靶先弓蔬誉ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,3按软件结构分类按照软件的体系结构,EOS可以分为单体结构、分层结构和微内核结构三大类,如8.2.18.2.3所示。(1)单体结构单体结构是一种常见的组织结构,嵌入式Linux操作系统、Jbed RTOS、C/OS-II和PDOS都属于单体内核系统。在单体结构(monolithic)的操作系统中,中间件和设备驱动程序通常就集成在系统内核当中,整个系统通常只有一个可执行文件,里面包含了所有的功能组件。单体结构的操作系统由一组功能模块组成,系统的各个模块之间可以相互调用,通信开销比较小,系统高度集成和相互关联,系统剪裁、修改、调试和维护不方便。,伊戈蛇叹低贮喜吗鸯秧茂夯履赡晃盾憾狰裳沾冶是罚特帜捡穴拟橱脊袄拜ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,图8.2.1 单体结构,图8.2.2 分层结构,祭陶挂妇盂湛灭成圣丽肪喜头唁愤酚叮瘩籍缴服壮当父阳屈元漫乓选宋荡ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,采用分层结构(layered)的操作系统内部分为若干个层次(0N),各个层次之间的调用关系是单向的,即某一层次上的代码只能调用比它低层的代码。分层结构要求在每个层次上都要提供一组API接口函数,增加了系统的额外开销,但系统的开发和维护较为简单。典型代表有MS-DOS,其结构就是一个有代表性的、组织良好的分层结构。(3)微内核结构微内核(microkernel)结构把操作系统的大部分功能都剥离出去,在内核中只保留最核心的功能单元(如进程管理和存储管理),大部分的系统功能都位于内核之外,例如,将所有的设备驱动程序都被置于内核之外,如图8.2.3所示。在微内核操作系统中,大部分的系统功能被放置在内核之外,客户单元和服务器单元的内存地址空间是相互独立的,系统具有更高的安全性。新的功能组件也可以被动态地添加进来,扩展、调试、移植方便。在微内核操作系统中,核内组件与核外组件之间的通信方式是消息传递,而不是直接的函数调用,运行速度可能会慢一些。另外,由于它们的内存地址空间是相互独立的,在切换的时候,也会增加额外的开销。,燎端头匆听统阶闭辟咏车去偏茧剂歪议箱扮呢惜葫竟竖煤蜘穷荡汐榆钥该ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,OS-9、C Executive、VxWorks,CMX-RTX、Nucleus Plus和QNX等EOS采用的都是微内核结构。,图8.2.3 微内核结构,攻街锌呕辰泞粥司旅激巨长芍怎因仕阴炭诈诞歪谆滑含林吩氨自旨斩垒蓝ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,8.2.3常见的嵌入式操作系统简介,嵌入式操作系统是操作系统研究领域中的一个重要分支,有许多公司在从事相关方面的研究,开发了数以百计的各具特色的嵌入式操作系统产品,其中比较有影响的系统有VxWorks、嵌入式Linux、Windows CE、C/OS-II和PalmOS等。1VxWorks美国WindRiver System公司开发的嵌入式实时操作系统VxWorks采用基于微内核的体系结构,整个系统由四百多个相对独立、短小精练的目标模块组成,用户可以根据自己的需要选择适当的模块,进行裁减和配置。VxWorks采用GNU类型的编译和调试器,专有的API函数,支持x86、Motorola MC68xxx、Coldfire、PowerPC、MIPS、ARM、i960等主流的32位处理器,具有良好的可靠性和卓越的实时性,是目前嵌入式系统领域中使用最广泛、市场占有率最高的商业系统之一。,骚鼎置棵赴坚熟脱检陆爽锣袁据饿桐鸿识殖郸奉硷揖辕徘再东菩韧叼租妇ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,在VxWorks操作系统中,主要包含有实时微内核Wind、I/O处理系统、文件系统、网络处理模块、虚拟内存模块VxVMI、板级支持包BSP等功能模块。其中:实时微内核Wind包括基于优先级的任务调度、任务间的通信、同步和互斥、中断处理、定时器和内存管理机制等功能。与ANSI C兼容的I/O系统包括UNIX标准的缓冲I/O和POSIX标准的异步I/O。文件系统主要包括与MS-DOS兼容的文件系统、与RT-11兼容的文件系统、Raw Disk文件系统和SCSI磁带设备。网络处理模块能与如TCP/IP、NFS、UDP、SNMP、FTP等许多运行其他协议的网络进行通信。虚拟内存模块VxVMI主要用于对指定内存区的保护,以加强系统的安全性。板级支持包BSP由初始化和驱动程序两部分组成,用来管理硬件的功能模块,对各种板卡的硬件功能提供统一的接口。,来栗笛片是瘩馅匈复虫篆辕赴任步菜娶擂英保异骤扳獭试呻赏技还他鸳猜ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,2嵌入式Linux嵌入式Linux(Embedded Linux)是指对标准Linux进行小型化剪裁处理之后,可固化在存储器或单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。常见的嵌入式Linux有Clinux、RT-Linux、Embedix和Hard Hat Linux等,具有如下特点:具有高性能、可裁剪的内核,其独特的模块机制使用户可以根据自己的需要,实时地将某些模块插入到内核或从内核中移走,很适合于嵌入式系统的小型化的需要。具有完善的网络通信和文件管理机制,支持所有标准的Internet网络协议,支持ext2,fat16,fat32,romfs等文件系统。可提供完整的工具链(Tool Chain),利用GNU的gcc做编译器,用gdb,kgdb,xgdb做调试工具,能够方便地实现从操作系统到应用软件各个级别的调试。嵌入式Linux是开放源码的自由操作系统,用户可以根据自己的应用需要方便地对内核进行修改和优化。,巨龟矾檀阀映钒笛沦行屎挟爽拒溅搓拓懒流醒焉戎乾船窗木赫栓勋厂惜蝇ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,支持x86、ARM、MIPS、Alpha、PowerPC等多种体系结构,支持各种主流硬件设备和最新硬件技术。几乎每一种通用程序在Linux上都能找到,具有丰富的软件资源。C linux主要针对没有MMU的微处理器;RT-Linux是最早实现硬实时支持的Linux版本;Embedix采用模块化的设计方案,方便系统剪裁;Hard Hat Linux是一个嵌入式实时系统,可以针对硬件环境进行配置,以获得最佳的性能和最小的容量。3Windows CEWindows CE是一个基于优先级的多任务嵌入式操作系统,提供了256个优先级别,基本内核需要至少200KB的ROM,支持Win32API子集、支持多种用户界面硬件、支持多种串行和网络通信技术。Windows CE不是一个硬实时系统。,知仑戊秤霞史矢谱胺暖齐虐钥睦焰烷仆任恃揪雏披铀镭蒲灿配漂萍松绘胎ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,Windows CE主要包含内核模块、内核系统调用接口模块、文件系统模块、图形窗口和事件子系统模块和通信模块五个功能模块。其中:内核模块支持进程和线程处理及内存管理等基本服务。内核系统调用接口模块允许应用软件访问操作系统提供的服务。文件系统模块支持DOS等格式的文件系统。图形窗口和事件子系统模块控制图形显示,并提供Windows GUI图形界面。通信模块允许同其他的设备进行信息交换。Windows CE操作系统集成了大量的Windows XP Professional的特性,能提供与PC机类似的桌面、任务栏、窗口、图标、控件等图形界面和各种应用程序。熟悉Windows操作系统的用户可以很快地使用基于Windows CE的嵌入式设备。另外,微软公司提供了Visual Studio.NET、Embedded Visual C+、Embedded Visual Basic等一组功能强大的应用程序开发工具,专门用于对Windows CE操作系统的开发。,契顺骚孕拥藏褐核憎暇顺癸运月养绷何俊蔚治窃世庶誉岸穆制久蜀徊嫡所ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,4C/OS-IIC/OS-II是一种免费、开放源代码、结构小巧、基于可抢占优先级调度的实时操作系统,其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。名称C/OS-II来源于术语Micro-Controller Operating System(微控制器操作系统),它通常也称为MUCOS或者UCOS。C/OS-II内核在2KB 10KB数量级,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,主要面向中小型嵌入式系统。C/OS-II内核提供最基本的系统服务,例如信号量、邮箱、消息队列、内存管理、中断管理等。C/OS-II内核本身并不支持文件系统,但它具有良好的扩展性能,可以根据需要自行加入。C/OS-II具有良好的可移植性。C/OS-II的大部分代码都是用C语言写成的,只有与处理器的硬件相关的一部分代码采用汇编语言编写。C/OS-II并不是一个商业实时操作系统,但C/OS-II的稳定性和实用性却被数百个商业级的应用所验证,C/O S-II不已在众多的商业领域中获得了广泛的应用。C/OS-II支持ARM、PowerPC、MIPS、68k/ColdFire和x86等多种体系结构。,蜂介逗算旨坍捧幅器劫肋狂担仅臻剑忆跌涩戌彭窟舜验死榷恭乓轿僧贞未ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,8.3 嵌入式系统的任务管理,8.3.1 单道程序设计和多道程序设计嵌入式操作系统可以分为单道程序设计和多道程序设计(mufti-programming)两种类型。1单道程序设计类型采用单道程序设计的操作系统在任何时候只能有一个程序在运行。例如:有两个程序甲和乙,它们在运行过程中都要用到CPU和I/O设备。如图8.3.1所示,图中我们采用不同的方框来表示这两个程序对两种资源的使用情况,方框的长度表示使用的时间。在单道程序设计的环境下,在任何时候,系统中只能有一个程序在运行,因此,甲和乙这两个程序只能一个接一个的执行。如图8.3.1所示,首先执行程序甲,从t0时刻开始,到t6时刻结束。然后再执行程序乙,从t6时刻开始,一直到它所有的工作都已完成。,轴豁胃际匙操诲拂氛官但须粉券冕戌辈听闸吧北递傍官讳张票拆游森莎秩ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,2.多道程序设计类型采用多道程序设计的操作系统允许多个程序同时存在并运行,采用多道程序技术可以有效提高系统资源的利用率。在多道程序设计的环境下,允许多个程序同时运行,当一个程序在访问I/O设备时,会主动把CPU交出来,让另一个程序去运行,从而提高系统资源的使用效率。如图8.3.1所示,从t0到t1,甲在使用I/O设备,乙处于等待状态。在到达了t1时刻后,甲释放刚刚占用的I/O设备,交给程序乙去使用。因此,在t1到t2期间,程序甲在使用CPU,程序乙在使用I/O设备。在到达t2时刻后,乙释放刚刚占用的I/O设备,交给程序甲去使用。因此,在t2到t3期间,甲和乙两个程序相互交换资源,继续执行。同样的情形也发生在t3时刻和t4时刻。但是在t5时刻,甲已经使用完了I/O设备,而乙仍然在使用CPU,所以甲只能处于等待状态,等到t6时刻再交换资源。这样一直进行下去,在t7时刻,甲执行完毕,在t8时刻,乙也执行完毕。从图8.3.1可见,由于CPU和I/O设备的使用是并行进行的,在总的执行时间上要明显少于单道程序系统。,尉譬背妆澎泣庄细尽诣蜕敷雕此眶向搞裔刊篇丸诣权义四屋即肆脆直秤陷ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,图8.3.1 单道程序与多道程序的运行过程,扳魏华叶羚秉剖亥茁巍淡啤币沏菲安执亡甲磷挠刚封吾厉朵想聂佃归虐保ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,8.3.2进程、线程和任务,1进程进程(process)是在描述多道系统中并发活动过程引入的一个概念。进程和程序是两个既有联系又有区别的概念,两者不能混为一谈。例如:一个程序主要由代码和数据两部分内容组成。而进程是正在执行的程序,它是由程序和该程序的运行上下文两部分内容组成。程序是静态的,而进程是一个动态的,变化的。进程和程序之间并不是一一对应的。一个进程在运行的时候可以启动一个或多个程序,同一个程序也可能由多个进程同时执行。程序可以以文件的形式存放在硬盘或光盘上,作为一种软件资源长期保存。而进程则是一次执行过程,它是暂时的,是动态地产生和终止的。一个进程通常包含有以下几个方面的内容:相应的程序:进程是一个正在运行的程序,有相应程序的代码和数据。,惋懊搪糖毡秘浴欣腕还菇辣损现竭绷贸蚜饲抓歌呜击汁挣斑谊仙里笋钳不ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,CPU上下文:程序在运行时,CPU中含有PC(Program Counter,程序计数器)、PSW(Program Status Word,程序状态字)、通用寄存器、段寄存器、栈指针寄存器等各种寄存器的当前值内容,例如:在PC中记录的将要取出的指令的地址,在PSW中用于记录处理器的运行状态信息,通用寄存器存放的数据或地址;段寄存器存放的程序中各个段的地址;栈指针寄存器记录的栈顶的当前位置。一组系统资源:包括操作系统用来管理进程的数据结构、进程的内存地址空间、进程正在使用的文件等。总而言之,进程包含了正在运行的一个程序的所有状态信息。进程具有动态性,进程是一个正在运行的程序,程序的运行状态都在不断地变化,如PC寄存器的值、堆和栈的内容、通用寄存器存放数据和地址等。进程具有独立性,一个进程是一个独立的实体,占有计算机的系统资源,每个进程都有自己的运行上下文和内部状态,在它运行的时候独立于其他的进程。进程具有并发性,在系统中同时有多个进程存在,它们相互独立地运行。,诞冲锻闪痈餐彭予虞仁擅勉科则铜楼宋炉迅痔亨羡涂再嘱柱袍砷逝介脐辱ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,2线程线程(thread)是一个比进程更小的能独立运行的基本单位。所谓的线程,就是进程当中的一条执行流程。从资源组合的角度来看,进程把一组相关的资源组合起来,构成了一个资源平台(资源环境),其中包括运行上下文、内存地址空间、打开的文件等,在图8.3.2中用深色的方框来表示。从程序运行的角度来看,进程就是一个正在运行的程序,在图8.3.2中用一条带有箭头的线段来表示。从图8.3.2可见,可以把进程看成是程序代码在这个资源平台上的一条执行流程(线程),也就是可以认为进程等于线程加上资源平台。如图8.3.2所示,在一个进程当中,或者说在一个资源平台上,可以同时存在多个线程。可以用线程来作为CPU的基本调度单位,使得各个线程之间可以并发执行。对于同一个进程当中的各个线程来说,运行在相同的资源平台上,可以共享该进程的大部分资源(如内存地址空间、代码、数据、文件等),但也有一小部分资源是不能共享的,每个线程都必须拥有各自独立的一份(如CPU运行上下文(如PC寄存器、PSW寄存器、通用寄存器和栈指针等)和栈)。,稀膝句哲睡伏邱拽镁皂兑魔厌蒙圆酝并彦篷苟掷耗吝缝栏环异歉勉丰感滔ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,图8.3.2 线程与进程的资源关系,广灾案跑赤杨划刹拟斑脏裙镭桂收疤辱靛乌习梯冻珠至并芬氓亲侈渡搬紫ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系统,3任务在一些嵌入式系统中,把能够独立运行的实体称为“任务”(task),并没有使用“进程”或“线程”这两个概念。任务到底是进程还是线程,在研究一个具体的嵌入式操作系统的时候,要注意加以区分。在任务的创建过程需要定义的主要参数有任务的优先级、栈空间的大小和函数名。任务具有独立的优先级和栈空间,CPU上下文一般也是存放在栈空间中。对于不同的任务,它们也能够访问相同的全局变量,在这些任务之间,可以很方便地、直接地去使用共享的内存,而不需要经过系统内核来进行通信。通常认为,在嵌入式操作系统中“任务”就是线程,如在VxWorks、C/OS-II、Jbed、嵌入式Linux等嵌入式操作系统中。,誓秆蚌留择展娜惠若陷疚自对瑟侣钉瘦抛扑蒋羌溶蠢册拘鞋岳侗扣咎焕林ARM汇编语言程序设计基础 第8章 嵌入式系统ARM汇编语言程序设计基础 第8章 嵌入式系