深入了解QEP:通用分层事件处理器
1. QEP简介
QEP(Hierarchical Event Processor)是一个通用、高效且高度可移植的分层事件处理器,可用于任何事件驱动的环境,如GUI系统、计算机游戏或实时嵌入式(RTE)系统。它致力于遵循UML规范,但并非实现整个庞大的UML状态机包,而是提供足够的基本元素,以直接构建符合UML的基本状态机,并将更高级的UML概念作为设计模式来支持。
QEP的主要特性如下:
- 全面支持分层状态嵌套。
- 保证在任意状态转换拓扑上执行进入/退出动作。
- 完全支持嵌套初始转换。
- 在C或C++中,状态机元素精确、明确且唯一地映射到代码,具有高度的可维护性和可追溯性。
- 极小的RAM/ROM占用。一个状态机对象在RAM中仅需一个函数指针。在ARM Cortex - M3处理器上,分层状态机代码约需600字节,而简单的“扁平”有限状态机仅需约120字节的代码空间(ROM)。
- 无需RAM来表示状态和转换,状态数量仅受代码空间(ROM)限制。
- 事件处理器代码完全可重入,栈需求极小。
- 支持带有任意参数的事件。
- 易于与任何事件排队和调度机制集成,如简单的事件循环、Windows等GUI系统或QP等事件驱动框架。
- 源代码非常干净,通过PC - Lint的严格静态分析。
- 源代码98%符合汽车行业软件可靠性协会(MISRA)的《车辆软件中C语言使用指南》。
- 在线提供文档、应用示例和针对各种编译器的移植版本。
- 具备Q - SPY软件跟踪工具,实现前所未有的可观察性、可控性和可测试性。