单片机世界
  收藏本站
   
网站首页
 
精品图书
 
北航社教材
 
推荐书目
 
下载中心
 
服务指南
 
单片机读者俱乐部
 
关于我们
 
留言中心
 
 论 坛 
   
单片机与嵌入式系统系列教材计算机系列大学教参科普图书工程图书航空航天综合外语图书社科人文
会员登陆
  会员类型: 个人 企业
  会员帐号:
  会员密码:
 

图书检索
  关键字:
  分类:
 

推荐图书(TOP 10)
电子元器件
ARM9嵌入式系统设计基础教程..
北京市高等学校教学名师奖20..
嵌入式系统开发与应用教程
多媒体CAI课件基本原理与制作..
直升机效能评估方法
智能技术——系统设计与开发..
ARM嵌入式系统实验教程(二)..
数字电路与数字逻辑
C语言程序设计教程
ADO.NET数据库访问技术案例式..
位置:首页 推荐书目
嵌入式系统的微模块化程序设计——实用状态图C/C++实现 [ ┈→ ]  
 
定价:48元
作者:[美] Miro Samek Ph.D著 敬万钧 陈丽蓉 译
书号:7-81077-415-8
配盘:光盘
丛书名:
印刷日期:200407
版次:第 1 版  第 1 次印刷
开本:787×1092 1/16开
字数:490千字
点击次数:20330 次
内容简介
    建模反应式系统而不使用重量级的工具,作者的量子编程(QP)是一种新的范型。它把状态图作为一种设计方法,而不是作为特殊工具来使用。在本书的第1部分,给出相关概念清晰而明确的叙述,包括传统的有限状态机和状态图,以及基于状态图的设计模式;给出了可运行代码,使读者能通过实际操作来学习量子编程,以及学到状态嵌套如何导致行为继承和如何通过按差异编程而实现重用。第2部分完整地叙述了量子框架的实现,以及说明如何在应用中使用它,并移植到所选用的RTOS。本书适于嵌入式系统、实时系统及UML状态图的相关工程设计人员使用,并可作计算机科学和电气工程高年级学生的教学用书。所附光盘包含了作者的量子框架的全部源代码、散见于全书的所有练习的答案以及一个RTOS32的评估板——X86处理器的32位实时操作系统。

前言
    Miro Samek博士是美国Integri Nautics公司的首席软件结构师。他在该公司以及此前在GE医疗系统都是从事实时软件开发,长期的工作使他在嵌入式实时软件开发方面积累了丰富的实践经验。他将其所积累的嵌入式实时软件开发的经验写成了这本理论和实践并重,而实践性更强的著作。本书中除概念的叙述之外,Samek博士提供了完整的源代码,包括完整的软件基础结构和用以执行裁剪自多线程嵌入式应用的状态图。灵活的、有效的、可移植的、可伸缩的以及可维护的轻量级量子框架允许快速、直接地从UML状态图以C或C++着手实时系统的工作。量子框架是完整的实时嵌入式实现环境——一个设计用以与任何RTOS一起工作的活动对象框架。它支持快速原型构作,可在开发的任何阶段容易地进行状态的转换,以及可选择实现语言(C或C++)以与目标系统的资源约束相匹配;它最大的好处是非常紧凑,整个QP代码典型地要求少于5 KB的代码和数据。这些都降低了实现抽象概念的困难程度,对希望了解层次式状态机能力的嵌入式软件工程师是非常必要的。关于本书的译名,为适合我国当前的具体情况,将其定为“嵌入式系统的微模块化程序设计”,而原作名应直译为“嵌入式系统的量子程序设计”;但量子程序设计并不为我国读者所熟悉,经与有关专家商议,确定使用现译名。而在正文中,由于作者多处将QP与量子力学概念进行比拟,为维持叙述的一致性,故在正文中仍使用“量子程序设计”一词,请读者加以注意。在本书的译出中,得到了电子科技大学“嵌入式实时系统研究中心”的大力支持,以及中心主任熊光择教授的关心和帮助;同时在北京航空航天大学出版社马广云老师的鼎力帮助下,本书才得以及时面世。我们在此均表示由衷的感谢。本书第1~6章由敬万钧翻译,第7~11章由陈丽蓉翻译。译者虽然尽心尽力,多次修改译稿,但疏忽欠妥之处定有,恳请业内同仁予以指正。

译者
2003.8
于成都

目录
第1部分 状态图
第1章 量子编程的快速浏览
1.1 终结钩子——GUI应用程序的剖析2
1.2 程序设计的更好办法——一个计算器的工作5
1.2.1 传统的事件动作范型的缺点5
1.2.2 计算器状态图7
1.2.3 同Windows集成11
1.2.4 状态处理器方法13
1.3 面向对象相似性15
1.3.1 状态层次和类分类学15
1.3.2 进入/退出状态和初始化/结束类16
1.3.3 按差异编程16
1.3.4 行为继承作为基本的元模式16
1.3.5 状态模式17
1.3.6 重构状态模型17
1.3.7 超越面向对象编程18
1.4 量子类比18
1.5 小结18

第2章 状态图速成
2.1 有限状态机的本质20
2.1.1 状态21
2.1.2 扩展状态21
2.1.3 监测器22
2.1.4 事件23
2.1.5 动作和转换23
2.1.6 Mealy和Moore自动机24
2.1.7 执行模型——RTC步24
2.1.8 状态转换图25
2.2 UML状态图的本质26
2.2.1 层次式状态26
2.2.2 行为继承28
2.2.3 正交区域29
2.2.4 进入和退出动作30
2.2.5 转换执行序列32
2.2.6 内部转换33
2.2.7 伪状态33
2.2.8 细化事件处理34
2.2.9 语义与表示法34
2.2.10 状态图和流程图35
2.2.11 状态图与自动代码综合36
2.3 状态模型的例子37
2.3.1 量子计算器37
2.3.2 氢原子41
2.4 小结44

第3章 标准状态机实现
3.1 状态机接口46
3.2 嵌套的switch语句48
3.3 状态表51
3.4 状态设计模式56
3.5 优化的FSM实现60
3.6 状态机和C++异常处理64
3.7 成员函数指针的作用65
3.8 实现监测器、接合和选择点66
3.9 实现进入和退出动作67
3.10 处理状态层次68
3.11 小结69

第4章 实现行为继承
4.1 结构71
4.1.1 事件74
4.1.2 状态76
4.1.3 进入/退出动作和初始转换77
4.1.4 状态转换79
4.1.5 top状态和初始伪状态80
4.2 一个注释性例子81
4.2.1 枚举信号和子类构作QHsm82
4.2.2 定义状态处理器方法83
4.2.3 初始化和分发事件86
4.2.4 测试运行87
4.3 试探和约定89
4.3.1 构建状态机代码89
4.3.2 选择正确的信号粒度91
4.3.3 UML一致的HSM91
4.4 事件处理器93
4.4.1 初始化状态机:init()方法93
4.4.2 分发事件:dispatch()方法95
4.4.3 静态和动态状态转换:宏Q_TRAN和Q_TRAN_DYN()96
4.4.4 动态状态转换:tran()方法97
4.4.5 静态状态转换:tranStat()方法和Tran类102
4.4.6 初始化QTran对象:tranSetup()方法104
4.5 C实现107
4.5.1 用“C+”的QHsm类107
4.5.2 QHsm构造函数与析构函数109
4.5.3 状态处理器方法和成员函数指针109
4.5.4 QHsm方法110
4.5.5 用C的状态图例子110
4.6 防止误解的说明113
4.7 小结115

第5章 状态模式
5.1 终结钩子118
5.1.1 目的118
5.1.2 问题118
5.1.3 解决办法118
5.1.4 样例代码119
5.1.5 结论121
5.2 提示法122
5.2.1 目标122
5.2.2 问题122
5.2.3 解决办法122
5.2.4 样例代码123
5.2.5 结论127
5.3 延迟事件128
5.3.1 目的128
5.3.2 问题128
5.3.3 解决办法128
5.3.4 样例代码130
5.3.5 结论133
5.4 正交构件133
5.4.1 目的133
5.4.2 问题133
5.4.3 解决办法134
5.4.4 样例代码135
5.4.5 结论141
5.5 转换到历史143
5.5.1 目的143
5.5.2 问题143
5.5.3 解决办法143
5.5.4 样例代码143
5.5.5 结论147
5.6 小结147

第6章 继承状态模型
6.1 用C++的状态图细化的例子149
6.2 用C的状态图细化举例157
6.2.1 为多态性准备C+状态机157
6.2.2 继承和细化C+状态机159
6.3 防止误解的说明160
6.3.1 静态与动态状态转换的比较161
6.3.2 多重继承161
6.3.3 继承和细化状态图的探索163
6.4 小结165

第2部分 量子框架
第7章 量子框架介绍
7.1 传统多线程方法170
7.1.1 就餐哲学家——传统方法171
7.1.2 Therac25的故事174
7.2 QF的计算模型175
7.2.1 基于活动对象的多线程176
7.2.2 量子类比177
7.2.3 出版订阅事件交付179
7.2.4 通用结构180
7.2.5 重访就餐哲学家问题180
7.3 QF的角色183
7.3.1 概念完整的源泉184
7.3.2 RTOS抽象层185
7.3.3 软件总线186
7.3.4 高度并行计算平台187
7.3.5 自动代码生成的基础188
7.4 小结189

第8章 量子框架的设计
8.1 嵌入式实时系统190
8.2 处理错误和异常条件192
8.2.1 按契约设计194
8.2.2 基于状态的异常条件处理197
8.3 内存管理198
8.3.1 堆问题199
8.3.2 QF中的内存管理201
8.4 互斥和阻塞203
8.4.1 互斥的危险203
8.4.2 基于活动对象的系统中的阻塞206
8.5 传送事件207
8.5.1 动态事件分配209
8.5.2 出版订阅模型212
8.5.3 组播事件217
8.5.4 自动事件回收219
8.6 活动对象220
8.6.1 内部状态机220
8.6.2 事件队列221
8.6.3 执行线程222
8.7 初始化和清除224
8.7.1 初始化框架224
8.7.2 启动QF应用225
8.7.3 优美地终结QF应用226
8.8 时间管理226
8.8.1 QTimer类227
8.8.2 时钟节拍, QF::tick()方法228
8.9 QF API快速参考229
8.9.1 QF接口229
8.9.2 QActive接口231
8.9.3 QTimer接口232
8.10 小结233

第9章 量子框架的实现
9.1 作为一个Parnas家族的QF235
9.2 代码组织236
9.2.1 目录结构238
9.2.2 公共范围头文件240
9.2.3 包范围头文件241
9.3 公共元素242
9.3.1 临界区242
9.3.2 事件池243
9.3.3 事件队列247
9.4 DOS:不具备多任务内核的QF253
9.4.1 前台/后台处理253
9.4.2 使用QF的前台/后台254
9.4.3 DOS特定的代码258
9.4.4 QF给前台/后台系统带来的益处260
9.5 Win32:桌面上的QF261
9.5.1 临界区、事件队列和执行线程261
9.5.2 时钟节拍264
9.6 RTKernel32:带有一个基于优先级的可抢占内核的QF266
9.6.1 临界区和事件池266
9.6.2 事件队列和执行线程269
9.6.3 RTKernel32的初始化和时钟节拍271
9.6.4 使用RTKernel32进行交叉开发272
9.7 小结273

第10章 量子框架应用实例
10.1 产生一个QF应用274
10.1.1 信号和事件275
10.1.2 Table活动对象277
10.1.3 Philosopher活动对象280
10.1.4 配置DPP282
10.1.5 注解283
10.2 开发QF应用的规则284
10.3 开发QF应用的启发286
10.4 划分事件队列和事件池的大小287
10.4.1 事件队列287
10.4.2 事件池290
10.5 系统集成290
10.6 小结291

第11章 结束语
11.1 QP的关键元素292
11.1.1 是一个设计类型,而不是工具293
11.1.2 是一个建模助手293
11.1.3 是一个学习上的助手294
11.1.4 是一个有用的隐喻295
11.2 QP的建议296
11.2.1 量子编程语言296
11.2.2 未来的RTOS297
11.2.3 硬件/软件协同设计297
11.3 一个邀请298

附录A C+——用C作面向对象编程
A.1 抽象301
A.2 继承303
A.3 多态性305
A.4 费用和额外开销312
A.5 小结313
附录B 表示法指南
B.1 类图315
B.2 状态图317
B.3 顺序图318
B.4 时序图318
附录C CDROM
C.1 源代码结构321
C.2 安装321
C.2.1 源代码321
C.2.2 OnTime RTOS32评估套件321
C.2.3 Adobe Acrobat Reader322
C.3 练习的答案322
C.4 资源323
参考文献324


相关图书
 ·嵌入式系统设计与实践
 ·ARM嵌入式系统实验教程(三)
 ·ARM嵌入式系统实验教程(三)
 ·2005年上海市高校学生嵌入式系统创新设计竞赛获奖作品论文集

版权所有:北京航空航天大学出版社 设计制作:易择科技
地址:北京市海淀区学院路37号北航出版社 邮编:100191
电 话:010-82317024 82317027  传 真:010-82328026  邮购传真:010-82316936
京ICP备05030743号