侵权投诉
订阅
纠错
加入自媒体

在中小型CPU上使用实时操作系统及UML的设计方案

2013-11-28 11:24
小鱼时代
关注

  作者:刘辉

  为了能够同时在16位或8位中小型CPU上使用实时操作系统和基于UML的可视化图形程序设计方法进行应用程序设计,在此详细讨论了将一种新式嵌入式实时UML框架程序设计平台移植到TMS320LF2407上全部过程。

  通过状态机部件、基础框架、任务管理内核和跟踪调试器的移植证明了这种平台在中小型CPU上运行的可行性、便捷性和高可靠性等优点。最后,通过航天相机控制器应用程序设计实例中各个任务线程的执行时间测量结果及可调度结果进一步验证了该平台的实用性。

  0 引言

  随着高级编程语言和操作系统在越来越多种类的CPU构架上的应用,系统应用程序变得越来越大,越来越复杂。并且实际应用大多对于程序的设计周期、可靠性都具有很高的要求。基于传统的嵌入式实时操作系统的软件设计,虽然可使程序的实时性能得到提高,但是并行程序设计过程中存在着更多的竞争状态,而且这些竞争状态极难被发现。如何能够找到一种符合软件工程学的程序设计方法成为每个嵌入式软件工程师所面临的问题。

  传统的实时操作系统虽然可以完成任务管理,但是往往代码量较大,任务切换要求复杂,完全摒弃编译器提供的程序调用机制,采用任务堆栈机制,接口程序设计要求高,实现任务切换时占用资源较大,不适合应用于8位和16位总线构架的CPU上。

  另一方面,基于UML 的实时框架程序设计方法对于当今的高复杂性、短开发周期的商业环境来说变得越来越重要。主要是因为UML 语言是可执行的,所以根据UML 建立的系统行为模型可以生成可执行代码,从而节约了从抽象模型到手工编写可执行代码的费时、费力的工作量。但是所有的UML 代码生成工具是为类似PC上应用而设计的,不适合应用于中小型的CPU,且售价昂贵。

  如果将RTOS的实时性与UML模型设计的直观性、安全性和便捷性相结合,应用于中小规模的CPU 芯片无疑会给深度嵌入式系统开发带来更多的手段。

  1 实时UML 框架程序设计平台(QP)简介

  QP是使用实时抢占式任务管理内核、基于UML状态图的软件设计方法的轻量级软件平台,是一种新式操作系统。QP软件平台结构如图1所示由以下4个部件组成。

  1.1 任务管理内核(QK)

  QK也采用了类似其他商业内核的优先级的抢占机制以保证关键任务得到实时执行。但是QK 实现抢占的原理有别于任何一种操作系统。QK采用的是Moore状态机的“运行到结束”的机制,因此当系统还在忙于处理前较低优先级事件时,当较高优先级的事件到来时,系统将新事件存储在消息队列中,直到低优先级事件完成后,再执行新事件。QK 的实现原理不同于传统RTOS的堆栈操作,仅使用C 语言编译器的中断服务程序(ISR)机制就可完成。也就是QK的移植完全不需要插入额外的汇编语句。所以,任务切换时没有额外的开销,执行速度快,相当于子程序调用。当然如果使用其他RTOS 的任务管理功能也能代替QK,稍候在QP 到TMS320LF2407的接口程序设计部分介绍。

在中小型CPU上使用实时操作系统及UML的设计方案

  1.2 基础框架平台

  该框架平台完成了驱动事件管理功能、状态机架构管理和实时任务管理功能。

  实时UML框架序设计平台(QF)中任务是由能实现轻量级UML状态机和用来接收触发事件的消息队列组成。因此基于实时UML框架的任务具有UML状态机的特点。QF 将任务分为激活状态和休眠状态,QF 根据触发事件和任务优先级对其进行管理。实际工作时任务间采用异步的事件发送和接收机制进行通信。任务使用消息队列接收其他活动对象的事件消息;同时,不同任务产生的事件也会利QF投送给其他订阅该消息的任务。对于触发事件的交换,排队,收集,销毁等工作则由QF统一完成。可见,任务间通过QF框架进行间接通信,实现了事件松耦合。因此,基于QF的程序设计可以采用模块化的设计方法,给设计过程中方案的修改和设计后期的软件维护提供了极大的方便。正像使用UML 的自动设计工具软件进行程序设计的过程一样,使用QF的程序设计也遵循以下过程:使用UML语义进行模型设计,根据QP平台代码转换方法将UML模型转化为源代码。

  总之,基于QF的程序设计实现了可视化程序设计和“自动”代码生成的目的;另外,在嵌入式系统中也可以将QF当作为一个软件总线,将QF的接口移植到其他OS之上,以隐藏下层硬件和软件的差异。

  1.3 状态机部件(QEP)

  上节提到的QF任务的状态机的特性是由状态机部件(QEP)完成的。QEP是一个简化的轻量级的UML状态机部件,实现了状态机的状态转换触发事件响应等功能。QEP提供了两种状态机类型:层次化状态机(HSM)和平面状态机(FSM)。

  1.4 跟踪调试器(QSPY)

  QSPY 使用缓存机制采集系统内运行状态,事后在空闲任务时再编码输出,再有在整个QP 平台中QSPY调试插件有机的与系统关键运行环节有机的结合在一起,因此基于QSPY的调试可以获得更多的系统的信息的同时又不会过多地干扰程序的正常运行。在这一点上比传统RTOS中的跟踪调试器更领先一步。

1  2  3  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号