基于UC/OS-II的嵌入式构件系统设计
硬件抽象层实现硬件的驱动、I/O控制,可以用于同一种硬件平台的很多应用中。OS层主要用于与操作系统相关的操作,包括系统任务的创建、消息的创建等。通信层实现数据的传递、数据格式的转换。
用户接口层提供与底层应用相关的基本操作函数、对外接口函数,实现上下层之间的互操作。应用层位于顶层,用于实现用户的应用程序。用户无需关心底层的硬件结构,直接使用用户接口层提供的基本操作函数,即可编程实现自己需要的功能。
层(即构件子系统)的接口是所包含的构件接口的组合。分层接口从上层看是透明的,对下层则是不透明的。在层接口处定义的构件仅对整个层次结构中该层或者该层之上的构件可见。只要符合一定的条件,每一层都可实现相当程度的复用,只需要替换相关的构件即可。
这里,特别要提到“原型”的概念。在各个层中,每个垂直切片仅实现与切片的目的相关的部分。这种实现方案称为“迭代式原型(iterative prototyping)”,每个切片称为一个“原型(prototype)”。实现原型时,每个原型都在其前驱所实现的特性的基础上进行构造。原型的序列根据逻辑上特性的优先顺序来确定。本体系结构引入原型的概念,每个原型包含来自各层的一个或者多个构件,后面的原型构造于先前原型所提供的服务的基础上。每个原型将实现一种特定的功能,逐渐增加功能,最终实现用户应用程序。
分层的结构设计保持了顶层与低层很好的一致性,实现了横向分离;同时,原型的引用使得各层间的连接更为紧密,纵向相连,从而得到集成度更高、更可靠的系统。
3 嵌入式构件系统的实现
3.1 键盘构件系统的实现
嵌入式构件从本质上来说,大部分的工作就是对输入/输出部分进行处理。其构件主要有键盘、前向通道的处理(如A/D处理)、后向通道的处理(如D/A处理)、USB控制、网络控制、液晶显示等。输入/输出软件的代码占据了整个操作系统的相当部分,对嵌入式操作系统来说,这部分的重要性是不言而喻的。其中,键盘更是嵌入式应用程序最常用的器件,因此本文以键盘为例,依据上述体系结构构建了键盘应用模型,配置实现了键盘功能。
图2为键盘构件系统分层体系结构。每层左边显示的“棒棒糖”形状表示层的接口,接口是一组可以从外部访问的类和对象。虚线箭头表示的是依赖关系,每层都依赖于其下一层的包,且构件与构件之间也存在着依赖关系。上层调用位于下层具体一些的层次中的服务,这种单向依赖使得可以在不同的上下文中使用相同的服务,而无需考虑服务的实现方式。同时,由于低一些的层中提供了定义良好的接口集合,可以用不同的底层实现来替换它们,这样,整个构件系统就能更方便地移植到其他的物理环境中。

另外,图2中的宽箭头表明了数据的传递方向,数据在硬件抽象层取得后,逐级向上层传递,经过层层处理、转换,最终到达应用层,被用户程序所用。而此处,数据的传输过程其实也是一个原型的形成过程,即最终实现了一键盘响应处理任务。
- 3.2 构件生成集成环境的实现
基于构件系统体系结构,本文拟开发了一构件生成集成环境,如图3所示。该环境可以实现构件系统的自配置、自拼接、源代码自生成,结构清晰,使用简便。随后在该集成环境上,配置键盘构件系统,自动生成源代码,并在博创ARM300实验平台上实现了键盘响应,很好地验证了此体系结构的可行性及优越性。

结语
本文扩展了通用软件构件的概念,提出了适用于嵌入式系统的构件模型;并在此基础上设计了嵌入式软件6层体系结构,采用了分层的结构设计,实现了横向分离,而“原型”的引用使得各层纵向相连。此体系结构不仅实现了软硬件分离,同时也实现了功能的分离,有利于实现稳定性好的嵌入式系统。最后,本文在键盘应用实例中验证了其可行性。随着嵌入式系统的硬件发展,以及基于构件的软件设计方法自身的不断完善,基于构件的软件设计方法必将是未来的发展方向。 linux操作系统文章专题:linux操作系统详解(linux不再难懂)
本文扩展了通用软件构件的概念,提出了适用于嵌入式系统的构件模型;并在此基础上设计了嵌入式软件6层体系结构,采用了分层的结构设计,实现了横向分离,而“原型”的引用使得各层纵向相连。此体系结构不仅实现了软硬件分离,同时也实现了功能的分离,有利于实现稳定性好的嵌入式系统。最后,本文在键盘应用实例中验证了其可行性。随着嵌入式系统的硬件发展,以及基于构件的软件设计方法自身的不断完善,基于构件的软件设计方法必将是未来的发展方向。 linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论