在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 35582|回复: 78

[资料] UML状态图的实用C/C++设计(第二版)PDF

[复制链接]
发表于 2010-5-12 00:21:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 z_yc 于 2010-5-12 09:54 编辑

事件触发机制是开发嵌入式软件的一种常用且有效的模式,而状态图就是该机制的核心。即便已使用状态图多年,这本书也能使你对状态图有全新的认识。掌握了这些知识,即使面对复杂的应用逻辑,也能开发出健壮的软件。
这里为原版第二版(2009)。好像还没有中文版。下面是有人翻译的目录

1
1.1 安装本书代码
1.2 开始玩吧
1.2.1
运行游戏的DOS 版本
1.2.2 运行游戏的Stellaris 版本
1.3 main()函数
1.4
“飞行射击“游戏的设计
1.5
“飞行和射击”游戏中的主动对象
1.5.1
Missile 主动对象
1.5.2
Ship 主动对象
1.5.3
Tunnel 主动对象
1.5.4
Mine 组件
1.6
“飞行和射击”游戏中的事件
1.6.1
事件的生成,发布和出版
1.7
对层次状态机编码
1.7.1
第一步:定义Ship 的结构
1.7.2 第二步:初始化状态机
1.7.3
第三步:定义状态处理函数
1.8
执行模式
1.8.1
简单的非抢占式Vanilla 调度器
1.8.2
QK 抢占式内核
1.8.3
传统的操作系统/实时操作系统
1.9
和传统方法的比较
1.10
小结
2
2.1
事件-动作范例的简化
2.2
基本的状态机概念
2.2.1
状态
2.2.2
状态图
2.2.3
状态图和流程图的比较
2.2.4
扩展状态机
2.2.5
警戒条件
2.2.6
事件
2.2.7
动作和转移
2.2.8
运行--完成执行模式
2.3 UML
对传统FSM 方法的扩展
2.3.1
反应性系统里的行为重用
2.3.2
层次式嵌套状态4
2.3.3
行为继承
2.3.4
状态的LISKOV 替换原理5
2.3.5
正交区域
2.3.6
进入和退出动作
2.3.7
内部转移
2.3.8
转移的执行次序
2.3.9
本地转移和外部转移的对比
2.3.10
UML 里的事件类型
2.3.11
事件的递延
2.3.12
伪状态
2.3.13
UML 状态图和自动化代码合成
2.3.14
UML 状态图的局限性
2.3.15
UML 状态机语义:一个详尽的实例
2.4
设计一个UML 状态机
2.5
小结
3
3.1
定时炸弹实例
3.1.1
运行实例代码
3.2
一个通用的状态机接口
3.2.1
表叙事件
3.3 嵌套的switch 语句
3.3.1
例程的实现
3.3.2
推论
3.3.3
这种技术的各种变体
3.4
状态表
3.4.1
通用状态表事件处理器
3.4.2
特定应用的代码
3.4.3
推论
3.4.4
这种技术的各种变体
3.5
面向对象的状态设计模式
3.5.1
例程的实现
3.5.2
推论
3.5.3
这种技术的各种变体
3.6 QEP FSM
实现方法
3.6.1
通用QEP 事件处理器
3.6.2
特定应用的代码
3.6.3
推论
3.6.4
这种技术的各种变体
3.7
状态机实现技术的一般性讨论
3.7.1
函数指针的角色
3.7.2
状态机和C++例外处理
3.7.3
实现警戒条件和选择伪状态
3.7.4
实现进入和退出动作
3.8
小结
4
4.1 QEP
事件处理器的关键特征
4.2 QEP
的结构
4.2.1
QEP 源代码的组织
4.3
事件
4.3.1
事件信号(QSignal)
4.3.2
C 语言实现的QEvent
4.3.3
C++语言实现的QEvent
4.4
层次式状态处理函数
4.4.1
标识超状态(Q_SUMPER())
4.4.2
C 语言实现的层次式状态处理函数
4.4.3
C++语言实现的层次式状态处理函数
4.5
层次式状态机的类
4.5.1
C 语言实现的层次式状态机(QHsm 结构)
4.5.2
C++语言实现的层次式状态机(QHsm 类)
4.5.3
顶层状态和初始伪状态
4.5.4
进入/退出动作和嵌套的初始转移
4.5.5
QEP 里保留的事件和辅助宏
4.5.6 最顶层初始转移(QHsm_init())
4.5.7
分派事件(QHsm_dispatch(), 通用结构)
4.5.8
在状态机里实施一个转移(QHsm_dispatch(),转移)
4.6
使用QEP 实现HSM 步骤的小结
4.6.1
第一步:枚举信号
4.6.2
第二步:定义事件
4.6.3
第三步:派生特定的状态机
4.6.4
第四步:定义初始伪状态
4.6.5
第五步:定义状态处理函数
4.6.6
编写进入和退出动作的代码
4.6.7
编写初始转移的代码
4.6.8
编写内部转移代码
4.6.9
编写正常转移代码
4.6.10
编写警戒条件代码
4.7
使用QEP 编写状态机时需要避免的错误
4.7.1
不完整的状态处理函数
4.7.2
不规范的状态处理函数
4.7.3
在进入或退出动作里的状态转移
4.7.4
不正确的事件指针的类型转换
4.7.5
在进入/退出动作或初始转移内存取事件参数
4.7.6
在初始转移里以非子状态为目的状态
4.7.7
switch 语句外面编码
4.7.8
不够优化的信号粒度
4.7.9
违反运行--完成语义
4.7.10
对当前事件无意的破坏
4.8
移植和配置QEP
4.9
小结
5
5.1
终极钩子
5.1.1
目的
5.1.2
问题
5.1.3
解决方法
5.1.4
代码样本
5.1.5
推论
5.2
提示器
5.2.1
目的
5.2.2
问题
5.2.3
解决方法
5.2.4
代码样本
5.2.5
推论
5.3
迟延的事件
5.3.1
目的
5.3.2 问题
5.3.3
解决方法
5.3.4
代码样本2
5.3.5
推论
5.3.6
已知的用途
5.4
正交组件
5.4.1
目的
5.4.2
问题
5.4.3
解决方法
5.4.4
代码样本
5.4.5
推论
5.4.6
已知的用途
5.5
转移到历史状态
5.5.1
目的
5.5.2
问题
5.5.3
解决方法
5.5.4
代码样本
5.5.5
推论
5.5.6
已知的用途
5.6
小结
6
6.1
控制的反转
6.2 cpu
管理
6.2.1
传统的顺序式系统
6.2.2
传统的多任务系统
6.2.3
传统的事件驱动型系统
6.3
主动对象计算模式
6.3.1
系统结构
6.3.2
异步通讯
6.3.3
运行--完成3
6.3.4
封装
6.3.5
对状态机的支持
6.3.6
传统的可抢占式内核/RTOS
6.3.7
合作式Vanilla 内核
6.3.8
可抢占式RTC 内核
6.4
事件派发机制
6.4.1
直接事件发布
6.4.2
发行-订阅
6.5
事件内存管理
6.5.1
复制完整的事件
6.5.2
零复制的事件派发
6.5.3
静态和动态的事件
6.5.4 多点传送事件和引用计数器的算法
6.5.5
自动化垃圾收集4
6.5.6
事件的所有权
6.5.7
内存池
6.6
时间管理
6.6.1
时间事件
6.6.2
系统时钟节拍
6.7
错误和例外的处理
6.7.1
契约式设计
6.7.2
错误和例外条件的对比
6.7.3
C C++里可定制的断言
6.7.4
例外条件的基于状态的处理
6.7.5
带着断言的交货
6.7.6
由断言担保的事件派发
6.8
基于框架的软件追踪
6.9
小结
7
7.1 QF
实时框架的关键特征
7.1.1
源代码
7.1.2
可移植性
7.1.3
可裁剪性
7.1.4
对现代状态机的支持6
7.1.5
直接事件发送和发布-订阅式事件派发
7.1.6
零复制的事件内存管理
7.1.7 开放式序号的时间事件
7.1.8 原生的事件队列6
7.1.9
原生的内存池6
7.1.10
内置Vanilla 调度器
7.1.11
QK 可抢占式内核的紧密集成
7.1.12
低功耗架构
7.1.13
基于断言的错误处理
7.1.14
内置软件追踪测试设备
7.2 QF
的结构
7.3
主动对象
7.4 QF
的事件管理
7.5 QF
的事件派发机制
7.6
时间管理
7.7
原生QF 事件队列
7.8
原生QF 内存池
7.9
原生QF 优先级集合
7.10
原生合作式\vanilla 内核
7.11 QP
参考手册
7.12 小结
8
8.1 QP
平台抽象层
8.1.1
生成QP 应用程序
8.1.2
生成QP
8.1.3
目录和文件
8.1.4
头文件qep_port.h
8.1.5
头文件qf_port.h
8.1.6
源代码qf_port.c
8.1.7
头文件qp_port.h
8.1.8
和平台相关的QF 回调函数8
8.1.9
系统时钟节拍(调用QF_tick()
8.1.10
生成QF
8.2
移植合作式Vanilla 内核
8.2.1
头文件qep_port.h
8.2.2
头文件qf_port.h
8.2.3
系统时钟节拍(QF_tick()
8.2.4
空闲处理(QF_onIdel()
8.3 QF
移植到uc/os-II (常规RTOS)
8.3.1
头文件qep_port.h
8.3.2
头文件qf_port.h
8.3.3
源代码qf_port.c
8.3.4
生成uc/os-II 移植
8.3.5
系统时钟节拍(QF_tick()
8.3.6
空闲处理
8.4 QF
移植到Linux(常规POSIX 兼容的操作系统)
8.4.1
头文件qep_port.h
8.4.2
头文件qf_port.h
8.4.3
源代码qf_port.c
8.5
小结
9 0
9.1
开发QP 应用程序的准则
9.1.1
规则
9.1.2
启发式
9.2
哲学家就餐问题
9.2.1
第一步:需求
9.2.2
第二步:顺序图
9.2.3
第三步:信号,事件和主动对象0
9.2.4
第四步:状态机
9.2.5
第五步:初始化并启动应用程序
9.2.6
第六步:优雅的结束应用程序
9.3
在不同的平台运行DPP
9.3.1DOS 上的Vanilla 内核
9.3.2
Cortex-M3 上的Vanilla 内核
9.3.3
uC/OS-II
9.3.4
Linux
9.4
调整事件队列和事件池
9.4.1
调整事件队列
9.4.2
调整事件池
9.4.3
系统集成
9.5
小结
10
10.1
选择一个可抢占式内核的理由
10.2 RTC
内核简介
10.2.1
使用单堆栈的可抢占式多任务处理
10.2.2
无阻塞的内核
10.2.3
同步式和异步式可抢占
10.2.4
堆栈的可用性
10.2.5
和传统可抢占式内核的比较
10.3 QK
的实现
10.3.1
QK 源代码的组织
10.3.2
头文件qk.h
10.3.3
对中断的处理
10.3.4
源文件qk_sched.cQK 调度器)
10.3.5
源文件qk.cQK 的启动和空闲循环)
10.4
高级的QK 特征
10.4.1
优先级天花板互斥体
10.4.2
本地线程存储
10.4.3
扩展的上下文切换(对协处理器的支持)
10.4.4
移植QK
10.4.5
头文件qep_port.h
10.4.6
头文件qf_port.h
10.4.7
头文件qk_port.h
10.4.8
保存和恢复FPU 上下文
10.5
测试QK 的移植
10.5.1
异步抢占的演示
10.5.2
优先级天花板互斥体的演示
10.5.3
TLS 的演示
10.5.4
扩展的上下文切换的演示
10.6
小结
11
11.1
软件追踪的概念
11.2 Quantum Spy
软件追踪系统
11.2.1
一个软件追踪会话的实例
11.2.2 具有人类可读性的追踪输出
11.3 QS
目标组件
11.3.1
QS 源代码组件
11.3.2
QS 的平台无关性头文件qs.h qs_dummy.h
11.3.3
QS 的临界段
11.3.4
QS 记录的一般结构
11.3.5
QS 的过滤器
11.3.6
QS 数据协议
11.3.7
QS 追踪缓存区
11.3.8
字典追踪记录
11.3.9
应用程序相关的QS 追踪记录
11.3.10
移植和配置QS
11.4 QSPY
主机应用程序
11.4.1
安装QSPY
11.4.2
从源代码生成QSPY
11.4.3
使用QSPY
11.5
MATLAB 输出追踪数据
11.5.1
使用MATLAB 分析追踪数据
11.5.2
MATLAB 输出文件
11.5.3
MATLAB 脚本qspy.m
11.5.4
qspy.m 产生的
11.6
QP 应用程序添加QS 软件追踪
11.6.1
初始化QS 并安排过滤器
11.6.2
定义平台相关的QS 回调函数
11.6.3
使用回调函数QS_onGetTime()产生QS 时间戳
11.6.4
从主动对象产生QS 字典
11.6.5
添加应用程序相关的追踪记录
11.6.6
QSPY 参考手册
11.7
小结
12
12.1 QP-nano
的关键特征
12.2
使用QP-nono 实现飞行射击游戏实例
12.2.1
main()函数
12.2.2
头文件qpn_port.h
12.2.3
在飞行射击游戏程序里的信号,事件和主动对象
12.2.4
QP-nano 里实现Ship 主动对象
12.2.5
QP-nano 的时间事件
12.2.6
飞行射击游戏程序在QP-nano 里的版支持包
12.2.7
生成QP-nano 上的飞行射击游戏程序
12.3 QP-nano
的结构
12.3.1
QP-nano 的源代码,实例和文档
12.3.2
QP-nano 的临界区
12.3.3 QP-nano 里的状态机
12.3.4
QP-nano 里的主动对象
12.3.5
QP-nano 里的系统时钟节拍
12.4 QP-nano
的事件队列
12.4.1
QP-nano 的就绪表(QF_readySet_
12.4.2
从任务层发送事件(QActive_post()
12.4.3
ISR 层发送事件(QActive_postISR()
12.5 QP-nano
的合作式Vanilla 内核
12.5.1
Vanilla 内核的中断处理
12.5.2
Vanilla 内核的空闲处理
12.6
可抢占式运行--完成QK-nano 内核
12.6.1
QK-nano 接口qkn-h
12.6.2
启动主动对象和QK-nano 空闲循环
12.6.3
QK-nano 调度器
12.6.4
QK-nano 的中断处理
12.6.5
QK-nano 的优先级天花板互斥体
12.7 PELICAN
路口实例
12.7.1 P
ELICAN 路口状态机
12.7.2 P
edestrian 主动对象
12.7.3
QP-nano 内核移植到MSP430
12.7.4
QP-nano 内存使用情况
12.8 小结




                               
登录/注册后可看大图

Practical ML Statecharts in C C Second Edition.part1.rar

3.81 MB, 下载次数: 1061 , 下载积分: 资产 -2 信元, 下载支出 2 信元

Practical ML Statecharts in C C Second Edition.part2.rar

3.81 MB, 下载次数: 953 , 下载积分: 资产 -2 信元, 下载支出 2 信元

Practical ML Statecharts in C C Second Edition.part3.rar

2.81 MB, 下载次数: 1371 , 下载积分: 资产 -2 信元, 下载支出 2 信元

发表于 2010-5-12 13:53:12 | 显示全部楼层
谢谢楼主!
发表于 2010-6-25 15:34:29 | 显示全部楼层
谢谢          !!!!!!!!!!
发表于 2010-6-28 13:13:39 | 显示全部楼层
好东西,确实是好东西
发表于 2010-7-19 10:55:54 | 显示全部楼层
看看!!!!
发表于 2010-8-6 16:14:49 | 显示全部楼层
感谢分享资料!!!!
发表于 2010-8-6 16:18:07 | 显示全部楼层
奶奶的熊,原来是英文的 请大家不用花钱下载了 我给个链接 有英文版免费下载
www.quantum-leaps.com/psicc2
发表于 2010-8-8 09:27:39 | 显示全部楼层
感謝分享好書
发表于 2010-8-8 09:39:34 | 显示全部楼层
感謝分享好書
发表于 2010-8-9 15:12:45 | 显示全部楼层
感謝分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-1 19:59 , Processed in 0.041324 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表