面向对象的嵌入式系统开发技术
来源:互联网发布时间:2018-09-01969浏览
询问 AI目前,嵌入式系统大都采取分层结构设计,并允许根据需要对不同的层次进行重写和替换。抽象接口是在抽象层定义的,不依赖于任何特殊硬件。所有顶层的操作和输入处理都建立在抽象接口之上。这种分层结构实际上就是一种面向对象的程序结构,目的是将底层实际的不同驱动抽象成对上层的统一接口。进程管理、线程管理、内存管理、设备管理等也可以抽象成为统一的接口,方便嵌入式系统的开发。 采用上述分层方法,使用标准C或者标准C++编写上层的应用程序,把与硬件及操作系统相关的接口完全封装起来,对上层应用程序编写着来讲,完全感觉不到底层的变化。硬件变化或操作系统改变只需将硬件依赖型接口内部改变即可,这样就能满足程序运行于不同操作系统上的需要,并且可以是在不同系统下采用统一的接口。 2 面向对象嵌入式设计与模型的实际应用 数字视频监控系统是以计算机为核心,结合视频处理、通信、网络和存储技术的一种监控系统。数字视频监控系统具有以往传统的电视监控系统等所有的功能,并且在远距离、性能方面相比具有很大的优势。它与计算机相结合,使得异地、远距离监控变得非常方便;与网络、通信的结合,形成更有实用价值、功能更加强大的网络通信管理系统。信息化的时代要求信息的处理随时随地,而数字视频监控系统正是这种特点和趋势的具体体现。 已经实现的SuperVisionl.0为了保证具有良好的灵活性和可扩展性,在开发中使用了许多面向对象技术。根据实际生活以及监控系统的需要,分析数字视频监控系统中可能出现的异常情况,重点在于运动检测,异常报警处理方面的设计,以及整个工程的速度性能的考虑。设计静止物体缓慢变化、光线缓慢变化以及消除噪声和干扰等多种具有不同应用需求的动态检测算法,同时提出不同灵敏度的“阶梯思想”;设计远程控制与本地控制并行处理的机制算法,构建本地的Web服务器,方便用户快捷方便地控制;设计整个监控系统结构整合的算法,保证视频、图像的捕捉,异常监测,报警机制(包括E-Mail、Ftp、电话、纪录备份、Web访问)与记录回放等的协调工作;在内容存储上,采用高效的MPEG-4的压缩算法,图片采用BMF,JPEG的方式,方便运动检测和网络的传输;友好的人机界面提供便利的操作,满足视频监控系统中实时传输、处理和回放等需求。2.1 系统实现流程及结构分析 目前,流行的嵌入式软件大都是采取分层结构设计的。SuperVision1.O也采用了这种分层的结构设计,并允许根据需要对不同的层次进行重写和替换,抽象接口是在抽象层定义的,不依赖于任何特殊硬件。所有顶层的操作和处理都建立在抽象接口之上。这种分层结构实际上就是一种面向对象的程序结构,目的是将底层实际的不同驱动或者实现抽象成对上层的统一接口。在实现中底层部分主要针对视频采集和压缩算法的接口统一实现,针对不同的驱动和压缩得到统一的上层接口,方便扩展和修改。上层中的报警机制(包括E-Mail、FTP、电话,纪录备份和Web访问)采用对象的特点,把每个报警方法都抽象成为对象,针对每种不同的程序实现统一使用接口。系统流程如图2所示。 报警机制部分主要实现远程控制和实时数据传输部分功能部分功能。 ①远程控制:采用Server/Browser结构,使客户端能够在网上任何节点接入,实现客户端发布的零配置,同时实现用户验证机制,确保安全。实现的主要功能包括:开启/停止监控系统的实时报警,实时更新监控图像,获取系统历史记录。 ②实时数据传输:提供可调用并且通用的接口函数,由报警子系统调用。通过多种方式把各种实时数据传送出去,包括http、FTP和E-ail。2.2统一接口实例 试想如果一个城市的消防车去邻近的城市救火,却发现无法和这个城市的消防栓对接,这是多么可怕的灾难?美国人在上个世纪初就有了统一接口的思想,现在再强调这个也不为过。其目的就是实现系统软件中,不修改任何的软件代码,就可以换上其他规格甚至其他厂家的同类型产品。开发人员可以很方便根据统一的接口扩展和移植相关代码。无论如何,美国人的这个近乎异想天开的想法,现在正在慢慢地转变成为现实。没有PC兼容的规范,没有API接口,很难想象微软的软件可以像现在这样大行其道。 该系统的模块设计考虑和采用了统一接口的思想。它接收系统产生的报警消息产生相应的消息队列,对所有的消息进行分类送相应的系统模块进行处理,根据对应的模块类别调用相应的处理方法,并记录处理信息。当工作失败时自动进行相应的事务处理。 视频采集可以基于采集卡的SDK接口函数,也可以基于Microsoft的DirectShow技术开发的音视频讯号捕捉接口,或者基于底层的驱动等方法来实现。采用统一接口的思想可以将各种实现策略抽象成为对上层的统一接口。具体的调用采用面向对象的特点、调用相应的接口实现策略。 CaptureProc重要接口定义如下: Class CaDtureProc{ String Type; //区别接口类别 b001 mnuStartCapture(); //开始录像 b001 mnuStopCapture(); //停止录像 bool TakePicture(); //捕获图像 bool Setting(); //相关设置选项 Shc)wConfiglareDialog(&.type); //根据类型不同给出不同的设置界面 }; 报警机制(包括E-mail、FTP、电话、纪录备份和Web访问)同样可以采用面向对象的特点,把每个报警方法都抽象成为对象,针对每种不同的程序实现统一使用接口,方便代码编写和扩展。在实现中包括Cmail、Cftp、Ctel、Cweb四个类,对应的接口统一定义为启动、设置、关闭等抽象函数。根据用户所设置的参数形式,系统在消息的驱动下,根据定义的具体对象调用相应的方法。将结果和变化输出到指定的设备和存储体中,用户就可以方便及时地得到信息和观察到运行过程和结果。系统设计中除了采用前面提到的设计模式外,还采用了对象树等模式,方便分析整个系统的运行和完善情况。 3 面向对象嵌入式技术的性能研究 当系统的分析与设计采用面向对象方法时,并不意味着所使用的编程语言也一定是面向对象的。事实上,这种分析设计方法的具体实现可以使用任何编程语言(如汇编语言或C语言);但是,在程序设计上要尽可能地使用面向对象的思想,如体现程序结构方面的封装性、消息传递等。这样才会使程序结构清晰,便于应付随着需求变化而产生的不断更新和系统维护。 过去嵌入式系统分析和设计方面的主要问题为:①分析设计没有一个统一的标准;②分析设计方法不统一;③从分析设计到制作和编程没有一个始终一贯的工程化方法,使得产品形成的每一个过程人为因素影响十分严重;④分析设计的成果不能被开发类似项目或产品时重用。以上4个方面的问题成为多年来制约嵌入式系统发展的主要瓶颈,使得大部分从事嵌入式系统应用开发的组织和团体,基本上是采用小组甚至是作坊式的运作模式。这样,开发较复杂或大型系统的工作变得十分困难甚至无法进行,或因为系统需求的不断变化或小组成员的流动导致项目失败。目前,面向对象技术正是建立在对真实世界抽象思维的基础上,面向对象的嵌入式系统建模同任何软件密集型系统建模一样,从系统中的类建模开始。为了解类的结构,首先对系统工作过程作一个总体陈述,对嵌入式系统需求、分析、设计、制作、测试和维护过程的结构特征和行为特征统一的工程化描述方法,改变以往的嵌入式软件开发现状。 SuperVisionl.0采用了面向对象设计方法,因为嵌入式开发中硬件条件的限制,相对于PC机上的面向对象编程有更多的困难,下面就探讨一下在嵌入式开发中的OOP的难点和解决方法。面向对象编程需要更多的运行时间和资源需求,如果不采用面向对象编程,则面临嵌入式开发中的代码数量、复杂度越来越高带来的维护效率下降的问题。 从图3可以看出C++语法的概况。
新闻来源:互联网,文中所述为作者独立观点,不代表icspec立场。更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj。