使用C++构建嵌入式开发框架
发布时间:2008/5/27 0:00:00 访问次数:5104
摘要:框架作为一种大粒度的重用技术在桌面软件开发中得到了广泛应用,而在嵌入式开发领域,目前还没有一套完整的标准框架可供使用。本文以通信领域的嵌入式软件开发为例,介绍使用c++语言,在arm平台nucleus plus操作系统下实现嵌入式开发框架efc的方法和应用实例。
关键词:框架 c++ arm nucleus mfc efc 面向对象
1 框架概述
1.1 什么是框架
国外著名的软件设计大师ralph johnson对面向对象技术进行了长期而深入的研究。在他的主页中,对框架进行了如下定义:a framework is a reusable design expressed as a set of abstract classes and the way their instances collaborate.it is a reusable design for all or part of a software system.(框架是整个系统或系统的一部分的可重用性设计,由一组抽象出来的类及其实例间的相互作用方式组成。)
框架把一个系统有机地分解成一组相对独立的构件,并定义了各个构件间的接口和作用关系,符合软件工程中设计的模块化、独立化和信息隐藏等特征。框架提供了一个大粒度的重用技术,即不仅支持源代码级的重用,而且支持分析和设计以及体系结构的重用,因而被认为是一种最有前途的面向对象技术。
框架必须是健壮的、可扩展的、灵活的,它要求基于开放或共享标准。框架的设计要力求做到完备性、灵活性、可扩展性、可理解性,同时抽象能用于不同的场合;用户能轻松地添加和修改功能,定制框架;用户和框架的交互清晰,文档齐全。框架设计的一个核心问题就是发现可重用的设计和“热点”,以保证框架具备充分的灵活性,使用户能在已有构件的基础上生成应用程序,实现“零代码编写”的理想目标。
1.2 如何设计框架
目前框架的设计大都采用实践法。实践法是指从若干个具体的典型应用中,抽象出现似点来构建框架;框架反过来又应用于不同的问题,并在解决不同问题的过程中得到更新;在框架的设计和实现的两步中,不断反复,等到框架逐渐成熟时,需要修改和反复的内容就会越来越小。具体步骤为:分析问题域,确定所需框架,从一类应用而不是单个的程序去分析、比较各种不同的软件解决方案,寻求这些方案的共性和每个程度的唯一性特性。这些共性,尤其是那些经常被多个程序使用的部分将成为框架的基础。然后,定义框架体系结构并设计,包括设计用户与框架间的交互、给用户提供的最终工具等。
框架的实现:包括框架核心类的实现、框架的测试、框架的试运行、框架的反复更新。
框架的部署:包括文档的提供和分发过程、为用户提供技术支持、维护和更新框架。
2 嵌入式框架efc
框架技术在桌面软件的开发中得到了广泛的应用,但在嵌入式开发领域,由于嵌入式开发的多样性及嵌入式操作系统的多样性,目前还没有一套完整的开发框架可供使用。因此,在嵌入式软件开发中常常是从底层做起,应用程序和rtos密不可分。这样的开发方式不但效率不高,也不利于软件的移植。
efc(embedded foundation classes)即嵌入式基础类库,是笔者借鉴microsoft公司的mfc(微软基础类库—桌面系统框架库的工业标准)构建的一套在arm平台nucleus plus操作系统下的嵌入式开发框架。由于框架全部采用c++开发,没有和处理器相关的汇编代码,所以在其它硬件平台可不加修改地使用。如果更换不同的操作系统,则需要修改操作系统抽象层的部分代码;但由于efc提供给上层应用程序的接口不变,所以应用程序不需要修改代码。
图2 efc静态结构图
就软件的层次来说,efc是一个操作系统之上、应用程序之下的中间件,如图1所示。在efc中有一个操作系统抽象层,对rtos进行了抽象和封装,提供包括任务(task)、/o驱动(driver)、定时器(timer)、信号量(semaphore)、消息队列(quecue)、事件(event group)、邮箱(mailbox)、管道(pipe)以及高级中断(hisr)等基本服务的封装。为上层应用程序提供更高级的统一编程接口,它样就使应用软件的开发与具体的软件平台无关,解决了嵌入式应用软件的移植问题。
在图1中,各模块之间有交界表明模块之间有接口关系。efc、应用
摘要:框架作为一种大粒度的重用技术在桌面软件开发中得到了广泛应用,而在嵌入式开发领域,目前还没有一套完整的标准框架可供使用。本文以通信领域的嵌入式软件开发为例,介绍使用c++语言,在arm平台nucleus plus操作系统下实现嵌入式开发框架efc的方法和应用实例。
关键词:框架 c++ arm nucleus mfc efc 面向对象
1 框架概述
1.1 什么是框架
国外著名的软件设计大师ralph johnson对面向对象技术进行了长期而深入的研究。在他的主页中,对框架进行了如下定义:a framework is a reusable design expressed as a set of abstract classes and the way their instances collaborate.it is a reusable design for all or part of a software system.(框架是整个系统或系统的一部分的可重用性设计,由一组抽象出来的类及其实例间的相互作用方式组成。)
框架把一个系统有机地分解成一组相对独立的构件,并定义了各个构件间的接口和作用关系,符合软件工程中设计的模块化、独立化和信息隐藏等特征。框架提供了一个大粒度的重用技术,即不仅支持源代码级的重用,而且支持分析和设计以及体系结构的重用,因而被认为是一种最有前途的面向对象技术。
框架必须是健壮的、可扩展的、灵活的,它要求基于开放或共享标准。框架的设计要力求做到完备性、灵活性、可扩展性、可理解性,同时抽象能用于不同的场合;用户能轻松地添加和修改功能,定制框架;用户和框架的交互清晰,文档齐全。框架设计的一个核心问题就是发现可重用的设计和“热点”,以保证框架具备充分的灵活性,使用户能在已有构件的基础上生成应用程序,实现“零代码编写”的理想目标。
1.2 如何设计框架
目前框架的设计大都采用实践法。实践法是指从若干个具体的典型应用中,抽象出现似点来构建框架;框架反过来又应用于不同的问题,并在解决不同问题的过程中得到更新;在框架的设计和实现的两步中,不断反复,等到框架逐渐成熟时,需要修改和反复的内容就会越来越小。具体步骤为:分析问题域,确定所需框架,从一类应用而不是单个的程序去分析、比较各种不同的软件解决方案,寻求这些方案的共性和每个程度的唯一性特性。这些共性,尤其是那些经常被多个程序使用的部分将成为框架的基础。然后,定义框架体系结构并设计,包括设计用户与框架间的交互、给用户提供的最终工具等。
框架的实现:包括框架核心类的实现、框架的测试、框架的试运行、框架的反复更新。
框架的部署:包括文档的提供和分发过程、为用户提供技术支持、维护和更新框架。
2 嵌入式框架efc
框架技术在桌面软件的开发中得到了广泛的应用,但在嵌入式开发领域,由于嵌入式开发的多样性及嵌入式操作系统的多样性,目前还没有一套完整的开发框架可供使用。因此,在嵌入式软件开发中常常是从底层做起,应用程序和rtos密不可分。这样的开发方式不但效率不高,也不利于软件的移植。
efc(embedded foundation classes)即嵌入式基础类库,是笔者借鉴microsoft公司的mfc(微软基础类库—桌面系统框架库的工业标准)构建的一套在arm平台nucleus plus操作系统下的嵌入式开发框架。由于框架全部采用c++开发,没有和处理器相关的汇编代码,所以在其它硬件平台可不加修改地使用。如果更换不同的操作系统,则需要修改操作系统抽象层的部分代码;但由于efc提供给上层应用程序的接口不变,所以应用程序不需要修改代码。
图2 efc静态结构图
就软件的层次来说,efc是一个操作系统之上、应用程序之下的中间件,如图1所示。在efc中有一个操作系统抽象层,对rtos进行了抽象和封装,提供包括任务(task)、/o驱动(driver)、定时器(timer)、信号量(semaphore)、消息队列(quecue)、事件(event group)、邮箱(mailbox)、管道(pipe)以及高级中断(hisr)等基本服务的封装。为上层应用程序提供更高级的统一编程接口,它样就使应用软件的开发与具体的软件平台无关,解决了嵌入式应用软件的移植问题。
在图1中,各模块之间有交界表明模块之间有接口关系。efc、应用
上一篇:QNX环境下多线程编程
上一篇:MIDP2.0及其移植技术分析