一个轻量级事件驱动嵌入式系统应用框架Quantum Platform

2020-12-29 15:37:49 浏览数 (1)

QP(Quantum Platform)是一个轻量级的、开源的、基于状态机的、事件驱动型应用程序框架。这个框架包括四部分:

  • 事件处理器(QEP);
  • 轻量级的事件驱动框架(QF);
  • 任务调度微内核(QV、QK、QXK);
  • 实时跟踪调试器(QS)。

(1)QEP

  • Quantum Event Processor是一个通用的,可移植的,可重用的状态机引擎。
  • QEP允许你直接把UML样式的状态图映射为代码。
  • QEP提供了传统的简单平面状态机和层次式状态机。QEP可以直接操作事队列和事件分发机制。

(2)QF

  • QF是一个通用的,事件驱动的应用框架,是一个实时框架,面向嵌入式系统。
  • QF被设计成和QEP,RTOS协同工作。
  • QF包含了事件队列,活动对象,事件遍历等。

(3)QK

  • QK是一个轻量级可抢占型实时内核
  • QK是一个极小的,按RTC习惯的,执行独立任务的内核。
  • QK必须和QF版本相匹配。

(4)QS

  • 一个强大的调试工具
QEP (Hierarchical Event Processor)

事件处理器,也可以理解为一个状态机引擎,当有事件需要处理时,调用当前状态的状态函数处理这个事件,并处理调用状态函数的返回值,根据返回值进行相应的状态变换(如转移到父状态)。而且状态引擎也处理某状态的进入(ENTER)、退出(EXIT)、初始伪状态(INIT)。

QF (Active-Object Framework)

QF是轻量级的、事件驱动、active objects框架。这个框架的主要任务是保证每个active object的线程安全,运行-到-完成(run-to-completion )的事件处理。它包含了直接的事件传送,发布-订阅(publish-subscribe)的事件转发,事件队列,时间事件(延时传送时间事件)。

QV (Cooperative Kernel)

协作内核(Vanilla内核),它只在time to completion的时候处理event,并在处理所有event后,对active object执行基于priority-based的调度器。它是隐式合作(implicitly-cooperative),因为活跃定时器不需要明确的放弃CPU。代替的是在完成事件处理后,简单的return到QV调度器中。

QK (Preemptive Non-Blocking Kernel)

QK是一个超快速的抢占式,基于优先级的,单stack,实时内核专门为执行active objects而设计的。它总是会处理event queued中的高优先级的active objects,但它将event当作一次性的函数来调用(而不是像传统内核那样的endless循环)。尽管如此,如果新的事件优先级比当前处理的事件优先级高,QK内核依然提供了抢占式的一次性的event处理功能(像抢占式中断处理器允许中断彼此抢占)。这意味着,QK可以使用单stack来保存所有active objects的context。

QXK (Preemptive Blocking Kernel)

QXK是一个简单的抢占,基于优先级的,阻塞,实时内核专门为传统的阻塞代码的主动对象,如商用中间件(TCP / IP协议栈,UDP协议栈,嵌入式文件系统等)或遗留代码混合设计。

QS (Software Tracing System)

QS是软件追踪系统,使开发人员能够以最少的系统资源监控目标,并没有停止或显著放缓代码直播事件驱动QP的应用程序。QS是用于测试,故障排除和优化QP应用的理想工具。QS甚至可以用于支持产品制造验收测试。

0 人点赞