书籍详情
嵌入式系统的实时概念
作者:(美)李庆(Qing Li)著;王安生译;王安生译
出版社:北京航空航天大学出版社
出版时间:2004-06-01
ISBN:9787810773607
定价:¥32.00
购买这本书可以去
内容简介
嵌入式系统无所不在,并且在现代日常生活中扮演着重要的角色。嵌入式系统也是多样化的,在消费类电子产品中,如数码相机、DVD播放器和打印机;在工业机器人中;在先进的航空航天器中,如导弹制导系统和飞行控制系统;在医疗设备中,如强心剂无节律监视器和强心剂心律调整器;在汽车设计中,如燃料加注系统和自动刹闸系统,到处可以找到嵌入式系统。嵌入式系统深深地改变了我们今天的生活方式,也将继续改变我们明天的生活方式。嵌入式系统编程是一门特殊的学科,要求嵌入式系统的开发者具有多种技术领域的工作知识。这些领域覆盖从低层的硬件设备、编译技术和调试技术,到实时操作系统的内部工作和多线程应用设计。这些要求可以难倒新进入嵌入式世界的程序员,学习过程很长而且强度很大。这样,我感到有责任通过实践的讨论和演示,分享我的知识经验,使你跳过嵌入式系统项目的起始阶段。有些书用更传统的方法,主要集中在控制基本硬件设备的低层的驱动程序和软件上。另一些书提供使用面向对象的方法和建模语言的高层抽象方法。然而,本书架起了嵌入式系统开发的高层抽象建模概念和低层的基本编程方面的桥梁。贯穿本书的讨论来自于多年商业嵌入式系统的设计和实现、从先前的错误中学到的经验、从他人处获得的才智以及学术研究的结果。这些因素聚在一起,形成了非常有用的且可以在实时嵌入式项目中实际应用的洞察力、指导和建议。本书用详细的实例说明了实时嵌入式系统的关键概念,并提供了与设计问题和解决方案相关的工业化知识。本书提供了丰富的可立即用于嵌入式建造的模块集合,以便加快你的开发工作和提高生产效率。我希望当你开始着手开发时,《嵌入式系统的实时概念》一书能成为你的一本关键参考书。如果你希望通过E-mail得到消息的更新,请发E-mail到:rtconcepts@news.cmpbooks.com。如果对本书有建议、纠错或其他问题,请发E-mail到:qingli@speakeasy.net。
作者简介
Qing Li,现任Wind River系统公司高级体系结构师,具有4项嵌入式内核和网络协议设计领域的专利。他从事12年的工程,包括作为责任工程师设计和开发协议栈以及用于通信与网络领域的嵌入式应用的专家。Qing是Wind River嵌入式Ipv6产品的领头体系的体系结构师,而且活跃在多种Ipv6开创阶段的前沿。以前,Qing具有自己的公司,为通信工业开发软件。另外,他是4个成员的Silicon Valley发起者之一,并为安全工业的嵌入式生物学统计设备开发了具有专利的算法。Qing从University of Alberta in Edmonton,Alberta,Canada得到计算机科学的学士学位(bachelor of science);从Santa Clara University,Santa Clara,CA,USA的Distinction in Computer Engineering获得硕士学位(masters of science)。其工作集中在Advanced High Performance Computing上。Qing是Association for Computing Machinery的成员和IEEE Computer Society的成员。Caroline Yao,具有15年的技术和商业软件领域的经验和6年嵌入式市场的经验。她是产品开发、产品管理、产品市场、商业开发和战略联盟方面的专家,她也是一个专利的共同发明人和COUS专利(June 12,2001)“System and Method for Providing Cross0Development Application Design Tools and Services Via a Network”的持有人。Caroline从University of California Berkeley获得Bachelor of Arts in Statistics。
目录
第1章 引论
1.1 现实生活中的嵌入式系统实例2
1.1.1 家庭环境中的嵌入式系统2
1.1.2 工作环境中的嵌入式系统3
1.1.3 娱乐活动中的嵌入式系统3
1.1.4 定义嵌入式系统5
1.1.5 嵌入式处理器和应用意识5
1.1.6 硬件和软件协同设计模型7
1.1.7 交叉平台开发7
1.1.8 软件存储和升级性8
1.2 实时嵌入式系统9
1.2.1 实时系统10
1.2.2 实时系统的特性12
1.2.3 硬和软实时系统13
1.3 嵌入式系统的未来15
1.4 记住的要点15
第2章 开发嵌入式系统的基础
2.1 引言 16
2.2 链接器和链接过程概貌17
2.3 可执行和链接格式20
2.4 可执行映像映射到目标机嵌入式系统23
2.4.1 链接器命令文件24
2.4.2 映射可执行映像27
2.4.3 实践中的例子28
2.5 记住的要点30
第3章 嵌入式系统初始化
3.1 引言31
3.2 目标机系统工具和映像传输32
3.2.1 嵌入式装载器33
3.2.2 嵌入式监视器34
3.2.3 目标机调试代理35
3.3 目标机自举案况35
3.3.1 数据用RAM从ROM执行37
3.3.2 映像从ROM传输后从RAM上执行39
3.3.3 从宿主机传输映像后从RAM上执行40
3.4 目标机系统软件初始化顺序42
3.4.1 硬件初始化43
3.4.2 RTOS 初始化44
3.4.3 应用软件初始化45
3.5 片上调试45
3.6 记住的要点46
第4章 实时操作系统介绍
4.1 引言47
4.2 操作系统的简要历史48
4.3 定义RTOS49
4.4 调度器50
4.4.1 可调度实体50
4.4.2 多任务51
4.4.3 上下文切换51
4.4.4 分发器52
4.4.5 调度算法52
4.5 对象54
4.6 服务54
4.7 RTOS的关键特性55
4.7.1 可靠性55
4.7.2 可预测性56
4.7.3 性能56
4.7.4 紧凑性56
4.7.5 可剪裁性57
4.8 记住的要点57
第5章 任务
5.1 引言58
5.2 定义一个任务59
5.3 任务状态和调度60
5.3.1 就绪状态62
5.3.2 运行状态64
5.3.3 阻塞状态64
5.4 典型的任务操作65
5.4.1 任务创立和删除65
5.4.2 任务调度66
5.4.3 获得任务信息68
5.5 典型的任务结构68
5.5.1 运行到完成的任务68
5.5.2 无限循环任务69
5.6 同步、通信和并发69
5.7 记住的要点70
第6章 信号灯
6.1 引言71
6.2 定义信号灯71
6.2.1 二值信号灯72
6.2.2 计数信号灯73
6.2.3 互相排斥(互斥)信号灯74
6.3 典型的信号灯操作76
6.3.1 创立和删除信号灯76
6.3.2 获取和释放信号灯77
6.3.3 清除信号灯的任务等待列表78
6.3.4 获取信号灯信息78
6.4 典型的信号灯使用79
6.4.1 等待和信号同步79
6.4.2 多任务等待和信号同步80
6.4.3 信用跟踪同步81
6.4.4 单一共享资源访问同步82
6.4.5 递归共享资源访问同步84
6.4.6 多个共享资源访问同步85
6.5 记住的要点87
第7章 消息队列
7.1 引言88
7.2 定义消息队列89
7.3 消息队列状态90
7.4 消息队列内容91
7.5 消息队列存储92
7.5.1 系统池92
7.5.2 私有缓冲区92
7.6 典型的消息队列操作92
7.6.1 创立和删除消息队列92
7.6.2 发送和接收消息93
7.6.3 获得消息队列信息96
7.7 典型的消息队列使用96
7.7.1 非互锁的单向数据通信96
7.7.2 互锁的单向数据通信97
7.7.3 互锁的双向数据通信99
7.7.4 广播通信100
7.8 记住的要点101
第8章 其他内核对象
8.1 引言102
8.2 管道102
8.2.1 管道控制块103
8.2.2 管道状态104
8.2.3 命名和无名管道105
8.2.4 典型的管道操作105
8.2.5 典型的管道使用108
8.3 事件寄存器108
8.3.1 事件寄存器控制块109
8.3.2 典型的事件寄存器操作110
8.3.3 典型的事件寄存器使用111
8.4 信号112
8.4.1 信号控制块113
8.4.2 典型的信号操作114
8.4.3 典型的信号用法115
8.5 条件变量116
8.5.1 条件变量控制块117
8.5.2 典型的条件变量操作118
8.5.3 条件变量的典型使用118
8.6 记住的要点120
第9章 其他RTOS服务
9.1 引言121
9.2 其他建造块122
9.2.1 TCP/IP 协议栈123
9.2.2 文件系统部件123
9.2.3 远程过程调用部件124
9.2.4 命令壳 125
9.2.5 目标机调试代理器126
9.2.6 其他部件126
9.3 部件配置127
9.4 记住的要点128
第10章 异常和中断
10.1 引言129
10.2 什么是异常和中断130
10.3 异常和中断的应用131
10.3.1 内部错误和特殊条件的管理131
10.3.2 硬件并发与服务请求管理132
10.4 近距离看异常和中断132
10.4.1 可编程中断控制器和外部中断132
10.4.2 一般异常的分类134
10.4.3 一般异常的优先权135
10.5 处理一般的异常 136
10.5.1 安装异常处理程序137
10.5.2 保存处理器状态137
10.5.3 装入和调用异常处理程序139
10.5.4 嵌套异常和栈溢出140
10.5.5 异常处理程序142
10.6 虚假中断的特性147
10.7 记住的要点148
第11章 计时器和计时器服务
11.1 引言149
11.2 实时时钟与系统时钟150
11.3 可编程间隔计时器151
11.4 计时器中断服务例程152
11.5 实现软计时器功能的模型154
11.5.1 可能的处理延迟156
11.5.2 实现考虑157
116 时间车轮158
11.6.1 议题160
11.6.2 分层的时间车轮161
11.7 软计时器和与软计时器相关的操作163
11.8 记住的要点165
第12章 I/O子系统
12.1 引言166
12.2 基本I/O 概念167
12.2.1 端口映射与内存映射I/O和DMA167
12.2.2 字符模式与块模式设备170
12.3 I/O 子系统介绍171
12.3.1 标准I/O 函数172
12.3.2 映射通用函数到驱动程序函数173
12.3.3 设备与设备驱动程序的关联175
12.4 记住的要点176
第13章 内存管理
13.1 引言177
13.2 嵌入式系统中的动态内存分配178
13.2.1 内存碎片和紧凑178
13.2.2 malloc和 free的一个例子180
13.2.3 快速发现空闲块182
13.2.4 free 操作183
13.3 嵌入式系统中固定尺寸的内存管理185
13.4 阻塞与非阻塞的内存函数186
13.5 硬件内存管理单元188
13.6 记住的要点188
第14章 用并发将应用模块化
14.1 引言189
14.2 由表及里分解应用的方法190
14.3 标识并发的指导原则和建议192
14.3.1 并发单元192
14.3.2 伪与真并发执行193
14.3.3 某些指导原则194
14.4 可调度性分析和速率单调性分析200
14.4.1 基本RMA 可调度性测试200
14.4.2 扩展的RMA可调度性测试201
14.5 记住的要点203
第15章 同步和通信
15.1 引言204
15.2 同步204
15.2.1 资源同步205
15.2.2 活动同步206
15.2.3 屏障的实现208
15.3 通信209
15.4 资源同步方法211
15.4.1 中断锁211
15.4.2 抢占锁211
15.5 关键段落的重访问212
15.6 普遍的实践设计模式213
15.6.1 同步活动的同步213
15.6.2 使用信号进行异步事件通告216
15.6.3 资源同步216
15.7 特殊解决方案的设计模式218
15.7.1 带流程控制的数据传输218
15.7.2 来自于多个数据通信信道的异步数据接收219
15.7.3 多个输入通信信道221
15.7.4 使用条件变量同步读者和写者223
15.7.5 在任务之间发送高优先权数据225
15.7.6 用条件变量实现读者写者锁226
15.8 记住的要点228
第16章 普遍的设计问题
16.1 引言229
16.2 资源分类230
16.3 死锁230
16.3.1 资源请求模型232
16.3.2 死锁检测233
16.3.3 死锁恢复238
16.3.4 死锁避免240
16.3.5 死锁预防241
16.4 优先权倒置242
16.4.1 优先权继承协议244
16.4.2 天花板优先权协议246
16.4.3 优先权天花板协议247
16.5 记住的要点248
1.1 现实生活中的嵌入式系统实例2
1.1.1 家庭环境中的嵌入式系统2
1.1.2 工作环境中的嵌入式系统3
1.1.3 娱乐活动中的嵌入式系统3
1.1.4 定义嵌入式系统5
1.1.5 嵌入式处理器和应用意识5
1.1.6 硬件和软件协同设计模型7
1.1.7 交叉平台开发7
1.1.8 软件存储和升级性8
1.2 实时嵌入式系统9
1.2.1 实时系统10
1.2.2 实时系统的特性12
1.2.3 硬和软实时系统13
1.3 嵌入式系统的未来15
1.4 记住的要点15
第2章 开发嵌入式系统的基础
2.1 引言 16
2.2 链接器和链接过程概貌17
2.3 可执行和链接格式20
2.4 可执行映像映射到目标机嵌入式系统23
2.4.1 链接器命令文件24
2.4.2 映射可执行映像27
2.4.3 实践中的例子28
2.5 记住的要点30
第3章 嵌入式系统初始化
3.1 引言31
3.2 目标机系统工具和映像传输32
3.2.1 嵌入式装载器33
3.2.2 嵌入式监视器34
3.2.3 目标机调试代理35
3.3 目标机自举案况35
3.3.1 数据用RAM从ROM执行37
3.3.2 映像从ROM传输后从RAM上执行39
3.3.3 从宿主机传输映像后从RAM上执行40
3.4 目标机系统软件初始化顺序42
3.4.1 硬件初始化43
3.4.2 RTOS 初始化44
3.4.3 应用软件初始化45
3.5 片上调试45
3.6 记住的要点46
第4章 实时操作系统介绍
4.1 引言47
4.2 操作系统的简要历史48
4.3 定义RTOS49
4.4 调度器50
4.4.1 可调度实体50
4.4.2 多任务51
4.4.3 上下文切换51
4.4.4 分发器52
4.4.5 调度算法52
4.5 对象54
4.6 服务54
4.7 RTOS的关键特性55
4.7.1 可靠性55
4.7.2 可预测性56
4.7.3 性能56
4.7.4 紧凑性56
4.7.5 可剪裁性57
4.8 记住的要点57
第5章 任务
5.1 引言58
5.2 定义一个任务59
5.3 任务状态和调度60
5.3.1 就绪状态62
5.3.2 运行状态64
5.3.3 阻塞状态64
5.4 典型的任务操作65
5.4.1 任务创立和删除65
5.4.2 任务调度66
5.4.3 获得任务信息68
5.5 典型的任务结构68
5.5.1 运行到完成的任务68
5.5.2 无限循环任务69
5.6 同步、通信和并发69
5.7 记住的要点70
第6章 信号灯
6.1 引言71
6.2 定义信号灯71
6.2.1 二值信号灯72
6.2.2 计数信号灯73
6.2.3 互相排斥(互斥)信号灯74
6.3 典型的信号灯操作76
6.3.1 创立和删除信号灯76
6.3.2 获取和释放信号灯77
6.3.3 清除信号灯的任务等待列表78
6.3.4 获取信号灯信息78
6.4 典型的信号灯使用79
6.4.1 等待和信号同步79
6.4.2 多任务等待和信号同步80
6.4.3 信用跟踪同步81
6.4.4 单一共享资源访问同步82
6.4.5 递归共享资源访问同步84
6.4.6 多个共享资源访问同步85
6.5 记住的要点87
第7章 消息队列
7.1 引言88
7.2 定义消息队列89
7.3 消息队列状态90
7.4 消息队列内容91
7.5 消息队列存储92
7.5.1 系统池92
7.5.2 私有缓冲区92
7.6 典型的消息队列操作92
7.6.1 创立和删除消息队列92
7.6.2 发送和接收消息93
7.6.3 获得消息队列信息96
7.7 典型的消息队列使用96
7.7.1 非互锁的单向数据通信96
7.7.2 互锁的单向数据通信97
7.7.3 互锁的双向数据通信99
7.7.4 广播通信100
7.8 记住的要点101
第8章 其他内核对象
8.1 引言102
8.2 管道102
8.2.1 管道控制块103
8.2.2 管道状态104
8.2.3 命名和无名管道105
8.2.4 典型的管道操作105
8.2.5 典型的管道使用108
8.3 事件寄存器108
8.3.1 事件寄存器控制块109
8.3.2 典型的事件寄存器操作110
8.3.3 典型的事件寄存器使用111
8.4 信号112
8.4.1 信号控制块113
8.4.2 典型的信号操作114
8.4.3 典型的信号用法115
8.5 条件变量116
8.5.1 条件变量控制块117
8.5.2 典型的条件变量操作118
8.5.3 条件变量的典型使用118
8.6 记住的要点120
第9章 其他RTOS服务
9.1 引言121
9.2 其他建造块122
9.2.1 TCP/IP 协议栈123
9.2.2 文件系统部件123
9.2.3 远程过程调用部件124
9.2.4 命令壳 125
9.2.5 目标机调试代理器126
9.2.6 其他部件126
9.3 部件配置127
9.4 记住的要点128
第10章 异常和中断
10.1 引言129
10.2 什么是异常和中断130
10.3 异常和中断的应用131
10.3.1 内部错误和特殊条件的管理131
10.3.2 硬件并发与服务请求管理132
10.4 近距离看异常和中断132
10.4.1 可编程中断控制器和外部中断132
10.4.2 一般异常的分类134
10.4.3 一般异常的优先权135
10.5 处理一般的异常 136
10.5.1 安装异常处理程序137
10.5.2 保存处理器状态137
10.5.3 装入和调用异常处理程序139
10.5.4 嵌套异常和栈溢出140
10.5.5 异常处理程序142
10.6 虚假中断的特性147
10.7 记住的要点148
第11章 计时器和计时器服务
11.1 引言149
11.2 实时时钟与系统时钟150
11.3 可编程间隔计时器151
11.4 计时器中断服务例程152
11.5 实现软计时器功能的模型154
11.5.1 可能的处理延迟156
11.5.2 实现考虑157
116 时间车轮158
11.6.1 议题160
11.6.2 分层的时间车轮161
11.7 软计时器和与软计时器相关的操作163
11.8 记住的要点165
第12章 I/O子系统
12.1 引言166
12.2 基本I/O 概念167
12.2.1 端口映射与内存映射I/O和DMA167
12.2.2 字符模式与块模式设备170
12.3 I/O 子系统介绍171
12.3.1 标准I/O 函数172
12.3.2 映射通用函数到驱动程序函数173
12.3.3 设备与设备驱动程序的关联175
12.4 记住的要点176
第13章 内存管理
13.1 引言177
13.2 嵌入式系统中的动态内存分配178
13.2.1 内存碎片和紧凑178
13.2.2 malloc和 free的一个例子180
13.2.3 快速发现空闲块182
13.2.4 free 操作183
13.3 嵌入式系统中固定尺寸的内存管理185
13.4 阻塞与非阻塞的内存函数186
13.5 硬件内存管理单元188
13.6 记住的要点188
第14章 用并发将应用模块化
14.1 引言189
14.2 由表及里分解应用的方法190
14.3 标识并发的指导原则和建议192
14.3.1 并发单元192
14.3.2 伪与真并发执行193
14.3.3 某些指导原则194
14.4 可调度性分析和速率单调性分析200
14.4.1 基本RMA 可调度性测试200
14.4.2 扩展的RMA可调度性测试201
14.5 记住的要点203
第15章 同步和通信
15.1 引言204
15.2 同步204
15.2.1 资源同步205
15.2.2 活动同步206
15.2.3 屏障的实现208
15.3 通信209
15.4 资源同步方法211
15.4.1 中断锁211
15.4.2 抢占锁211
15.5 关键段落的重访问212
15.6 普遍的实践设计模式213
15.6.1 同步活动的同步213
15.6.2 使用信号进行异步事件通告216
15.6.3 资源同步216
15.7 特殊解决方案的设计模式218
15.7.1 带流程控制的数据传输218
15.7.2 来自于多个数据通信信道的异步数据接收219
15.7.3 多个输入通信信道221
15.7.4 使用条件变量同步读者和写者223
15.7.5 在任务之间发送高优先权数据225
15.7.6 用条件变量实现读者写者锁226
15.8 记住的要点228
第16章 普遍的设计问题
16.1 引言229
16.2 资源分类230
16.3 死锁230
16.3.1 资源请求模型232
16.3.2 死锁检测233
16.3.3 死锁恢复238
16.3.4 死锁避免240
16.3.5 死锁预防241
16.4 优先权倒置242
16.4.1 优先权继承协议244
16.4.2 天花板优先权协议246
16.4.3 优先权天花板协议247
16.5 记住的要点248
猜您喜欢