《嵌入式实时操作系统的多线程计算 基于ThreadX和ARM using threadX and ARM》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)Edward L. Lamie著;张炯等译
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2005
  • ISBN:7810776290
  • 页数:328 页
图书介绍:本书涉及到嵌入式系统的两个热门话题:实时和ARM体系结构,并做了深入浅出的讲解与分析。重点放在实时、多线程、ARM处理器结合的角度来展开。

第1章 嵌入式实时操作系统 1

1.1 介绍 1

1.2 何谓嵌入式系统 1

1.3 嵌入式系统的特征 2

1.4 实时系统 2

1.5 实时操作系统和实时内核 2

1.6 进程、任务和线程 3

1.7 实时系统的系统结构 4

1.8 嵌入式系统的开发 5

1.9 关键词和术语 5

第2章 初步了解使用RTOS的系统 7

2.1 操作环境 7

2.2 ThreadX演示系统的安装 7

2.3 包含两个线程的演示系统 7

2.4 创建线程对象 9

2.5 编译并执行示例系统 11

2.6 系统和输出结果的分析 11

2.7 02_sample_system.c代码清单 12

2.8 关键词和术语 17

2.9 问题 18

第3章 RTOS概念和定义 19

3.1 介绍 19

3.2 优先级 19

3.3 就绪线程和挂起线程 20

3.4 占先,基于优先级的调度 21

3.5 轮转调度 21

3.6 确定性 22

3.7 内核 22

3.8 RTOS 22

3.9 上下文切换 23

3.10 时间片轮转 23

3.11 中断处理 23

3.12 线程饥饿 23

3.13 优先级翻转 24

3.14 优先级继承 24

3.15 抢占阀值 25

3.16 关键词和术语 25

3.17 问题 26

第4章 用于系统开发的基本RTOS组件 27

4.1 介绍 27

4.2 定义公共资源 27

4.3 ThreadX数据类型 28

4.4 线程 28

4.5 内存池 29

4.6 应用定时器 31

4.7 互斥量 31

4.8 计数信号量 32

4.9 事件标志组 33

4.10 消息队列 33

4.11 线程同步和通信组件总结 34

4.12 关键词和术语 35

4.13 问题 36

第5章 ARM微处理器简介 37

5.1 介绍 37

5.2 历史 37

5.3 技术特征 38

5.3.1 兼容片上系统 38

5.3.2 低功耗 39

5.3.3 改进的代码密度 39

5.3.4 多样化的寄存器 39

5.3.5 CPSR的定义 41

5.3.6 处理器模式 42

5.4 ARM对节能的支持 43

5.5 关键词和术语 43

第6章 线程 45

6.1 介绍 45

6.2 线程控制块 45

6.3 线程调用综述 46

6.4 创建线程 47

6.5 删除线程 52

6.6 识别线程 53

6.7 获取线程信息 53

6.8 改变抢占门限 54

6.9 改变优先级 54

6.10 放弃执行 55

6.11 恢复线程执行 55

6.12 线程睡眠 55

6.13 挂起线程 56

6.14 中止线程 56

6.15 改变时间片 56

6.16 中止线程等待 57

6.17 线程执行综述 57

6.18 线程状态 58

6.19 线程设计 59

6.19.1 最小化线程的数量 60

6.19.2 谨慎设置优先级 60

6.19.3 最小化优先级的数目 60

6.19.4 考虑使用抢占门限 60

6.19.5 考虑优先级继承 61

6.19.6 考虑轮转调度方式 61

6.19.7 考虑时间片 61

6.20 线程内部结构 61

6.21 总结 62

6.22 关键词和术语 63

6.23 问题 64

第7章 互斥量 66

7.1 介绍 66

7.2 保护临界区 66

7.3 提供对共享资源的互斥访问 67

7.4 互斥量控制块 67

7.5 互斥量服务综述 68

7.6 创建一个互斥量 68

7.7 删除一个互斥量 69

7.8 申请互斥量 69

7.9 获取互斥量信息 70

7.10 按优先级调整挂起队列 71

7.11 释放一个信号量 71

7.12 避免死锁 72

7.13 用互斥量保护临界区的示例程序 73

7.14 示例程序的输出 78

7.15 07_sample_system.c代码清单 80

7.16 互斥量内部结构 85

7.17 总结 86

7.18 关键词和术语 86

7.19 问题 87

第8章 内存管理:字节池和块池 88

8.1 介绍 88

8.2 内存字节池概述 88

8.3 内存字节池控制块 89

8.4 内存字节池的缺陷 90

8.5 内存字节池服务概述 91

8.6 创建内存字节池 91

8.7 从内存字节池中分配内存 92

8.8 删除内存字节池 92

8.9 获取内存字节池信息 93

8.10 优先排列内存字节池挂起列表 93

8.11 释放内存到内存字节池 94

8.12 内存字节池例程——分配线程堆栈 94

8.13 内存字节池内部机制 95

8.14 内存块池概述 97

8.15 内存块池控制块 98

8.16 内存块池服务概述 98

8.17 创建内存块池 99

8.18 从内存块池中分配内存 100

8.19 删除内存块池 100

8.20 获取内存块池信息 101

8.21 优先排列内存块池挂起列表 102

8.22 释放内存块 102

8.23 内存块池例程——分配线程堆栈 103

8.24 内存块池内部机制 104

8.25 总结和对比 104

8.26 关键词和术语 105

8.27 问题 105

第9章 内部系统时钟和应用定时器 107

9.1 介绍 107

9.2 内部系统时钟服务 108

9.3 应用定时器控制块 109

9.4 应用定时器服务概述 110

9.5 创建应用定时器 110

9.6 启动应用定时器 111

9.7 修改应用定时器 112

9.8 停止应用定时器 112

9.9 删除应用定时器 113

9.10 获取应用定时器信息 113

9.11 使用定时器测量线程性能的例程 114

9.12 09_sample_system.c代码清单 117

9.13 应用定时器内部机制 123

9.14 总结 124

9.15 关键词和术语 124

9.16 问题 125

第10章 事件通知和利用信号量同步线程 127

10.1 介绍 127

10.2 计数信号量控制块 128

10.3 避免死锁 129

10.4 防止优先级倒置 129

10.5 信号量服务综述 129

10.6 创建一个信号量 129

10.7 删除一个信号量 130

10.8 从信号量申请一个实例 131

10.9 获取信号量的信息 131

10.10 按优先级调整信号量的挂起队列 132

10.11 向信号量放入一个实例 132

10.12 对比信号量和互斥量 133

10.13 使用二进制信号量代替互斥量的示例程序 134

10.14 10a_sample_system.c代码清单 135

10.15 在生产者—消费者程序中使用信号量的例子 142

10.16 10b_sample_system.c代码清单 144

10.17 信号量内部结构 150

10.18 总结 151

10.19 关键词和术语 151

10.20 问题 152

第11章 用事件标志组同步线程 153

11.1 介绍 153

11.2 事件标志组控制块 154

11.3 事件标志组服务综述 155

11.4 创建一个组 155

11.5 删除一个组 156

11.6 等待组中的标志被置位 156

11.7 获取组的信息 159

11.8 设置组中的事件标志 159

11.9 使用事件标志组同步两个线程的示例系统 161

11.10 11_sample_system.c代码清单 164

11.11 事件标志组内部结构 170

11.12 总结 171

11.13 关键词和术语 171

11.14 问题 172

第12章 使用消息队列进行线程通信 173

12.1 介绍 173

12.2 消息队列控制块 174

12.3 消息队列服务函数的概要 175

12.4 创建消息队列 176

12.5 向消息队列发送消息 176

12.6 从消息队列中获取消息 177

12.7 删除消息队列 178

12.8 清除消息队列中的内容 178

12.9 向消息队列头发送消息 179

12.10 检索消息队列信息 179

12.11 将消息队列挂起列表以优先顺序排列 180

12.12 使用消息队列作为线程间通信的示例系统 181

12.13 12_sample_system.c代码清单 184

12.14 消息队列的内部 190

12.15 总结 191

12.16 关键词和术语 192

12.17 问题 192

第13章 ARM异常处理 193

13.1 介绍 193

13.2 ThreadX对ARM异常处理的实现 194

13.2.1 复位向量的初始化 194

13.2.2 线程的调度 196

13.2.3 ThreadX中断处理 199

13.2.4 内部中断处理 201

13.3 关键词和术语 203

第14章 案例分析:设计一个多线程系统 204

14.1 介绍 204

14.2 问题的描述 205

14.3 问题的分析 207

14.4 系统的设计 209

14.4.1 线程设计 209

14.4.2 公共资源设计 210

14.5 实现 213

14.6 VAM System代码清单 226

14.7 总结 237

附录 239

附录A 内存块池服务 241

附录B 内存字节池服务 249

附录C 事件标志组服务 257

附录D 中断控制服务 265

附录E 互斥量服务 267

附录F 消息队列服务函数 275

附录G 信号量服务 287

附录H 线程服务 295

附录I 内部系统时钟服务 313

附录J 应用定时器服务 315

附录K ThreadX API 323