QP是什么,为什么在国内不为我们所熟悉?

为了创建一个可用的软件,你不得不和每个修改,每个特征,每个微小的调节做斗争,直到别人满意为止。没有捷径可走。有运气的成分,但你的成功不是幸运,而是由于你的尽力争取。 

-- Dave Winer

不知道标题是否合适,或者说符合现实情况,但是从最近的反应情况来看,我们对qp的了解确实是较少,在工作上应用方面就更少了。

国外已经应用的很多了,霍尼韦尔等很多大厂都应用了,国内大牛anymcu翻译有中文版,源码核心代码不多。不过我看到他的网站有勘误表已经不能访问了,不知道邮箱有没有机会被翻牌,如果实在有搞不懂的可以试试。

那为什么我国读者并不熟悉呢?我们来了解一下QP框架或者说是量子程序设计到底是什么,有什么作用和特别之处,写的不好勿喷,多多交流。

它是什么?

QP框架诞生于硅谷,是个量子力学博士创立的,非常好的实现了层次式状态机,得到了近二十年来嵌入式领域最大突破的称号。

QP是一种轻量级的实时嵌入式框架 Real-Time Embedded Framework (RTEF),提供架构复用和并发编程,可以完成更高概念性完整性的安全代码,并显着提高软件质量,说白了就是用好了就很好用。

而且QP通过分层状态机(UML状态图)指定了活动对象的行为(Don’t call me; I’ll call you.)。该框架使用C语言对UML状态机进行手动编码,并且可以通过基于QM模型的免费设计工具自动生成代码。

围绕着实时嵌入式框架(RTEF)这一个独特的平台,如下图所示,可以完成更完整更严格的代码质量控制。

作用是什么?

QP框架的主要目标有以下几点。

  • 提供基于活动对象的可重用事件驱动的体系结构,与基于传统实时操作系统的常规共享状态并发相比,它实际上更加安全,可扩展,并且易于理解,如下。

  1. 保持数据隔离并绑定到线程。

  2. 通过消息(事件对象)异步在线程之间进行通信。

  3. 线程应该花费生命周期来响应传入的事件。

  • 为分层状态机提供一种易于使用的编码技术,以实现活动对象的行为。

通常,这些动作由两个因素决定:事件的性质当前的上下文,即涉及系统的过去事件的顺序。

  • 为活动对象提供有效且线程安全的异步机制进行通信,例如直接事件传递、发布、订阅。

  • 提供事件驱动的计时服务(时间事件)。

  • 提供一些用于运行QP应用程序的内置实时内核,例如协作QV内核,抢先式非阻塞QK内核和抢先式阻塞QXK内核。

  • 为基于软件跟踪(QUTest)的应用程序提供单元测试支持。

  • 为第三方RTOS和台式机操作系统提供可移植性层和即用型端口 QP框架几乎可以与任何传统的实时操作系统(RTOS)一起使用。当前支持的第三方RTOS内核是:

    • embOS

    • FreeRTOS

    • ThreadX

    • uC/OS-II

    • OSEK/VDX RTOS ERIKA Enterprise

  • 为通过QM建模工具进行建模和自动生成代码提供目标。

设计一个子机以捕获qm中的常见行为如图所示

自动生成代码

有什么特别之处?

QP实时嵌入式框架将面向对象与特定的并发模型结合在一起,有很多优势,如下几点。

面向对象

尽管它是用ANSI-C编写的,但QP/C基本上是一个面向对象的框架,该框架本身和从该框架派生的应用程序基本上由类组成,并且只有类可以具有状态机,与他们相关联。当然这里也需要了解一下C语言的面向对象编程了。

轻量级

QP框架占用空间非常小,尤其是在RAM中,与最小的实时操作系统(RTOS)内核相比,QP所需的资源更少,整个QP代码要求少于5KB的代码和数据,这也降低了实现抽象概念的困难程度。

同时,QP还提供了比常规RTOS高得多的抽象级别。使用QP,可以在活动对象,状态机和事件级别上进行工作,而不是RTOS的“裸”线程。

分层状态机

活动对象的行为在QP中通过分层状态机(UML状态图)进行指定。该框架支持使用C/C++对UML状态机进行手动编码,以及通过基于QM的图形化设计(MBD)工具进行全自动代码生成,状态机就像没有道路基础设施的汽车。

内置内核

QP框架可以在裸机单芯片微控制器上运行,完全替代了传统的RTOS内核获得的所有功能,并且专门设计用于将事件驱动的活动对象与传统的代码混合。

STM32F4-Discovery board为示例,演示的内置内核对比如下:

  • 与ARM-Keil,GNU-ARM和IAR-ARM工具链的合作QV

  • 具有ARM-Keil,GNU-ARM和IAR-ARM工具链的抢占式,运行完成QK

  • 具有ARM-Keil,GNU-ARM和IAR-ARM工具链的双模式(运行至完成/阻止)QXK

互通性

QP还可以与许多传统的RTOS和桌面OS,例如Windows和Linux一起使用。这样就能够集成各种通信堆栈TCP/IP,USB,CAN等,而且可以阻止任务代码的其他中间件。

总结

本文需要了解一下uml建模的知识,经过15年的持续开发,QP也渐渐的成为了嵌入式软件市场上最成熟,最受欢迎的此类解决方案。

并且广泛用于医疗设备,消费电子产品,有线和无线电信,工业自动化,运输,航空航天,机器人技术等领域。

而且对于复杂的逻辑处理能极大的简化代码,官方指导书中给了几个例子,由浅入深,带领大家设计出完备的状态机,框架有c和cpp多个版本,完全开源,其中c语言版本也是采用面向对象思想设计的。

总之,不论是不是搞嵌入式的,这种思想都值得深入学习。

1.其实,机器人的发展与嵌入式系统密不可分~

2.HarmonyOS到底是不是Android套皮?

3.代码防御性编程的十条技巧~

4.几种基于RTOS的实用工具

5.单片机编程如何查看版本之间代码的不同?

6.从硬件转向软件设计,请牢记这十大技巧!

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值