使用C++构建嵌入式开发框架

使用C++构建嵌入式开发框架
摘要:框架作为一种大粒度的重用技术在桌面软件开发中得到了广泛应用,而在嵌入式开发领域,目前还没有一套完整的标准框架可供使用。本文以通信领域的嵌入式软件开发为例,介绍使用C++语言,在ARM平台Nucleus plus操作系统下实现嵌入式开发框架EFC的方法和应用实例。
关键词:框架 C++ ARM Nucleus MFC EFC 面向对象
1 框架概述
什么是框架
国外着名的软件设计大师Ralph Johnson对面向对象技术进行了长期而深入的研究。在他的主页中,对框架进行了如下定义:A framework is a reusable design expressed as a set of abstract classes and the way their instances is a reusable design for all or part of a software system. 框架把一个系统有机地分解成一组相对独
立的构件,并定义了各个构件间的接口和作用关系,符合软件工程中设计的模块化、独立化和信息隐藏等特征。框架提供了一个大粒度的重用技术,即不仅支持源代码级的重用,而且支持分析和设计以及体系结构的重用,因而被认为是一种最有前途的面向对象技术。
多元合金框架必须是健壮的、可扩展的、灵活的,它要求基于开放或共享标准。框架的设计要力求做到完备性、灵活性、可扩展性、可理解性,同时抽象能用于不同的场合;用户能轻松地添加和修改功能,定制框架;用户和框架的交互清晰,文档齐全。框架设计的一个核心问题就是发现可重用的设计和“热点”,以保证框架具备充分的灵活性,使用户能在已有构件的基础上生成应用程序,实现“零代码编写”的理想目标。
柴草热水器如何设计框架
目前框架的设计大都采用实践法。实践法是指从若干个具体的典型应用中,抽象出现似点来构建框架;框架反过来又应用于不同的
问题,并在解决不同问题的过程中得到更新;在框架的设计和实现的两步中,不断反复,等到框架逐渐成熟时,需要修改和反复的内容就会越来越小。具体步骤为:分析问题域,确定所需框架,从一类应用而不是单个的程序去分析、比较各种不同的软件解决方案,寻求这些方案的共性和每个程度的唯一性
特性。这些共性,尤其是那些经常被多个程序使用的部分将成为框架的基础。然后,定义框架体系结构并设计,包括设计用户与框架间的交互、给用户提供的最终工具等。
框架的实现:包括框架核心类的实现、框架的测试、框架的试运行、框架的反复更新。框架的部署:包括文档的提供和分发过程、为用户提供技术支持、维护和更新框架。
木盒制作2 嵌入式框架EFC
框架技术在桌面软件的开发中得到了广泛
的应用,但在嵌入式开发领域,由于嵌入式开发的多样性及嵌入式操作系统的多样性,目前还没有一套完整的开发框架可供使用。因此,在嵌入式软件开发中常常是从底层做起,应用程序和RTOS密不可分。这样的开
发方式不但效率不高,也不利于软件的移植。EFC即嵌入式基础类库,是笔者借鉴Microsoft公司的MFC构建的一套在ARM平台Nucleus plus操作系统下的嵌入式开发
框架。由于框架全部采用C++开发,没有和处理器相关的汇编代码,所以在其它硬件平台可不加修改地使用。如果更换不同的操作系统,则需要修改操作系统抽象层的部分代码;但由于EFC提供给上层应用程序的接口不变,所以应用程序不需要修改代码。
就软件的层次来说,EFC是一个操作系统之上、应用程序之下的中间件,如图1所示。在EFC中有一个操作系统抽象层,对RTOS
进行了抽象和封装,提供包括任务、/O驱动、定时器、信号量、消息队列、事件、邮箱、管道以及高级中断等基本服务的封装。为上层应用程序提供更高级的统一编程接口,它样就使应用软件的开发与具体的软件平台
无关,解决了嵌入式应用软件的移植问题。在图1中,各模块之间有交界表明模块之间有接口关系。EFC、应用程序以及RTOS都和
硬件驱动有接口:EFC要使用一部分核心驱动;应用程序中调用的驱动是针对具体设备的;RTOS所需要的驱动就是系统的BSP部分。EFC的静态结构图如图2所示。类图是在UML 中用类和它们之间的关系描述系统的一种
图示。类用类名、类的属性以及操作来表示,在图中为简单起见,省略了属性和操作;类与类之间的关系使用不同的连线表示,图中带空心三角箭头的连线表示继承关系,两端带数字的连线表示关联关系。在类图中,类的属性/方法的可见性使用“+”、“-”及“#”表示:“+”表示公共的,“-”表示私有的,“#”表示受保护的。
从图2中可以看出,CMessage、CRTApp、CDevice、Cboard及Cinterface都派生于公共的类CRTObject。CRTApp对象中有受保护的CMessage、CEventLog、Cuser及CDevice 各一个。CDevice对象中有一个或多个CBoard对象,相应的每个CBorad对象中有0个到多个CxxxInterace对象。
网约车管理系统基本数据类型
构建一个框架,需要一些基本的元素,这些
水过滤板
元素要在框架的构造以及应用程序开发中
大量使用。这些基本数据类型包括字符串类CString、集合类CArray、Clist及Cmap。CString包括一个长度可变的字符序列,提
供使用非常直观方便的运算符和一些Todouble()、Tolong()、Tohex()等);CArra y是具有内建索元素很快的检索速度;Clist为其所存储的每一个元素,都提供了
两个指针,分别指向位于其前和其后的元素,形成一个双向链表,这使得插入和删除操作十分快捷;CMap为其存储的每个数据都附带一个关键字,并以关键字所组成的一个hash 表作为索引,从而使得元素搜索、增加和删除操作都具有很高的效率。
RTOS的抽象和封装弓箭制作
CRTObject是一个EFC中最基础的类,它不但是EFC中CRTApp、CDevice等类的基类,而且可以作为所有使用EFC的嵌入式开发人员定义新的类的超类。CRTObject类在EFC
中主要承担RTOS抽象和封装任务。它提供
了下面一些最基本的功能
*CRTObject对RTOS的常用对象进行了封装,

本文发布于:2024-09-26 04:27:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/280889.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:框架   设计   使用
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议