qp状态机中文版

所需积分/C币:38 2017-06-18 20:19:17 4.49MB PDF
收藏 收藏
举报

qp状态机中文版
3实用UML状态图CC++实现,第二版 面向嵌入式系统的事件驱动编程 关注核心概念 提供一个完整的立即可用的开源软件架构 ●包括了一个使用 ARM Cortex-M3的详尽的实例。 3原书封面翻译件。 这本书绝对是计我对状态机大开眼界。我最近使用包含在本书内的QP框架改写了代码的 主要部分,它带来了奇迹,我以前的代码使用了许多传统的状态机,并很快演交成意大利面条 式代码。层次式状态机方法令新代码更小,更健壮,并且更易于维护和扩展。优秀的书和代 码 Bob Bradley, Apple Computer, Inc 4本书的目标人群为以下对事件驱动型编程和现代状态机感兴趣的软件开发者: 嵌入式程序员和顾问会发现一个完整的,立即可以用的事件驱动型构架,用来开发应用系 统。本书描叙了状态杋编码策略,和同样重要的,一个与之配套的执行并发状态机的实时 框架。这两个因素是互补的,离开了对方,每个因素都不能发挥它的最大潜能。 ●寻求一个实时内核或实时操作系统的嵌入式系统开发者会发现,QP事件驱动型平台可以 做到RTOS可以做到的任何事情,而且事实上,QP包含了一个完全可抢占的实时内核和 个简单的协作式调度器。 无线传感器网络等超低功耗系统的设计者会发现,如何把基于事件驱动状态机的解决方案 裁剪以适合最小的微控制器。超轻量级的QP-nano版本(第十二章)在仅↑-2KB字节的 ROM中融合了一个层次式事件处理器,一个实时框架和一个协作式或者完全可抢占式的 内核。 ●对于复杂性的应用,大规模的大型并行服务应用的设计者会发现,结合」层次式状态机的 事件驱动型解决方法很容易扩展,在管理非常人数目的状态化构件,例如客户任务方面, 它非常理想。可以证明,QP的嵌入式设计理念对每个构件的时间和空间性能都提供了关 键的支持 开源社区会发现QP辅助了其他的开源软件,比如 LINUX或BSD。QP到LNUX(和 PoSⅨⅩ兼容的操作系统)的移植在第八章描叙。 ●使用C或C艹+的图形用户界面开发者和计算机游戏程序员会发现QP很优雅的辅助了GU 库。QP提供了高层的基亍层次式状态机的“屏幕逻辑”,而由GU库处理底层的窗口部件 widget)并在屏幕上画图。 系统构架师会发现QP是大型自动化设计工具的一个超轻量化的替代 自动化设计工具的用户会获得对他们使用工具的内部工作方法更深的理解。看到“帽了下 面”的内容会帮助他们更加自信的更有效的使用工具 由于代码为中心的解决方法,本书主要吸引那些需要创建实际的可工作代码,而不是 仅仅建模的软件开发者。许多其他关于UML的书籍己经在描叙模型驱动分析和设计,以及其 他相关问题,比如软件开发过程和建模工具方面,做了很好的工作。 本书不提供另一个计算机辅助软件工程(CASE)工具。相反,本书讨论关于对层次式状 态杋的实用的,可维护的编码技术,并使用一个实时框架把状态机和健壮的事件驱动型系统结 合起来。 Miro samek博士是 Quantum Leaps公司的创始人和总裁,这是一家提供轻量化的基于状态机 的事件驱动型应用程序框架的开源公司。他是 Practical statecharts in c/o+”第一版(CMP 出版社,2002)的作者,他为包括CC++ Users journal在内的许多杂志撰写专栏,他是 Embedded Systems Conferences的定期演讲者,并任职于 Embedded Systems Design杂志 的编辑审查委员会。多年以来,他在多家硅谷公司从事嵌入式软件架构师的工作,在此之前他 是 GE Medical Systems(现在是 GE Healthcare)的一名嵌入式软件工程师。 Samek博士在 GsI(亥姆霍兹重离子研究中心,位于德国 Darmstadt)获得核物理博士学位 4原书封面翻译件。 5本书在UML髙层次抽象概念和现代层次式状态机的实际编程实践之间架起了一座桥梁。本书 描叙了一个名为QP的轻量级开源的事件驱动型基础架构,它可以让用户不需使用大型工具, 就可以使用C或C-语言对UML状态图和并发型事件驱动应用程序进行直接的手工编码。 本书由两部分组成。在第一部分,它通过多个可执行实例,从实际应用的角度描叙了传统的有 限状态机概念和现代的UML状态机概念,以及和每种状态机概念相对应的状态杋编码技术和 状态机设计模式。在第二部分,它对一个可以把多个并发型事件驱动型状态机组合成健壮的应 用程序的通用的实时框架QP进行了详细的设计分析。QP事件驱动型框架和传统的实时操作 系统RTOS相比有多个更加优异的特征。QP的最简配置可以完全取代RTOS直接运行在裸的 微处理器或DSP上。QP也叮以在儿乎所有OS/RTOS上工作,从而利用现有的设备驱动程序, 通讯堆栈和其他中间件。 然后它解释了轻量级可抢占型实时内核QK。软件跟踪工具QS本身是一个强大的调试工具, 如果读者想了解如何实现一个复杂高效的通讯协议,它也是一个经典的学习范例。 QP-nano则 是事件驱动基础架构的超轻量级版本,它可以运行在低端的8位和16位MCU上 本书的网站(www.state.-machine.com/psicd)提供了QP的源代码,对流行处理器和操作系统的移 植代码,以及在本书描叙的各种实例代码 本书关注UML状态机的核心概念而不是那些直在改变的具体工具,从而允许读者在不同的 项目中继续使用本书的知识。 本书为各神小型和大型的嵌入式系统提供了一个完整的立即可用的廾源实时软件架构。 本书包括了一个使用 ARM Cortex-M3的大型实例,并通过它着重强调了在日常编程活动中程 序员和架构师可能遇到的问题 °原书内容简介翻译件。 6嵌入式/编程/软件 实用UML状态图CC-+实现 第二版 嵌入式系统的事件驱动型编程方法 使用本书,轻松实现从传统的顺序八编程到现代的事件驱动型编程的转变 实用UML状态图CC-+实现第一版,在UML的高层次抽象概念和现代的层次式状态机UML 洑态图的实际编程实践之间架起了座桥梁。本书描述了个名为QP的轻量级丌源事件驱 动架构。这个架构不需使用大型的工具,即可实现对UML状态图和并发型事件驱动应用程序 的手工编码。 理解状态机概念 从传统的有限状态机到现代的UML状态机 ●掌握编写状态机的技术和设计模式 使用各种可执行的实例学习 详解事件驱动编程的关键概念 包括控制的反转,阻塞和非阻塞代码,运行到完成(RTC)语义 让您彻底融入QP架构 QP叮以和绝大多数OS/RTOS一起工作,从而利用它们现有的驱动程序,通讯堆栈和其他中间 ●结合实际的学习网站htp:/ elsevierdirect. com/companions./9780750687065 本书的网站包括了QP完整的开源源代码,到80x86, ARM Cortex-M3,MSP430和 LINUX的移 植代码,以及本书所有的实例代码。 Miro samek博士是 Quantum Leaps公司的创始人和总裁,这是一家提供轻量化的基于状态机的 事件驱动型应用程序框架的开源公司。他是“ Practical statecharts in C/C++”第一版(CMP出版 社,2002)的作者,他为包括C/C++ Users journal在内的许多杂志撰写专栏,他是 Embedded Systems Conferences的定期演讲者,并任职于 Embedded Systems Design杂志的编辑审查委员会 多年以来,他在多家硅谷公司从事嵌入式软件架构师的工作,在此之前他是 GE Medical Systems(现在是 GE Healthcare)的一名嵌入式软件工程师。 Samek博士在GSI(亥姆霍兹重离子 研究中心,位于德国 Darmstadt获得核物理博士学位 6原书封底翻译件。 The real voyage of discovery consists not in seeking new landscapes but in having new eyes Marcel proust UML状态图的实用CC+设计(第二版),版权2002-2008 Miro samek,保留所有权利。 且录 目录 前言. ···········:···.·····. 本书第二版的新增内容…… 全新的代码. ...···.····.··:····· :···:·····:·.·...····:· 13 开源和双许可证策略.… 14 用C语言作为主要的开发语言 14 更多的实例 支持可抢占式多任务调度 44 支持全面的测试 14 超轻量级 QP-nano版本. 15 去掉了量子比喻. 15 使用QP所需的条件 15 目标人群.. 15 本书的网站. 致谢. 17 介绍. 18 控制的倒置( Inversion of control) 18 事件驱动型框架的重要性. 主动对象计算模型. 19 以代码为中心的开发方式 19 关注实际的问题 ·····;···.·:·················:····.····:·:.:···.:·····.··:··:·:···::····:··················4······::: 19 面向对象 20 更加有趣… 20 如何联系作者?… 20 第一部分UML状态机… 21 第1章UML状态机和事件驱动型编程技术初探…...22 1.1安装本书代码. …………,………………22 1.2开始玩吧. ………23 1.2.1运行游戏的DOS版本 番。 24 1.2.2运行游戏的 Stellaris版本… 25 1.3main()函数.26 14“飞行和射击”游戏的设计 30 1.5“飞行和射击”游戏中的主动对象… 32 1.5.1 Missile主动对象… 33 1.5.2Ship主动对象 34 1.53主动对象 Tunncl 37 1.54Minc构件 38 保留屮文简体翻译的全部版权anymcu@gmail.com2010 UML状态图的实用CC+设计(第二版),版权2002-2008 Miro samek,保留所有权利。 1.6“飞行和射击”游戏中的事件 1.6.1事件的生成,发布和出版 44 1.7编写层次状态机 146 17.1第一步:定义 Ship的结构 46 1.7.2第二步:初始化状态机 1.7.3第三步:定义状态处理函数 1.8执行模型( Execution Model 52 1.8.1简单的非抢占式( Nonpreemptive)vanilla调度器 52 18.2QK抢占式内核( Preemptive Kernel) ……53 1.8.3传统的操作系统/实时操作系统…… 53 19和传统方法的比较 53 1.10小结 垂看4·垂音非垂4垂·垂·着 55 第2章…156 UML状态机速成 垂垂 56 21事件-动作范型( Event- Action Paradigm)的过份简单化 56 22基本的状态机概念… ……158 22.1状态( State)… 59 222状态图 ..···..······.·.··:·:·······.··:····.··.··········.·.······· …59 2.2.3状态图和流程图的比较 2.24扩展状态机. 61 225监扩条件( Guard Condition) 226事件( Event) ·······t ……………………62 227动作和转换( Action and Transition) …63 22.8运行-到-完成执行模型(Run-to- Completion execution Model)..63 2.3UML对传统FSM方法的扩展 63 2.3.1反应性系统里的行为重用… 64 232层次式嵌套状态 64 233行为继承( Behavioral Inheritance) …65 234状态的 LISKOV替换原则. 66 235正交区域 (Orthogonal Regions .66 23.6进入和退出动作( Entry and Exit actions 67 2.3.7内部转换( Internal transistions) 69 2.38转换的执行次序 …69 2.39本地转换和外部转换的对比 71 2.3.10UML里的事件类型 71 23.11事件的延迟 Event deferral) 72 23.12伪状态( Pseudostates 72 2313UML状态图和自动化代码合成 垂 73 2.3.14UML状态图的局限性… 74 2.3.15UML状态机语义:一个详尽的实例 .·:·.·.··:····: 74 24设计一个UML状态机….76 2.4.1问题的规范. 着鲁 77 保留屮文简体翻译的全部版权anymcu@gmail.com2010 UML状态图的实用CC+设计(第二版),版权2002-2008 Miro samek,保留所有权利。 242高层设计 77 24.3寻找重用( Reuse 244精心设计复合状态 79 24.5完善行为 79 24.6最后的改进 80 2.5小结 …81 第3章 83 标准状态机的实现方法 83 3.1定时炸弹实例 83 3.1.1运行实例代码 85 3.2一个通用的状态机接口 85 3.21表示事件 垂看4·垂音非垂4垂·垂·着 86 3.3嵌套的 switch语句 87 3.3.1实现实例 垂垂 87 3.32结果. 3.33这种技术的各种变体 …91 34状态表( State Table) ···.·.·····.·····:····.·..·.····.····.····.·.·····.·.··.··..·····:..···..·.···.:·.········.·· 91 34.1通用的状态表事件处理器. 92 342应用程序相关的代码 95 3.4.3结果 。· 98 3.44这种技术的各种变体. 99 3.5面向对象的状态设计模式.… ··.······.···.·.··..····.·:······.······..·.:····················.···· 100 3.5.1例程的实现. 3.52结果 。.垂 104 3.53这种技术的各种变体 105 36 QEP FSM实现方法 106 36.1通用的QEP事件处理器. 106 3.6.2应用程序相关的代码 110 3.6.3后果 113 3.6.4这种技术的各种变体 114 3.7状态机实现技术的一般性讨论 ·着垂垂垂 114 3.7.1函数指针的角色… 114 3.72状态机和C++例外的处理. 115 3.7.3实现监护条件和选择伪状态. .115 3.7.4实现进入和退出动作 116 38小结 116 第4章 ··..···.··:· 117 层次式事件处理器的实现. 垂 ·。··..音垂.。垂;垂 117 4.1QEP事件处理器的关键特征…… 117 4.2QEP的结构… .·:·.·.··:····: 118 4.2.1QEP源代码的组织...........………119 4.3事件 着鲁 120 保留屮文简体翻译的全部版权anymcu@gmail.com2010

...展开详情
试读 127P qp状态机中文版
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    img
    梦幽阁
    • 分享精英

      成功上传11个资源即可获取

    关注 私信 TA的资源

    上传资源赚积分,得勋章
    最新推荐
    qp状态机中文版 38积分/C币 立即下载
    1/127
    qp状态机中文版第1页
    qp状态机中文版第2页
    qp状态机中文版第3页
    qp状态机中文版第4页
    qp状态机中文版第5页
    qp状态机中文版第6页
    qp状态机中文版第7页
    qp状态机中文版第8页
    qp状态机中文版第9页
    qp状态机中文版第10页
    qp状态机中文版第11页
    qp状态机中文版第12页
    qp状态机中文版第13页
    qp状态机中文版第14页
    qp状态机中文版第15页
    qp状态机中文版第16页
    qp状态机中文版第17页
    qp状态机中文版第18页
    qp状态机中文版第19页
    qp状态机中文版第20页

    试读已结束,剩余107页未读...

    38积分/C币 立即下载 >