书籍详情
嵌入式实时操作系统原理与最佳实践
作者:刘旭明 著
出版社:机械工业出版社
出版时间:2014-09-01
ISBN:9787111476078
定价:¥69.00
购买这本书可以去
内容简介
本书系统地介绍了嵌入式操作系统内核的原理、设计和实现。首先通过大量图表详细介绍了嵌入式操作系统的基本概念和原理。然后通过对各个内核功能的分析、设计和实现来加深读者对相关知识的理解。最后通过实际的应用程序来演示如何使用这些功能。从原理、设计、实现和使用的角度来阐明嵌入式操作系统的功能。本书可以作为高校本科生或非计算机专业的研究生嵌入式操作系统的教材,也可作为从事嵌入式系统开发工作的研究生、科研人员和企业开发人员的参考用书。
作者简介
暂缺《嵌入式实时操作系统原理与最佳实践》作者简介
目录
前言
第1章 嵌入式操作系统基础 1
1.1 嵌入式软件系统结构 1
1.1.1 轮询系统 1
1.1.2 前后台系统 1
1.1.3 多任务系统 2
1.2 多任务机制概述 3
1.2.1 时钟节拍 3
1.2.2 多任务机制 4
1.2.3 任务上下文 5
1.2.4 任务切换 5
1.2.5 任务的时间片和优先级 7
1.2.6 任务调度和调度方式 8
1.2.7 任务调度算法 9
1.2.8 任务状态 12
1.3 同步、互斥和通信 12
1.3.1 任务等待和唤醒机制 13
1.3.2 任务互斥和优先级反转 14
1.3.3 优先级天花板和优先级继承 15
1.4 中断机制 17
1.4.1 中断流程概述 18
1.4.2 中断优先级 19
1.4.3 中断嵌套 19
1.4.4 中断时序 20
1.5 Trochili RTOS介绍 22
第2章 线程管理与调度 23
2.1 线程结构设计 23
2.1.1 线程的结构设计 23
2.1.2 线程的状态 25
2.1.3 线程优先级 27
2.1.4 线程时间片 28
2.1.5 线程栈管理 28
2.1.6 线程函数和线程数据 29
2.2 线程队列设计 29
2.3 线程调度机制设计 32
2.3.1 线程调度模型 32
2.3.2 线程调度算法 33
2.3.3 线程调度步骤 33
2.4 线程管理和调度实现 34
2.4.1 线程初始化 35
2.4.2 线程激活 35
2.4.3 线程休眠 37
2.4.4 线程挂起 40
2.4.5 线程解挂 42
2.4.6 线程延时 44
2.4.7 线程延时取消 46
2.4.8 线程主动调度 48
2.4.9 线程优先级设定 50
2.4.10 线程时间片修改 58
2.5 系统守护线程 58
2.6 线程应用演示 59
2.6.1 线程激活和休眠演示 59
2.6.2 线程挂起和解挂演示 62
2.6.3 线程延时演示 65
2.6.4 线程主动调度演示 67
2.6.5 线程优先级修改演示 70
2.6.6 线程时间片修改演示 73
第3章 线程同步和通信 77
3.1 线程阻塞队列 77
3.2 线程阻塞记录 78
3.3 IPC机制底层支撑函数 79
3.3.1 线程阻塞队列初始化 80
3.3.2 保存线程阻塞信息 80
3.3.3 清除线程阻塞信息 80
3.3.4 读取线程阻塞结果 80
3.3.5 线程阻塞过程 80
3.3.6 解除线程阻塞过程 81
3.3.7 解除最佳线程阻塞过程 81
3.3.8 解除全部线程阻塞过程 81
3.3.9 强制解除线程阻塞 81
3.3.10 休眠被阻塞的线程 81
3.3.11 设置被阻塞线程的优先级 82
第4章 信号量设计与实现 83
4.1 信号量的基本知识 83
4.1.1 二值信号量的概念 83
4.1.2 计数信号量的概念 84
4.1.3 信号量的操作 85
4.1.4 信号量的应用 86
4.2 信号量设计实现 90
4.2.1 信号量的初始化 92
4.2.2 信号量的取消初始化 92
4.2.3 信号量的获取 93
4.2.4 信号量的释放 98
4.2.5 终止线程阻塞 103
4.2.6 信号量刷新 104
4.3 信号量应用演示 104
4.3.1 线程间的信号量单向同步 105
4.3.2 线程间的信号双向同步 107
4.3.3 线程和ISR的信号同步 110
4.3.4 线程间的资源共享 113
4.3.5 多线程的信号同步 116
4.3.6 强制解除线程阻塞 120
4.3.7 信号量取消初始化 123
第5章 互斥量设计实现 126
5.1 互斥量基础知识 126
5.1.1 互斥量的概念 126
5.1.2 互斥量的操作 127
5.1.3 互斥量的应用 128
5.2 互斥量设计实现 129
5.2.1 互斥量的初始化 130
5.2.2 互斥量取消初始化 130
5.2.3 互斥量的加锁 131
5.2.4 互斥量的释放 134
5.2.5 终止线程阻塞 137
5.2.6 互斥量刷新 137
5.3 互斥量应用演示 139
5.3.1 线程间的资源共享 139
5.3.2 强制解除线程阻塞 142
5.3.3 互斥量刷新 144
5.3.4 互斥量取消初始化 147
第6章 邮箱设计实现 151
6.1 邮箱基础知识 151
6.1.1 邮箱的概念 151
6.1.2 邮箱的操作 153
6.1.3 邮箱的典型应用 153
6.2 邮箱功能设计 156
6.2.1 邮箱的初始化 158
6.2.2 邮箱的取消初始化 158
6.2.3 接收邮件 159
6.2.4 发送邮件 163
6.2.5 终止线程阻塞 168
6.2.6 邮箱刷新 168
6.2.7 邮箱广播 169
6.3 邮箱应用演示 170
6.3.1 线程间的异步数据传输 170
6.3.2 线程和ISR间的异步数据传输 173
6.3.3 线程间的单向同步数据传输 176
6.3.4 线程间的双向同步数据传输 179
6.3.5 多线程同步与邮箱刷新 183
6.3.6 多线程同步与邮箱广播 188
6.3.7 强制解除线程阻塞 192
6.3.8 邮箱取消初始化 195
第7章 消息队列设计与实现 199
7.1 消息队列基础 199
7.1.1 消息队列的概念 199
7.1.2 消息队列的操作 201
7.1.3 消息队列的典型应用 203
7.2 消息队列功能设计 207
7.2.1 消息队列初始化 209
7.2.2 消息队列取消初始化 209
7.2.3 消息接收 210
7.2.4 消息发送 215
7.2.5 消息广播 220
7.2.6 线程阻塞解除 221
7.2.7 消息队列刷新 221
7.3 消息队列应用演示 223
7.3.1 线程间的异步数据传输 223
7.3.2 线程和ISR间的异步数据传输 226
7.3.3 线程间的单向同步数据传输 229
7.3.4 线程间的双向同步数据传输 232
7.3.5 多线程同步与消息队列刷新 236
7.3.6 多线程同步与消息队列广播 240
7.3.7 线程阻塞解除 244
7.3.8 消息队列取消初始化 248
第8章 事件标记设计实现 253
8.1 事件标记基础知识 253
8.1.1 事件标记的概念 253
8.1.2 事件标记的操作 254
8.1.3 事件标记的典型应用 255
8.2 事件标记功能设计 256
8.2.1 事件标记的初始化 257
8.2.2 事件标记的重置 257
8.2.3 接收事件 258
8.2.4 发送事件 260
8.2.5 终止线程阻塞 263
8.2.6 事件标记刷新 264
8.3 事件标记应用演示 265
8.3.1 线程间的同步 265
8.3.2 线程和ISR间的同步 269
8.3.3 多线程同步与事件标记刷新 272
8.3.4 强制解除线程阻塞 276
8.3.5 事件标记重置 279
第9章 时间管理 283
9.1 定时器机制概述 283
9.1.1 简单计数方案 283
9.1.2 差分计时队列方案 284
9.1.3 时间车轮方案 284
9.1.4 定时时间漂移 286
9.1.5 定时器精度 286
9.2 软件定时器功能设计 286
9.2.1 软件定时器结构 287
9.2.2 软件定时器状态 288
9.2.3 软件定时器队列 289
9.2.4 软件定时器功能 290
9.3 软件定时器使用演示 296
第10章 内核移植 299
10.1 处理器介绍 299
10.1.1 STM32的地址映射 300
10.1.2 STM32的时钟系统 301
10.1.3 STM32的中断和异常 303
10.1.4 时钟节拍定时器 307
10.1.5 处理器启动 309
10.2 内核移植 311
10.2.1 内核功能剪裁 311
10.2.2 内核移植实现 313
10.2.3 线程栈初始化函数 314
10.2.4 PendSV中断管理函数 315
10.2.5 临界区管理函数 317
10.2.6 内核多任务启动函数 317
10.2.7 线程优先级计算函数 317
10.2.8 内核与处理器接口函数 317
10.2.9 内核启动流程 317
10.3 评估板介绍 321
10.3.1 LED驱动开发 323
10.3.2 外部按键驱动开发 325
10.3.3 串口驱动开发 328
第11章 以太网实践 331
11.1 以太网和以太网协议栈 331
11.2 MCU接入以太网的方式 332
11.3 以太网控制器和驱动开发 333
11.4 基于RTOS的Web实验 341
11.4.1 例程分析 341
11.4.2 实验现象 344
第1章 嵌入式操作系统基础 1
1.1 嵌入式软件系统结构 1
1.1.1 轮询系统 1
1.1.2 前后台系统 1
1.1.3 多任务系统 2
1.2 多任务机制概述 3
1.2.1 时钟节拍 3
1.2.2 多任务机制 4
1.2.3 任务上下文 5
1.2.4 任务切换 5
1.2.5 任务的时间片和优先级 7
1.2.6 任务调度和调度方式 8
1.2.7 任务调度算法 9
1.2.8 任务状态 12
1.3 同步、互斥和通信 12
1.3.1 任务等待和唤醒机制 13
1.3.2 任务互斥和优先级反转 14
1.3.3 优先级天花板和优先级继承 15
1.4 中断机制 17
1.4.1 中断流程概述 18
1.4.2 中断优先级 19
1.4.3 中断嵌套 19
1.4.4 中断时序 20
1.5 Trochili RTOS介绍 22
第2章 线程管理与调度 23
2.1 线程结构设计 23
2.1.1 线程的结构设计 23
2.1.2 线程的状态 25
2.1.3 线程优先级 27
2.1.4 线程时间片 28
2.1.5 线程栈管理 28
2.1.6 线程函数和线程数据 29
2.2 线程队列设计 29
2.3 线程调度机制设计 32
2.3.1 线程调度模型 32
2.3.2 线程调度算法 33
2.3.3 线程调度步骤 33
2.4 线程管理和调度实现 34
2.4.1 线程初始化 35
2.4.2 线程激活 35
2.4.3 线程休眠 37
2.4.4 线程挂起 40
2.4.5 线程解挂 42
2.4.6 线程延时 44
2.4.7 线程延时取消 46
2.4.8 线程主动调度 48
2.4.9 线程优先级设定 50
2.4.10 线程时间片修改 58
2.5 系统守护线程 58
2.6 线程应用演示 59
2.6.1 线程激活和休眠演示 59
2.6.2 线程挂起和解挂演示 62
2.6.3 线程延时演示 65
2.6.4 线程主动调度演示 67
2.6.5 线程优先级修改演示 70
2.6.6 线程时间片修改演示 73
第3章 线程同步和通信 77
3.1 线程阻塞队列 77
3.2 线程阻塞记录 78
3.3 IPC机制底层支撑函数 79
3.3.1 线程阻塞队列初始化 80
3.3.2 保存线程阻塞信息 80
3.3.3 清除线程阻塞信息 80
3.3.4 读取线程阻塞结果 80
3.3.5 线程阻塞过程 80
3.3.6 解除线程阻塞过程 81
3.3.7 解除最佳线程阻塞过程 81
3.3.8 解除全部线程阻塞过程 81
3.3.9 强制解除线程阻塞 81
3.3.10 休眠被阻塞的线程 81
3.3.11 设置被阻塞线程的优先级 82
第4章 信号量设计与实现 83
4.1 信号量的基本知识 83
4.1.1 二值信号量的概念 83
4.1.2 计数信号量的概念 84
4.1.3 信号量的操作 85
4.1.4 信号量的应用 86
4.2 信号量设计实现 90
4.2.1 信号量的初始化 92
4.2.2 信号量的取消初始化 92
4.2.3 信号量的获取 93
4.2.4 信号量的释放 98
4.2.5 终止线程阻塞 103
4.2.6 信号量刷新 104
4.3 信号量应用演示 104
4.3.1 线程间的信号量单向同步 105
4.3.2 线程间的信号双向同步 107
4.3.3 线程和ISR的信号同步 110
4.3.4 线程间的资源共享 113
4.3.5 多线程的信号同步 116
4.3.6 强制解除线程阻塞 120
4.3.7 信号量取消初始化 123
第5章 互斥量设计实现 126
5.1 互斥量基础知识 126
5.1.1 互斥量的概念 126
5.1.2 互斥量的操作 127
5.1.3 互斥量的应用 128
5.2 互斥量设计实现 129
5.2.1 互斥量的初始化 130
5.2.2 互斥量取消初始化 130
5.2.3 互斥量的加锁 131
5.2.4 互斥量的释放 134
5.2.5 终止线程阻塞 137
5.2.6 互斥量刷新 137
5.3 互斥量应用演示 139
5.3.1 线程间的资源共享 139
5.3.2 强制解除线程阻塞 142
5.3.3 互斥量刷新 144
5.3.4 互斥量取消初始化 147
第6章 邮箱设计实现 151
6.1 邮箱基础知识 151
6.1.1 邮箱的概念 151
6.1.2 邮箱的操作 153
6.1.3 邮箱的典型应用 153
6.2 邮箱功能设计 156
6.2.1 邮箱的初始化 158
6.2.2 邮箱的取消初始化 158
6.2.3 接收邮件 159
6.2.4 发送邮件 163
6.2.5 终止线程阻塞 168
6.2.6 邮箱刷新 168
6.2.7 邮箱广播 169
6.3 邮箱应用演示 170
6.3.1 线程间的异步数据传输 170
6.3.2 线程和ISR间的异步数据传输 173
6.3.3 线程间的单向同步数据传输 176
6.3.4 线程间的双向同步数据传输 179
6.3.5 多线程同步与邮箱刷新 183
6.3.6 多线程同步与邮箱广播 188
6.3.7 强制解除线程阻塞 192
6.3.8 邮箱取消初始化 195
第7章 消息队列设计与实现 199
7.1 消息队列基础 199
7.1.1 消息队列的概念 199
7.1.2 消息队列的操作 201
7.1.3 消息队列的典型应用 203
7.2 消息队列功能设计 207
7.2.1 消息队列初始化 209
7.2.2 消息队列取消初始化 209
7.2.3 消息接收 210
7.2.4 消息发送 215
7.2.5 消息广播 220
7.2.6 线程阻塞解除 221
7.2.7 消息队列刷新 221
7.3 消息队列应用演示 223
7.3.1 线程间的异步数据传输 223
7.3.2 线程和ISR间的异步数据传输 226
7.3.3 线程间的单向同步数据传输 229
7.3.4 线程间的双向同步数据传输 232
7.3.5 多线程同步与消息队列刷新 236
7.3.6 多线程同步与消息队列广播 240
7.3.7 线程阻塞解除 244
7.3.8 消息队列取消初始化 248
第8章 事件标记设计实现 253
8.1 事件标记基础知识 253
8.1.1 事件标记的概念 253
8.1.2 事件标记的操作 254
8.1.3 事件标记的典型应用 255
8.2 事件标记功能设计 256
8.2.1 事件标记的初始化 257
8.2.2 事件标记的重置 257
8.2.3 接收事件 258
8.2.4 发送事件 260
8.2.5 终止线程阻塞 263
8.2.6 事件标记刷新 264
8.3 事件标记应用演示 265
8.3.1 线程间的同步 265
8.3.2 线程和ISR间的同步 269
8.3.3 多线程同步与事件标记刷新 272
8.3.4 强制解除线程阻塞 276
8.3.5 事件标记重置 279
第9章 时间管理 283
9.1 定时器机制概述 283
9.1.1 简单计数方案 283
9.1.2 差分计时队列方案 284
9.1.3 时间车轮方案 284
9.1.4 定时时间漂移 286
9.1.5 定时器精度 286
9.2 软件定时器功能设计 286
9.2.1 软件定时器结构 287
9.2.2 软件定时器状态 288
9.2.3 软件定时器队列 289
9.2.4 软件定时器功能 290
9.3 软件定时器使用演示 296
第10章 内核移植 299
10.1 处理器介绍 299
10.1.1 STM32的地址映射 300
10.1.2 STM32的时钟系统 301
10.1.3 STM32的中断和异常 303
10.1.4 时钟节拍定时器 307
10.1.5 处理器启动 309
10.2 内核移植 311
10.2.1 内核功能剪裁 311
10.2.2 内核移植实现 313
10.2.3 线程栈初始化函数 314
10.2.4 PendSV中断管理函数 315
10.2.5 临界区管理函数 317
10.2.6 内核多任务启动函数 317
10.2.7 线程优先级计算函数 317
10.2.8 内核与处理器接口函数 317
10.2.9 内核启动流程 317
10.3 评估板介绍 321
10.3.1 LED驱动开发 323
10.3.2 外部按键驱动开发 325
10.3.3 串口驱动开发 328
第11章 以太网实践 331
11.1 以太网和以太网协议栈 331
11.2 MCU接入以太网的方式 332
11.3 以太网控制器和驱动开发 333
11.4 基于RTOS的Web实验 341
11.4.1 例程分析 341
11.4.2 实验现象 344
猜您喜欢