嵌入式软件开发环境中操作系统抽象层的设计与实现
- 格式:pdf
- 大小:133.45 KB
- 文档页数:6
嵌入式系统硬件抽象层的建立及软件的可移植性设计摘要在阐述嵌入式系统软件设计方法的基础上,介绍嵌入式系统底层软件可移值性设计和硬件抽象层的建立;举例说明利用此思想的嵌入式软件的设计及测试过程。
关键词设备驱动程序嵌入式系统软件设计可移植性1嵌入式系统设计
由于嵌入式系统有着体积小、功能集中、可靠性高等优点,已被广泛地应用到日常生活的各个方面,如移动通信、工业控制、医疗器械,家用电器等。
如何缩短嵌入式系统的开发周期,降低开发成本,以及提高产品的可靠性已成为嵌入式行业普遍关注的问题。
在嵌入式系统设计中,通常采用以下设计方法。
1瀑布模式开发过程
瀑布模式开发过程工作模式简单,任务的划分协调及人员安排、物质材料的分配管理都比较容易。
如图1所示,开发过程为从硬件到软件的流水线式进行。
此类开发方式有以下特点
◇小系统,如利用8051控制的低速率信号采集等;范文先生网收集整理◇开发所需人力、物力资源有限,一般1个或几个人即可完成;
◇要求开发人员对软、硬件设计和制作都比较熟悉;
◇对开发周期要求不高,此类开发过程无疑会使用最长的开发周期;
◇在开发过程中,任一环节的阻塞都会影响其它环节的开发。
2模式开发过程
模式开发过程为一种并行的工作方式,任务的划分协调及人员安排、物质材料的分配都必须考虑不同工作内容,如图2所示。
开发过程为硬件和软件同时进行,最后联合调试。
此类开发方式有以下特点
◇大系统,如利用等处理器设计的网络交换访问设备;
◇开发人力、物力资源比较丰富;
◇开发人员分工比较明确,软件开发者可不需了解太多的硬件信息,而硬件开发人员对软件也可不做太多了解;。
引⾔ 为了便于操作系统在不同硬件结构上进⾏移植,美国微软公司⾸先提出了将底层与硬件相关的部分单独设计成硬件抽象层美国微软公司提出了将操作系统底层与硬件相关的部分单独设计成硬件抽象层HAL(Hardware Abstraction Layer)的思想。
硬件抽象层的引⼊⼤⼤推动了嵌⼊式操作系统的通⽤程度,为嵌⼊式操作系统的⼴泛应⽤提供了可能。
然⽽,⽬前BSP形式的硬件抽象层仅仅能够解决有限的⼏种操作系统在同样有限的BSP所⽀持的硬件平台上的移植,⽽对绝⼤多数需要根据不同嵌⼊式应⽤⽽专门定制的嵌⼊式操作系统来说能起的作⽤则⾮常有限。
1 硬件抽象层原理 1.1 硬件抽象层概念 嵌⼊式系统是⼀类特殊的计算机系统。
它⾃底向上包括3个主要部分:硬件环境、嵌⼊式操作系统和嵌⼊式应⽤程序。
硬件环境是整个嵌⼊式操作系统和应⽤程序运⾏的硬件平台,不同的应⽤通常有不同的硬件环境;因此如何有效地使嵌⼊式操作应⽤于各种不同的应⽤环境,是嵌⼊式操作系统发展中所必须解决的关键问题。
硬件抽象层通过硬件抽象层接⼝向操作系统以及应⽤程序提供对硬件进⾏抽象后的服务。
当操作系统或应⽤程序使⽤硬件抽象层API进⾏设计时,只要硬件抽象层API能够在下层硬件平台上实现,那么操作系统和应⽤程序的代码就可以移植。
这样,原先嵌⼊式系统的3层结构逐步演化为⼀种4层结构。
图1显⽰了引⼊硬件抽象层后的嵌⼊式系统的结构。
在整个嵌⼊式系统设计过程中,硬件抽象层同样发挥着不可替代的作⽤。
传统的设计流程是采⽤瀑布式设计开发过程,⾸先是硬件平台的制作和调试,⽽后是在已经定型的硬件平台的基础上再进⾏软件设计。
由于硬件和软件的设计过程是串⾏的,因此需要很长的设计周期;⽽硬件抽象层能够使软件设计在硬件设计结束前开始进⾏,使整个嵌⼊式系统的设计过程成为软硬件设计并⾏的V模式开发过程,如图2所⽰。
这样两者的设计过程⼤致是同时进⾏的或是并发的,缩短了整个设计周期。
1.2 BSP分析 作为硬件抽象层的⼀种实现,板级⽀持包BSP(Board Support Package)是现有的⼤多数商⽤嵌⼊式操作系统实现可移植性所采⽤的⼀种⽅案。
嵌入式软件架构设计之分层设计嵌入式软件分层设计是一种常用的软件架构设计方法,它将整个软件系统分为不同的层次,每个层次有各自的职责和功能,层之间通过接口进行通信和协作。
分层设计的优点是提高了软件系统的可维护性、可扩展性和可重用性,降低了软件模块之间的耦合度。
1.应用层:应用层是整个软件系统的最高层,负责处理用户界面和应用逻辑。
它接收用户的输入,并根据用户的操作来调用下一层的功能模块。
在分层设计中,应用层通常只包含少量的代码,主要是调用下一层的接口函数,并将结果返回给用户。
这样可以保持应用层的简洁和灵活性。
2.业务逻辑层:业务逻辑层是整个软件系统的核心层,负责实现系统的核心功能和业务逻辑。
它包含了系统的主要算法和数据处理逻辑,通过调用下一层的接口函数来实现具体的功能。
业务逻辑层的设计应该尽量遵循高内聚、低耦合的原则,将复杂的业务逻辑拆分成独立的模块或函数,提高系统的可维护性和可扩展性。
3.数据访问层:数据访问层负责与外部设备或数据库进行数据的读写操作。
它提供了统一的接口函数,隐藏了底层硬件或数据库的细节,使上层模块可以方便地访问和操作数据。
数据访问层的设计要考虑到数据的安全性和一致性,同时还要注意性能和效率的问题。
4.设备驱动层:设备驱动层负责与硬件设备进行通信和控制。
它提供了统一的接口函数,使上层模块可以方便地调用设备的功能和服务。
设备驱动层的设计要考虑到硬件设备的特性和接口规范,同时还要保证设备的稳定性和可靠性。
在嵌入式软件分层设计中,每个层次都有自己的职责和功能,层之间通过接口进行通信和协作。
这种分层结构可以将软件系统的复杂性降低到可控制的范围内,提高软件的可维护性和可扩展性。
此外,分层设计还可以促进模块的重用和共享,提高开发效率和软件质量。
但是,在进行嵌入式软件分层设计时,需要注意以下几点:1.合理划分层次:层次划分要合理,避免层次之间的功能重复或交叉。
每个层次应该具有清晰的职责和功能,遵循单一职责原则和层次内聚原则。
关键字:嵌入式系统设计ARM FPGA多功能车辆总线Multifunction Vehicle Bus 在计算机、互联网和通信技术高速发展的同时,嵌入式系统开发技术也取得迅速发展,嵌入式技术应用范围的急剧扩大.本文介绍了一种基于ARM和FPGA,从软件到硬件完全自主开发多功能车辆总线(Multifunction Vehicle Bus)MVB??B嵌入式系统的设计和实现。
系统设计和实现通常来说,一个嵌入式系统的开发过程如下:1.确定嵌入式系统的需求;2.设计系统的体系结构:选择处理器和相关外部设备,操作系统,开发平台以及软硬件的分割和总体系统集成;3.详细的软硬件设计和RTL代码、软件代码开发;4.软硬件的联调和集成;5.系统的测试。
一、步骤1:确定系统的需求:嵌入式系统的典型特征是面向用户、面向产品、面向应用的,市场应用是嵌入式系统开发的导向和前提。
一个嵌入式系统的设计取决于系统的需求。
1、MVB总线简介列车通信网(Train Communication Network,简称TCN)是一个集整列列车内部测控任务和信息处理任务于一体的列车数据通讯的IEC国际标准(IEC-61375-1), 它包括两种总线类型绞线式列车总线(WTB)和多功能车厢总线(MVB)。
TCN在列车控制系统中的地位相当与CAN总线在汽车电子中的地位。
多功能车辆总线MVB是用于在列车上设备之间传送和交换数据的标准通信介质。
附加在总线上的设备可能在功能、大小、性能上互不相同,但是它们都和 MVB总线相连,通过MVB总线来交换信息,形成一个完整的通信网络.在MVB系统中,根据IEC-61375-1列车通信网标准, MVB总线有如下的一些特点:拓扑结构:MVB总线的结构遵循OSI模式,吸取了ISO的标准。
支持最多4095个设备,由一个中心总线管理器控制。
简单的传感器和智能站共存于同一总线上。
数据类型:MVB总线支持三种数据类型:a.过程数据:过程变量表示列车的状态,如速度、电机电流、操作员的命令。
嵌入式系统的设计和实现嵌入式系统是指集成了计算机芯片、控制器、传感器等硬件设备的特殊电子设备系统。
它通常运行在一些资源受限的嵌入式处理器上,具有实时性、可靠性、成本低廉等特点。
如今,随着信息技术的迅速发展,嵌入式系统已经广泛应用在各种领域,例如智能家居、智能交通、智能医疗等。
嵌入式系统设计开发的核心,在于硬件电路的设计和程序代码的编写。
本文将从嵌入式系统的设计和实现两个方面,探讨如何开发一款成功的嵌入式系统。
一、嵌入式系统的设计1.硬件电路设计嵌入式系统的硬件设计是系统整体性能的基础,是开发过程中必不可少的一步。
在设计硬件电路时,需要首先了解嵌入式系统所需的硬件组件,比如处理器、存储器、输入输出设备、传感器等。
其次,需要根据设计目标和系统要求,选择合适的硬件设备,并将其组合成合理的电路结构。
最后,需要完成电路设计的的绘制及原理图、PCB的布线等工作。
在这个过程中,设计者需要考虑功耗、散热、成本等多个因素。
2.软件设计嵌入式系统的软件设计是嵌入式系统开发的重中之重。
在软件设计方面,需要仔细考虑嵌入式系统的程序架构及程序设计模式,比如事件驱动模型或多任务模型。
同时,需要考虑系统的实时性和稳定性,确保系统代码的质量和可靠性。
在软件设计过程中,需要使用一些工具和开发环境,如Keil、IAR、Eclipse等集成开发环境。
3.测试与调试测试和调试是嵌入式系统开发的重要环节,只有将系统进行充分测试与调试,才能保证系统的正确性和稳定性。
在测试过程中,需要首先进行各个模块的单元测试,以验证系统的功能是否正常。
然后进行集成测试,交叉验证各个模块的协同工作是否正常。
最后进行耐久性测试和压力测试,确保系统能够在各种恶劣环境环境下正常运行。
二、嵌入式系统的实现1. 系统内核系统内核是嵌入式操作系统的核心,也是嵌入式系统的核心。
系统内核需要提供一个可靠的执行环境和一些重要的操作系统服务,如任务管理、内存管理、中断管理、设备驱动程序和通讯协议等。
嵌入式系统软件开发和设计流程1.需求分析需求分析是设计任何系统的第一步,嵌入式系统软件开发也不例外。
在需求分析阶段,开发团队与客户或项目经理一起,明确系统的功能要求和性能需求,确定系统所需的硬件平台和操作系统,并制定开发计划和时间表。
2.设计和架构在设计阶段,团队将进行整体架构设计,并将系统拆分为模块和组件。
软件架构设计确定软件的整体结构、数据流和交互,并定义模块之间的接口。
此外,设计团队还需要选择合适的编程语言和开发工具,如C、C++或Python,并确定代码组织结构和数据结构。
3.编码和实现在编码和实现阶段,开发团队根据设计和架构规范,按照模块化的方式逐个实现软件功能。
每个模块都会被编写为相应的程序代码,并注重良好的软件工程实践,例如模块化、封装、注释和代码风格统一4.软件集成和测试在软件集成和测试阶段,各个模块的代码将被整合到一起,并进行集成测试。
这些测试可以包括单元测试、功能测试和性能测试等。
集成测试的目标是验证系统功能是否正常工作,并解决可能存在的问题或缺陷。
5.部署和调试一旦软件通过了测试,就可以将它部署到嵌入式系统中。
在部署之前,开发团队需要确保软件与硬件平台和操作系统兼容,并解决可能出现的兼容性问题。
一旦部署完成,开发团队将进行系统调试,以确保软件在实际运行时表现良好。
6.维护和优化以上是一个简单的嵌入式系统软件开发和设计流程的概述。
实际开发过程中可能会根据项目的具体情况和需求有所不同。
然而,流程中的关键步骤,需求分析、设计、实现、测试和验证以及维护和优化,还是相通的,都是确保嵌入式系统软件开发质量和可靠性的重要环节。
嵌入式软件工程师(BSP)职位描述与岗位职责嵌入式软件工程师(BSP)是一种专业技术人员,主要负责嵌入式系统开发中BSP(板级支持软件)部分的设计、实现与维护。
具体职责如下:1. 负责嵌入式系统中BSP的设计、开发与调试。
根据客户需求及整体设计方案,编写BSP部分的驱动程序、底层操作系统、硬件抽象层等,并独立完成整个开发流程。
2. 针对开发中出现的各种问题进行分析和解决。
分析BSP部分的代码实现,处理由于驱动不兼容、系统故障、硬件问题等产生的质量问题,并进行优化改进。
3. 编写BSP部分的技术文档。
详细记录BSP部分的架构设计、接口定义、代码实现过程、出现问题及解决方案等技术文档,并保证文档及时更新。
4. 与硬件工程师、系统工程师等协同开发。
深入了解硬件平台上的特点,并与硬件工程师、系统工程师等密切协作,沟通合作,使嵌入式系统的整体开发过程高效地完成。
5. 研究新技术、新硬件等的应用。
了解新技术、新硬件的性能、优势、适用范围等,研究如何将其应用到嵌入式系统中,并提供技术支持和解决方案。
任职资格:1. 计算机、电子等相关专业的本科及以上学历。
2. 熟练掌握C、C++等编程语言,有C语言编程能力。
3. 熟悉Linux、RTOS等操作系统、熟练驾驭ARM、PowerPC、MIPS等嵌入式芯片的架构。
4. 熟悉底层驱动程序开发,具备掌握中断、DMA、定时器等硬件资源管理的基本技能。
5. 具备扎实的数据结构与算法基础,熟悉常用工具链、调试器、仿真器等开发工具。
6. 具备团队合作精神、良好的沟通协调能力,能够承受工作压力,能独立思考和解决问题,具备较强的自我学习和技术研究能力。
以上是嵌入式软件工程师(BSP)的职位描述和岗位职责。
这项工作的主要任务是负责嵌入式系统中BSP的设计、实现和维护,需要具备扎实的编程基础、操作系统知识和团队协作能力。
嵌入式系统开发平台设计与实现嵌入式系统是指被嵌入到其他系统中的计算机系统,它通常包含一个或多个处理器、存储器、输入/输出接口及其他组件。
嵌入式系统广泛应用于汽车、家用电器、医疗设备等各个领域,为了提高嵌入式系统的开发效率和可靠性,设计和实现一个强大的嵌入式系统开发平台是必要的。
1. 开发平台需求分析首先,我们需要进行嵌入式系统开发平台的需求分析,明确开发平台应具备的功能和特性。
在需求分析阶段,我们可以考虑以下几个方面的需求:1.1 开发工具链开发平台应提供完整的开发工具链,包括编译器、调试器、仿真器等。
这些工具应具备高效、稳定、易用的特点,能够满足开发人员的需求。
1.2 软硬件支持开发平台应支持多种嵌入式系统硬件平台,如ARM、AVR、PIC 等。
同时,它也应提供丰富的软件库和驱动程序,方便开发人员进行系统开发和集成。
1.3 实时操作系统嵌入式系统通常需要具备实时性能,因此开发平台应支持实时操作系统(RTOS)。
RTOS应具备高效的任务调度算法,确保系统能够按时响应外部事件。
1.4 通信和网络支持现代嵌入式系统通常需要与其他设备进行通信,因此开发平台应提供网络和通信支持。
这包括网络协议栈、通信接口等,以便开发人员能够方便地进行系统集成和通信测试。
2. 开发平台架构设计在需求分析的基础上,我们可以开始设计嵌入式系统开发平台的架构。
一个好的架构应具备灵活性、可扩展性和高效性,以满足不同项目的需求。
2.1 分层架构开发平台的架构可以采用分层结构,包括底层硬件驱动层、操作系统层、编译与调试层和应用开发层。
这样的设计可以提高系统的可维护性和可移植性。
2.2 开放性接口开发平台应提供开放性的接口,方便开发人员进行系统功能扩展和定制。
这包括统一的API接口、软件库的接口等。
2.3 多平台支持开发平台应支持多种硬件平台和操作系统,以满足不同项目的需求。
这意味着平台的设计应具备可移植性和兼容性。
3. 开发平台实现在架构设计完成之后,我们可以进行开发平台的实现工作。
嵌入式系统硬件抽象层的原理与实现摘要:板级支持包(BSP)是嵌入式系统嵌入式系统中常用的硬件抽象形式,是介于操作系统和硬件之间的软件层次。
介绍BSP的功能和特点,并结合工作实践提出了设计BSP的一般方法;最后针对当前嵌入式系统中BSP的设计方法所面临的问题提出了可行的解决办法。
关键词:嵌入式系统嵌入式实时操作系统(RTOS) 硬件抽象层(HAL) 板级支持包(BSP)随着计算机软硬件技术的快速发展,出现了越来越多的便携设备和智能设备。
这些设备中通常包含控制用的CPU和相应的操作系统;这类特殊的计算机系统叫做嵌入式实时系统。
嵌入式实时系统以其简洁高效等特点在计算机、通信等领域中广泛使用。
由于嵌入式实时系统应用环境的特殊性,因此在设计实现过程中存在着许多特殊问题。
其中,操作系统及其他系统软件模块与硬件之间的接口形式是嵌入式实时系统的主要特征和系统设计过程中的必需环节,也是影响嵌入式系统应用前景的关键问题。
经过近些年的发展,随着通用嵌入式操作系统技术的日趋成熟和应用的不断扩大,一种统一的接口形式得到广泛的认可和应用,这就是通常所说的板级支持包,即BSP。
1 嵌入式系统硬件抽象层的原理1.1 硬件抽象层的引入嵌入式实时系统作为一类特殊的计算机系统自底向上包含三个部分,。
(1)硬件环境:是整个嵌入式实时操作系统和实时应用程序应用程序运行的硬件平台;不同的应用通常有不同的硬件环境;硬件平台的多样性是嵌入式系统的一个主要特点。
(2)嵌入式实时操作系统——RTOS:完成嵌入式实时应用的任务调度和控制等核心功能,具有内核较精简、可配置、与高层应用紧密关联等特点。
嵌入式操作系统具有相对不变性。
(3)嵌入式实时应用程序:运行于操作系统之上,利用操作系统提供的实时机制完成特定功能的嵌入式的嵌入式应用。
不同的系统需要设计不同的嵌入式实时应用程序。
由于嵌入式系统应用的硬件环境差异较大,因此,如何简洁有效地使嵌入式系统能够应用于各种不同的应用环境是嵌入式系统发展中所必须解决的关键问题。
第23卷第4期成都大学学报(自然科学版)VoI.23No.4 2004年12月JournaI of Chengdu University(NaturaI Science)Dec.2004文章编号:1004-5422(2004)04-0018-05嵌入式软件开发环境中操作系统抽象层的设计与实现何先波(西华师范大学计算机科学系,南充637002)摘要:论述了嵌入式软件开发环境中操作系统抽象层存在的必要性,并对其如何实现进行了探索,特别是对利用面向对象的思想实现抽象层方法给出了源代码级的阐述.关键词:嵌入式操作系统;操作系统抽象层;虚函数;嵌入式软件开发环境中图分类号:TP311.51 文献标识码:AThe Design and Implementation of Operating System Abstract Layer in Embedded Software Development EnvironmentHE Xianbo(Department of Computer Science,West NormaI University,Nangchong637002,China)Abstract:In this paper,the necessity of operating system abstract Iayer is discussed in Embedded Software deveIopment environment,and its impIementation metheds is expIored especiaIIy.The source code IeveI de-scription of how to impIement operating system abstract Iayer in making use of object oriented ideoIogy is given.Key words:embedded operating system;operating system abstact Iayer;virtuaI function;embedded soft-ware deveIopment environmentCLC number:TP311.51 Document:A1 嵌入式软件开发环境中操作系统抽象层存在的必要性嵌入式软件开发环境主要由两部分组成:嵌入式操作系统和嵌入式软件开发工具.嵌入式系统具有的硬件环境多样性、硬软件紧密藕合性以及严格的实时性等特点决定了所使用的操作系统必然是多种多样的.目前,流行的商用嵌入式操作系统有Windriver公司的VxWorks,ISI公司的pSOS,ONX系统软件公司的ONX,ATI公司的nucIeus,微软公司的Windows CE,SUN公司的Java OS,郎讯科技公司的Inferno,国内的DeItaOS等等;开放源码的嵌入式操作系统有各种嵌入式LINUX、eCos、!C/OS-II等等.这些嵌入式操作系统各有特点,不同的嵌入式应用出于成本和性能的考虑选择也不一样,有的嵌入式产品开发者干脆自己编写适合特定应用的操作系统,这常造成即使是同一个公司内部不同的产品系统也可能使用不同的操作系统.由于不同操作系统的功能和调用接口往往不一样,这一方面造成嵌入式应用程序移植成本过高,另一方面程序员往往需要熟悉许多不同的开发环境,从而大大增加了嵌入式软件的开发成本.这使得能屏蔽下层不同操作系统,并提供统一调用接口的操作系统抽象层———VOS层(VirtuaI Operating System)成为必要.收稿日期:2003-11-03作者简介:何先波(1971-),男,讲师,博士,主要从事嵌入式软件开发环境的研究.2 嵌入式操作系统抽象层的功能与操作系统为隔离具体的硬件环境而设计出HAL 层(硬件抽象层)类似,VOS 层的功能就是为了隔离下层所使用的不同的操作系统,从而给程序员提供一个与下层具体操作系统无关且统一的接口.VOS 层位于嵌入式操作系统与应用程序之间,参与对许多对象的管理,使用户能跟踪到一些比较靠近内核的东西,对原有操作系统的适用性和效率都有所提高,而且可提供丰富的调试手段和实时监控功能.由于应用程序对具体的嵌入式操作系统的依赖减少,从而便于上层应用软件在不同操作系统之间移植.在嵌入式应用软件的开发中,为了方便进一步开发,往往在具体使用的操作系统上添加一封装层,严格地说,VOS 也属于这一层.这样,在嵌入式操作系统开发环境中,VOS 层的位置如图l 所示(箭头表示调用关系).应用层1关于调度管理、内存管理、系统控制、 设备管理等的封装层1VOS 层1各种商用的或开放源码的嵌入式操作系统BSP (板级支持包)硬件层图l VOS 层位置示意图3 VOS 层的设计与实现探讨VOS 层的设计与实现首先得考虑给上层应用提供一个什么样的与具体平台无关的调用接口集,这也是VOS 实现的基础.一般而言,嵌入式操作系统需提供消息队列、调度控制、内存管理、时钟管理、I /O 驱动等基本接口.具体的实现上,考虑到操作系统一般都有自己的C 库,因此,VOS 层实现主要考虑标准C 库以外的功能接口的实现.对这些接口功能的实现可采取先实现一个最小的操作原语闭集,然后在实际应用中再做相应的扩充.封装层或应用程序只需调用VOS 提供的标准功能接口,VOS 识别该接口调用后,直接或间接地路由到下层具体操作系统提供的相应接口调用.如果某项功能调用不能通过该操作系统实现,给出不能实现的警告信息.由于标准C 库函数一般的操作系统都提供实现,VOS 主要考虑进程、线程、信号量、计时器等的屏蔽.下面介绍两种VOS 实现方法,为了便于理解,以嵌入式操作系统VxWorkS 与通用操作系统Win-GoWSNT 的互斥信号量为例来考虑VOS 的实现方法,其他的实现与此类似.3.l 利用组件和面向对象的思想通过虚函数机制实现该方法的基本思想是通过抽象类的成员函数提供统一的调用接口,通过对抽象类的继承对应到具体使用的操作系统,借鉴组件实现方法与虚函数功能最终完成路由.VOS 层提供的互斥信号量调用就是VOS_mutex 类的成员函数:claSS VOS_mutex{public :virtual ~VOS_mutex (){};·9l ·第4期何先波:嵌入式软件开发环境中操作系统抽象层的设计与实现virtuai void iock ()=0;virtuai void free ()=0;};参照组件技术的实现方法,用一类厂类来提供VOS 层实例化各接口类的方法:ciass VOS_factory{pubiic :virtuai thread *createVOS_thread (...)=0;virtuai VOS_Mutex *createVOS_Mutex ()=0;virtuai VOS_Semaphore *createVOS_Semaphore (...)=0;…};VOS_thread ,VOS_Mutex ,VOS_Semaphore 等分别为线程、互斥信号量、同步信号量对应的VOS 层接口抽象类.通过对这些抽象类的继承与各OS 的实现相联系.3.l.l 如果下层操作系统为VxWorks ,其对应的互斥信号量类VxMutex 和类厂类VxOSfactory 实现如下:ciass VxMeutex :pubiic VOS_Mutex{private :SEM_IdhMutex ; pubiic :void iock () {semtake (hMutex ,WAIt_fOREVER );}void free () {semgive (hMutex );}VxMutex (){hMutex =semMcreate (SEM_O_fIfO );}~VxMutex (){semdeiete (hMutex );}void *get~andie (){return (void *)hMutex ;}};semtake 、semgive 、semMcreate 、semdeiete 为VxWorks 提供的产生互斥信号量的接口调用.ciass VxOSfactory :pubiic VOS_factory{pubiic :…virtuai VOS_Mutex*createVOS_Mutex (){return (VOS_Mutex *)new VxMutex ();//对VxWorks 的直接接口调用.}…};3.l.2 如果下层OS 为WindowsNt ,相应的有关实现类描述如下:·02·成都大学学报(自然科学版)第23卷ciass NTmuteX :pubiic VOS_muteX{private :HANDLE hmuteX ;pubiic :void iock (){WaitforSingieObject (hmuteX ,INfINITE );}void free () {ReieasemuteX (hmuteX );}NTmuteX (){hmuteX =CreatemuteX (NULL ,fALSE ,NULL );}~NTmuteX (){CioseHandie (hmuteX );}HANDLE getHandie (){return hmuteX ;}};WaitforSingieObject 、ReieasemuteX 、CreatemuteX 、CioseHandie 皆为为NT 提供的系统调用.ciass NTOSfactory :pubiic VOS_factory{pubiic :…virtuai VOS_muteX *createVOS_muteX (){return (VOS_mute *)new NTmuteX ();}…};有了这些实现后,可用一全局函数,如theOSfactory ()来定位到系统当前使用的具体操作系统,该函数的说明如下:VOS_factory *theOSfactory ()该函数的功能就是用于实例化对应操作系统的类厂类.如果当前使用的操作系统是VXWorks ,该函数的实现如下:static VXOSfactory *VXOsf =NULL ;VOS_factory *theOSfactory (){if ( VXOsf NULL )VXOsf =new VXOSfactory ;return VXOsf ;};如果当前使用的操作系统是WindowsNT ,其实现则为:static NTOSfactory *ntOsf =NULL ;VOS_factory *theOSfactory (){if ( ntOsf NULL ){ntOsf =new NTOSfactory ;}return ntOsf ;};·12·第4期何先波:嵌入式软件开发环境中操作系统抽象层的设计与实现如果当前使用的操作系统为VXWorks ,则只需用上述方法实现函数theOSfactory 便可通过该函数进行相应的接口调用.比如,对要产生一互斥信号量调用路由如下:VOS_muteX muteX =theOSfactory ()->createVOS_muteX ().3.2 使用宏方式实现还是以互斥信号量为例.假定VOS 层提供的互斥信号量的接口如下:VOS_muteX_destroy (),VOS_muteX_create (),VOS_muteX_iock (),VOS_muteX_free ().以VOS_SmuteX_iock ()为例,宏方式实现方法简单描述如下:VOS_resuit VOS_SmuteX_iock (VOS_muteX *const me )ifdef NT{WindowsNT 对应的代码实现}eiseifdef VXWorks{VXWorks 对应的代码实现}其涉及的相关类型可通过类型重新定义实现.如对抽象型VOS_muteX ,NT 可通过如下方式实现:typedef struct NTmuteX {HANDLE hmuteX ;}NTmuteX ;typedef NTmuteX VOS_muteX ;对VXWorks 而言,转换方法为:typedef struct VXmuteX {SEm_ID hmuteX :}VXmuteX ;typedef VXmuteX VOS_muteX ;3.3 两种方法的比较第一种方法采用了较新的程序设计思想,可扩充性强,但往往需要面向对象的程序设计语言支持,否则实现上较麻烦.另外,从时间性能上考虑,宏方式实现也具有一定的优势,这一点对于有些嵌入式系统而言往往是至关重要的,这也是从实现上不考虑类似JAVA 虚拟机方法的重要原因.参考文献:[1]汤子瀛,哲凤屏,汤小丹.计算机操作系统[m ].西安:西安电子科技大学出版社,1996[2]Wayne woif ,et ai.嵌入式计算系统设计原理[m ].孙玉芳译.北京:机械工业出版社,1998[3]Andrew S T ,Aibert S W.操作系统:设计与实现[m ].王 鹏等译.北京:电子工业出版社,1998[4]Jean J L.嵌入式系统构件[m ].袁勤勇等译.北京:机械工业出版社,2002·22·成都大学学报(自然科学版)第23卷嵌入式软件开发环境中操作系统抽象层的设计与实现作者:何先波作者单位:西华师范大学,计算机科学系,南充,637002刊名:成都大学学报(自然科学版)英文刊名:JOURNAL OF CHENGDU UNIVERSITY(NATURAL SCIENCE)年,卷(期):2004,23(4)1.JEAN J L;袁勤勇嵌入式系统构件 20022.Andrew S T;Albert S W;王鹏操作系统:设计与实现 19983.Wayne Wolf;孙玉芳嵌入式计算系统设计原理 19984.汤子瀛;哲凤屏;汤小丹计算机操作系统 1996本文链接:/Periodical_cddxxb200404005.aspx。