【VC++开源代码栏目提醒】:网学会员在VC++开源代码频道为大家收集整理了“基于状态机及构件技术的软件开发框架在嵌入式设计中的应用 - 其它论文“提供大家参考,希望对大家有所帮助!
基于状态机及构件技术的软件开发框架在嵌入式设计中的应用 目 录 目 录目蜀之..…………………………………………………..I摘要..…………………………………………………..1ABSTRACT…………………………….……………….……2第一章绪论………………………………………………41.1
论文课题的背景…………………………………………..41.2国内外的研究及现状………………………………………51.3
论文所要解决的问题………………………………………61.4
论文章节安排……………………………………………7第二章构件技术和有限状态机………………………………….82.1有限状态机………………………………………………82.2有限状态机的应用及状态设计模式……………………………102.3状态图编译器(State Map Compiler)………………………..142.4构件技术及其应用………………………………………..18第三章应用开发框架………………………………………..213.1应用开发框架的提出及其功能………………………………213.2应用开发框架总体设计……………………………………223.3应用开发框架中MVC模式的实现…………………………….233.4状态设计模式在开发框架中的应用…………………………..253.5构件技术在开发框架中的应用………………………………29 3.5.1基础构件及其实现…………………………………..30 3.5.2信息处理构件及其实现……………………………….33 3.5.3 Sequencer构件及其实现……………………………..38第四章开发框架在嵌入式系统中的应用………………………….464.1可录DVD系统硬件简述……………………………………464.2利用开发框架实现播放和录制功能…………………………..47 4.2.1使用开发框架实现播放中间件………………………….47 4.2.2使用开发框架实现录制中间件………………………….50 4.2.3使用开发框架在上层实现播放和录制功能…………………534.3使用开发框架实现时移(TimeShift)功能…….………….…..54 4.3.1使用开发框架实现时移功能中间件………………………54 4.3.2使用开发框架实现时移功能的上层模块…………………..57毳五:兰结论...............................\1眦Y删1m9帆6州眦7mlm2\l\\9帆...60I附录………………………………..1…………………. 62状态编译器自动产生的
代码……………………………………62 II基于状态机及构件技术的软件开发框架在嵌入式设计中的应用 摘要 摘要 随着计算机科学的发展,嵌入式系统也得到了迅猛的发展,各种各样的消费电子产品得到越来越广泛的应用。
以可录DVD机为代表的家庭影音产品由于不仅具备传统的DVD播放机所有的功能,并且能很好满足用户越来越突出的影音资料的录制和存储的问题,因而得到了越来越多用户(尤其是在欧美等发达国家的用户)的认可。
然而,随着功能的不断增加,以这些复杂多媒体消费电子产品为代表的嵌入式系统上的软件也变得越来越复杂,虽然现在这些复杂的嵌入式产品上大多使用了比较先进的实时操作系统(如风河公司的vxWorks)来缩短开发周期,但是功能的复杂性仅靠使用一个好的操作系统还是无法解决整个系统软件的复杂度,这就使得我们必须要有一个很好的软件体系结构以及系统开发框架,并且综合使用各种设计模式,这样才能避免嵌入式系统软件开发中可能出现的“软件危机”。
本文通过分析原有大型嵌入式软件系统,针对可录DVD系统提出了一套软件开发框架AF(Application FrameWork)。
该框架结合状态图编译器这个
开源工具,使用状态机,观察者等多种设计模式,综合构件技术,在降低模块之间耦合性的同时,提高了
代码的重用性,增加了系统的可维护性和可扩展性,有利于软件质量的提高。
本文对软件开发框架系统的实现做了详细的描述,同时以嵌入式可录DVD机系统为例,给出了基于这套开发框架的播放、录制、时移 (timeshift)等这些主要功能的具体实现,从中阐述通过该软件开发框架对提高
代码复用程度,促进团队的开发效率,缩短开发周期,降低开发维护成本的有利影响,同时对该框架存在的一些不足之处做了简要的分析。
关键词有限状态机,设计模式,开发框架,构件技术,嵌入式系统,可录DVD机,实时操作系统 基于状态机及构件技术的软件开发框架在嵌入式设计中的应用 ABSTRACT ABSTRACT With the development of computer science,the embedded system grows rapidly,now a11 kind of consumer electronic product has been used more and more widely.As one of the most important home audio and video electronic product,DVD Recorder not only have the same(even more) functionality of traditional DVD player,but also can satisfy the requirement of recording and storing more and more audio and video contents.Now the DVD/HDD recorders are becoming the most popular home AV products,especial ly in North American and Europe market. Along with all kind of functions integrated into these embedded products,the software in these embedded multimedia consume electronic products are becoming more and more complex.Although most of companies have been using some advanced real—。
time embedded operation system(such as Vxworks from Wind River)during developing such products to shorten development cycle,they still cannot decrease complexness of whole software system.I t i s very important to use or devel op excel l ent software architecture and system framework which integrates some suitable design pattern to avoid the“software crisis”during the development of software on embedded system. This thesis analyzes the large scale embedded software system and br i ngs forward an App l i cat i on Framework(AF)for DVD recorder embedded system.The Application Framework use finite state machine(FSM)byreference the open source tool state map compi ler and apply state pattern,observer pattern and etc many design patterns,and also componenttechnique is widely used in this framework.The AF can lighten thecoupling in different modules and at mean time increase the reusability,meanwhile it can provide with whole system much more scalability andmaintainability which will profit the whole software quality.Besidesdetail description for the application framework,the thesis presentshow to implement playback,recording and time-shift feature base on theAF in DVD recorder system.From the implementat ion,we can see that theAF can increase the reuse degree and shorten the whole develop cyclesignificantly.At the same time,the con of the framework was discussed 2at the end of this thesis. Keywords- FSM,Design Pattern,Application Framework,Embedded System,real—time operation system,DVD recorder 3地抽象出来,因而以前的成果和经验没有得到充分的利用,为了解决这样的情况,软件重用技术越来越得到人们的重视。
有限状态机理论在计算机应用领域有着广泛的应用,合理的利用状态机及构件技术并配合其他的一些优秀的设计模式能在保持系统自身特点的基础上,达到最大限度的软件重用,从而能大大缩短嵌入式系统项目的开发周期,并且易于维护。
1.1
论文课题的背景 可录制的DVD机(数字录像机,DVD Recorder)作为DVD播放机的升级产品,是家庭电子消费产品的一个新的热点,除了对传统DVD播放机已有功能(如VCD,DVD的播放,mp3播放,jpeg播放,divx播放等)的支持外,它还需要支持将各种模拟及数字的音视频信号(如传统的模拟电视信号,通过CVBS输入的AV源,通过1394接口的DV源,以及各种数字电视制式如DVB—T、DVB—S、ATSC等)使用不同的编码方式(MPEG-I,MPEG-2,MPEG-4等)录制在不同格式DVD碟片上(DVD+R,DVD-R,DVD+RW,DVD-RW,DVD—RAM),另外也可以直接录制在硬盘或者USB盘上。
相对于传统的DVD播放机,带有录制功能的DVD机上的嵌入式软件的复杂度远远超过了传统的DVD播放机。
除此之外,以蓝光为基础的下一代的DVD不仅在硬件技术方面有了很大的不同,软件方面,蓝光技术规范必须要求支持MPEG一2,H.264/AVC,VC一1这些视频的解码;在音频解码方面要求支持Dolby Digi tal,DTS,Linear PCM,DolbyDigital Plus,DTS—HD High Resolution Audio等。
因而同传统的DVD播放机 4 中的应用 第一章绪论相比,蓝光的播放具有更高的难度,其对应的软件系统要求也更高。
除此之外蓝光碟的播放还使用Java技术来实现与用户的互动操作。
虽然这些新技术引发出来巨大市场商机,如果没有一个好的软件架构,是很难想象去完成这些复杂的产品实现,因而无法在这些市场上取得一个很好的回报。
对于这些复杂的多媒体嵌入式产品来说,只有通过良好的架构设计使原来的片上系统(system onchip)变成片上解决方案(solution on chip)才能在激烈的市场竞争中占据有利的位置。
1.2国内外的研究及现状 对于复杂的嵌入式系统软件,为了解决在嵌入式系统开发设计过程中遇到的各种问题,前人做了很多这方面的研究,产生了大量的方法和具体实现。
文献【1】通过事件驱动模型来对实时嵌入式系统进行,尝试使用简单的方法和
代码来建立一个快速有效的系统,但这种实现方式适合于功能较少、需处理任务数量较少的小型设备中,对于复杂的大型嵌入式系统不是特别适用…。
文献121给出了一种通过状态机来实现嵌入式数字电视机顶盒软件系统的方法,它利用状态机作为进程管理者来确保系统的稳定性和可靠性,有利于减轻开发人员的工作量,降低开发成本,提高软件的可读性,增强软件的可维护性和扩充性”。
。
文献 〔31利用层次状态机实现嵌入式系统下的可复用框架,使得嵌入式系统软件能在体系结构层次得到较大粒度的设计复用,该方法虽然在一定程度上解决了软件复用问题,但还是没有很好地解决嵌入式系统复杂性的问题”。
。
文献14〕提出了利用有限状态机制作程序框架的基本思想,虽然能在一定程度上简化编程,降低了对编程人员的要求,但并不十分适合一些状态比较复杂的系统“。
。
文献151讨论了在
设计实时系统模型时使用有限状态机的方法,同时对Mealy模型和Moore模型的自动状态机作了比较,说明了嵌入式软件工程中应用经过适当修改的有限状态机,对于产生一个健壮的高质量的嵌入式系统有很大的帮助,此外通过使用有限状态机,能很好的检查需求和实现间的差异…。
文献161介绍了软件重用技术在嵌入式领域的应用以及重用的好处,探讨了一个可重用的嵌入式系统框架,通过分层的结构设计来屏蔽不同操作系统和底层硬件之间的差异,从而使系统具有良好的可移植性和缩放性“。
。
文献1 7 1讨论基于构件的嵌入式系统软件复用技术,提出工业嵌入式系统的软件设计方法,它以软件构件形式对其进行封装,为
系统集成各种应用级
软件提供了总体框架,在一定程度上解决了控制系统应用软件难维护、难继承的
问题”。
。
文献181提出了一个基于构件的构造模型,通过使用一个轻便的核心构件库,并且引入了构件框架概念,使系统能在运行时进行配置系统,能有效缩短嵌入式系统软件开发周期”。
。
5基于状态机及构件技术的软件开 发框架在嵌入式设计中的应用 第一章绪论1.3
论文所要解决的 问题 作者所在的迈能半导体技术有限公司(原Cirrus Logic视频部门+原LSILogic消费电子部门)是一家全球领先的专业IC设计公司,是消费类电子产品
方案提供商之一,目前迈能半导体是DVD编解码芯片领域的领头企业。
从2004年开始作者主要从事可录DVD机上嵌入式系统软件的开发和维护,期间负责过GUI模块、中间件、底层芯片SDK接口及其系统框架的开发和设计,深入了解整个软件系统的结构和流程,并对整个系统做了一定的重构工作。
在使用原来的软件开发方法来开发新系统的时候,我们经常会碰到如下的挑战: 1. 为DVD播放机所写的软件不容易扩展到更加复杂的产品中去,如DVD Recorder。
2. 要在不同的产品中重用一些应用层软件很困难 3. 集成第三方的中间件比较困难 4. 即使只有用户界面和操作方式的需求变化,也需要投入大量的时间 和人力去实现 5. 产品的测试很困难,不同的产品需要投入大量的测试工作。
为了很好的解决这些问题,我们开发了一套应用软件框架AF(AppilcaitionFramework)。
该软件架构通过使用状态机编译器这个
开源工具,集成了自动状态机,能很好地将状态转移逻辑和具体的行为实现分离,同时结合构件技术,使应用软件框架具备以下特点: 1.很容易将简单类型产品上的应用扩展到复杂系统中 2.系统的构件与应用具有较低的耦合,不同的应用使用不同的构件搭建出 来,极大的提高了
代码的可重用性,有利于软件质量的提高。
3.开放的接口,容易与第三方软件整合 4.客户化的时候只需很小的
代码改变 5.整个系统是基于消息的处理,容易实现自动测试。
经过多年的摸索和积累,现在我们使用Application Framework(AF)作为整个公司嵌入式软件系统的软件架构,它很好的解决了不同客户间整体解决方案的
代码重用问题。
以可录DVD机嵌入式系统为例,整个可录DVD系统可以看成一个大的状态机,由于不同客户使用的是我们的同一个芯片,该芯片提供的底层功能函数是一致的,因此,不同客户的不同需求实际上最主要的区别是其状态转移的逻辑不同。
因此我们只要对不同的客户使用不同的状态转移逻辑分离出来,其他部分的
代码就能作为公用
代码,实现在不同客户间的共享,不仅大大提高了软件的复用程度,而且还大大缩短了项目开发和测试的时间。
我们使用重构后的开发框架给多个项级客户开发了多个可录DVD机产品,取得了巨 6基于状态机及构件技术的软件开发框架在嵌入式设计中的应用 第一章绪论大的成功,开发周期(从立项到用户最终量产)比以往的项目缩短了30%,受到了公司和用户的一致好评。
1.4
论文章节安排 本文共分为五个章节,针对嵌入式可录DVD机(数字录像机)应用开发的现状,结合自动状态机,详细地探讨了应用开发框架,最后对可录DVD机和数字录像机做了总结和展望 第一章引言部分,主要介绍了在消费电子和现代嵌入式系统发展的大环境下,分析了在复杂的嵌入式系统开发中的一些问题以及前人的研究现状,说明了课题的研究意义,提出了本文的主要
工作,最后简要说明了
论文章节安排。
第二章主要对状态机、状态图编译器以及构件技术的介绍,分析如何将现有的自动状态机编译器以及构件技术和应用开发框架有机的结合起来。
第三章介绍现有框架技术的现状,分析现有技术的优势和不足。
内容涵盖了各种框架构件及其开发实现过程。
第四章结合实际项目介绍可录DVD机的硬件和软件系统,着重介绍使用应用开发框架在嵌入式DVD机参考版上的播放,录制以及时移(timeshift)等主要功能实现过程。
第五章对项目工作进行了总结,并且对系统的不足之处进行了分析,对未来嵌入式数字录像机的发展进行了展望。
最后是附录,给出了状态机编译器根据文中的一个状态图描述文件产生的源
代码。
以及状态机编译器自带的两个基类的头文件。
7基于状态机及构件技术的软件开发框架在嵌入式设计中的应用 第二章构件楚查塑塑堕鉴查垫 第二章构件技术和有限状态机 构件技术和有限状态机在
计算机软件工程中有着广泛的应用。
“软件构件化”是一种理想的软件开发理念,其主要思想是让软件产品的开发像制造工业产品那样,首先开发出具有标准接口的功能模块,然后按照系统具体需求选择其中相应的功能模块并把它们组织起来最终成为所需要的软件系统,类似于工业产品部门通过专业化分工生产出不同功能但具有标准化接口的“零部件”,再将这些“零部件”通过有机的连接合理地组装起来,形成所需的产品。
有限自动机(Finite AutomataMachine)是计算机科学的重要基石,在软件开发领域内常常被称为有限状态机(Finite State Machine,FSM),状态设计模式(State Pattern)是有限状态机的一个具体应用,是一种应用非常广泛的软件设计模式(Design Pattern)。
2.1有限状态机 有限状态机可以看成一种具有离散输入输出系统的模型,它在任何时刻,都处于一个特定的状态。
对于以事件驱动的
程序设计(如嵌入式系统,常常会以用户的遥控器输入来驱动),它是非常有用的设计模型。
当在某一个状态下有事件发生时,根据当前状态和输入事件的不同,选择不同处理该事件对应的方法以及决定是否需要转换到下一个状态。
一般来说,有限状态机(FSM)可以看成一个五元组FSM=(Q,∑,6,qO,Z),其中:·Q表示一个有限的状态集合,包含了该状态机所有可能的状态;·∑表示该系统能接收的所有事件的集合,这些事件通常能触发状态的迁移;·变迁函数6:Q×∑-.Q,也常被称为状态转移函数,它描述了系统中每个状态转换到其它状态所需要处理的操作,只要该事件发生,就会发生转换并且执行该状态转移函数。
我们常用定义式6(ql,e)=q2表示在q1状态下接收事件e之后,转入指定的新状态q2:·qOeQ是系统的一个特殊状态,一般是系统启动时的状态,常被称为起始状态,整个系统的状态切换就是从这个状态开始的;·ZeQ是终结状态的集合,可以看成是整个系统退出时的状态,是整个系统在其生命周期里的最后一个状态。
在描述有限状态机时,状态、事件、转换和动作是经常会碰到的几个基本概念。
状态总是附属在某个对象上,可以看成是该对象的一个特定属性(用C++实现时,通常可以用其中的一个成员变量来表示),指的是某个对象在其生命周期 8 基于状态机及构件技术的软件开发框架在嵌入式设计中的应用 第二章构件技术和有限状态机 中的一种状况,处于某个特定状态中的对象必然会满足某些条件、执行某些动作 或者是等待某些事件; 事件(Event)指的是在时间和空间上占有一定位置,并且 对当前状态机来讲是有意义的那些事情,事件通常会引起状态的变迁,促使状态 机从一种状态切换到另一种状态;转换(Transition)是指两个状态之间的一种 关系,表明对象将在第一个状态中执行一定的动作,并将在某个事件发生同时某个特定条件满足时进入第二个状态; 动作(Action)指的是状态机中可以执行的那些原子操作,所谓原子操作指的是它们在运行的过程中不能被其它消息所中断,必须一直执行下去。
有限状态机一般有两种表示方式:状态转移表和状态转移图。
简单的状态转移表通常可以用一个二维表格来描述。
下表(表2-1)就是一个状态转移表的例子,描述了事件E1,E2,E3,E4发生在不同状态时(状态1,状态2,状态3,状态4)相应的状态转移。
该状态转移表描述了如下的状态转移关系: 在状态1时,系统收到事件El贝t〕转移到状态2,收到事件E2贝J〕转移到状态3,收到事件E3和E4贝s〕不发生任何的状态转移;在状态2时,系统收到事件E2贝JJ转移到状态3,收到事件E3则转移到状态4,而收到事件E1和E4则不发生任何的状态转移;在状态3时,系统收到事件E坝U转移到状态2,收到事件E4贝IJ转移到状态4,收到事件E2和E3贝JJ不发生任何的状态转移:在状态4时,系统收到事件El贝1〕转移到状态1,收到事件E2贝I〕转移到状态2,收到事件E3和E4贝I〕不发生任何的状态转移。
表2-I状态转移表 状态1 状态2 状态3 状态4E1 状态2 状态2 状态1E2 状态3 状态3 状态2E3 状态4E4 状态4 状态转移图由于更加直观,通
常用有向图来表示有限状态机,其节点代表状态。
若在状态1接收到某个输入事件E后转向状态2,就在图中画一条从状态1到状态2的带箭头的弧线,并在弧线上标记E。
图2-I就是把上面的状态转移表(表2-i)通过有向图的表示。
9 术和有限状态机2.2有限状态机的应用及状态设计模式 有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。
在面向对象的软件系统中,不管是一个简单的对象还是一个复杂的对象,都必然会经历一个从开始创建到最终消亡的完整过程,这也常被称为一个对象的生命周期。
一般说来,对象在其生命期内是不可能完全孤立的,它必须通过发送消息、命令来影响其它对象,或者通过接受消息、命令来改变自身。
在大多数情况下,这些消息都只不过是些简单的、同步的方法调用而已。
然而在复杂的嵌入式软件(如嵌入式可录DVD机的软件系统)中,状态机往往是嵌套的,即在某一个主状态下,又分了若干个子状态,例如在可录DVD机系统中,DVD播放这个大状态可以分为暂停,快进,快退,慢放,停止等多个子状态。
状态机的状态通常是以堆栈的方式来存储的,可以通过push和pop操作来实现状态的保存和恢复。
每个状态一般分为进入(做一些必要的初始化,分配空间等),中间处理事件的状态,退出(做一些善后工作,包括释放在初始化的时候分配的空间)。
在子状态中处理事件时,一般考虑至少设计两个状态,一个是提供给外部的数据(如界面的显示部分),另一个是数据的处理、转换、存储等。
有限状态机是依靠事件的触发来进行状态变换的。
在实际运行过程中,事件的存储结构通常为一个先进先出的队列。
事件有二个来源,一是外部触发事件:比如响应用.