内容简介
μC/OSII是一个源码开放的嵌入式实时操作系统的内核。本书详细地介绍了嵌入式实时操作系统μC/OSII内核的任务的管理和调度、系统时钟和节拍服务、时间管理、中断、任务的通信和同步、内存的简单管理原理。为帮助读者理解书中的内容,本书给出了大量的实例。最后,还介绍了μC/OSII的移植方法。为了学习上的方便,第3版还增加了使用集成开发环境BC45和VC6.0编译μC/OSII的相关内容。第4版主要对第3版前3章做了较大的修改,增加了普通操作系统和嵌入式操作系统的区别,队列、堆栈、计算机中断等特殊问题,并重新编写了任务的概念等内容。
本书适合高等院校计算机、电子技术、自动化技术、仪器仪表等信息类专业教学使用,也适合对嵌入式操作系统感兴趣的工程技术人员阅读参考。
目录
第1章 嵌入式实时操作系统的基本概念……………………………………………………… 1
1.1 计算机操作系统………………………………………………………………………… 1
1.1.1 什么是计算机操作系统…………………………………………………………… 1
1.1.2 操作系统的作用和功能…………………………………………………………… 2
1.2 嵌入式系统和嵌入式操作系统………………………………………………………… 3
1.2.1 嵌入式系统的基本概念…………………………………………………………… 4
1.2.2 嵌入式操作系统…………………………………………………………………… 7
1.2.3 实时操作系统需要满足的条件…………………………………………………… 9
1.2.4 嵌入式系统的任务及嵌入式实时操作系统……………………………………… 11
1.3 嵌入式实时操作系统μC/OS II简介……………………………………………… 12
1.4 通用操作系统与嵌入式操作系统的异同……………………………………………… 13
1.5 小 结…………………………………………………………………………………… 15
1.6 练习题…………………………………………………………………………………… 15
第2章 预备知识……………………………………………………………………………… 16
2.1 开发工具………………………………………………………………………………… 16
2.1.1 BorlandC3.1及其精简版……………………………………………………… 16
2.1.2 多文件程序的编译和连接………………………………………………………… 21
2.2 工程管理工具make及makefile ……………………………………………………… 24
2.3 复杂工程项目的管理…………………………………………………………………… 32
2.3.1 批处理文件与makefile的综合使用…………………………………………… 32
2.3.2 复杂工程管理示例………………………………………………………………… 33
2.4 C指针…………………………………………………………………………………… 37
2.4.1 指针的基本概念…………………………………………………………………… 37
2.4.2 函数指针…………………………………………………………………………… 39
2.4.3 函数指针作为函数参数及回调函数……………………………………………… 41
2.5 typedef常用方法……………………………………………………………………… 43
2.6 常用数据类型及数据结构……………………………………………………………… 45
2.6.1 控制块……………………………………………………………………………… 46
2.6.2 同类控制块的登记造册…………………………………………………………… 50
2.6.3 队列与堆栈………………………………………………………………………… 52
2.6.4 位 图……………………………………………………………………………… 54
2.7 程序流程转移的中断实现方法………………………………………………………… 55
2.8 小 结…………………………………………………………………………………… 56
2.9 练习题…………………………………………………………………………………… 56
第3章 μC/OS II中的任务………………………………………………………………… 57
3.1 任务的基本概念………………………………………………………………………… 57
3.1.1 任务及其种类……………………………………………………………………… 57
3.1.2 任务的状态………………………………………………………………………… 59
3.1.3 用户任务代码的一般结构………………………………………………………… 60
3.1.4 系统任务…………………………………………………………………………… 63
3.1.5 任务的优先权及优先级别………………………………………………………… 64
3.2 任务堆栈………………………………………………………………………………… 65
3.2.1 任务堆栈的创建…………………………………………………………………… 65
3.2.2 任务堆栈的初始化………………………………………………………………… 67
3.3 任务控制块及其链表…………………………………………………………………… 68
3.3.1 任务控制块结构…………………………………………………………………… 68
3.3.2 任务控制块链表…………………………………………………………………… 69
3.3.3 任务控制块的初始化……………………………………………………………… 71
3.4 任务就绪表及任务调度………………………………………………………………… 72
3.4.1 任务就绪表结构…………………………………………………………………… 72
3.4.2 对任务就绪表的操作……………………………………………………………… 74
3.4.3 任务调度…………………………………………………………………………… 76
3.5 任务的创建……………………………………………………………………………… 81
3.5.1 用函数OSTaskCreate()创建任务……………………………………………… 81
3.5.2 用函数OSTaskCreateExt()创建任务…………………………………………… 83
3.5.3 创建任务的一般方法……………………………………………………………… 83
3.6 任务的挂起和恢复……………………………………………………………………… 90
3.6.1 挂起任务…………………………………………………………………………… 90
3.6.2 恢复任务…………………………………………………………………………… 90
3.7 其他任务管理函数……………………………………………………………………… 96
3.7.1 任务优先级别的修改……………………………………………………………… 96
3.7.2 任务的删除………………………………………………………………………… 97
3.7.3 查询任务的信息………………………………………………………………… 103
3.8 μC/OS II的初始化和任务的启动………………………………………………… 103
3.8.1 μC/OS II的初始化…………………………………………………………… 103
3.8.2 μC/OS II的启动……………………………………………………………… 105
3.9 小 结………………………………………………………………………………… 107
3.10 练习题………………………………………………………………………………… 108
第4章 μC/OS II的中断和时钟…………………………………………………………… 109
4.1 μC/OS II的中断…………………………………………………………………… 109
4.1.1 μC/OS II的中断过程………………………………………………………… 109
4.1.2 中断级任务切换函数…………………………………………………………… 113
4.1.3 应用程序中的临界段…………………………………………………………… 113
4.2 μC/OS II的时钟…………………………………………………………………… 115
4.3 时间管理……………………………………………………………………………… 122
4.3.1 任务的延时……………………………………………………………………… 122
4.3.2 取消任务的延时………………………………………………………………… 123
4.3.3 获取和设置系统时间…………………………………………………………… 128
4.4 小 结………………………………………………………………………………… 130
4.5 练习题………………………………………………………………………………… 131
第5章 任务的同步与通信…………………………………………………………………… 132
5.1 任务的同步和事件…………………………………………………………………… 132
5.1.1 任务间的同步…………………………………………………………………… 132
5.1.2 事 件…………………………………………………………………………… 133
5.2 事件控制块及事件处理函数………………………………………………………… 145
5.2.1 事件控制块的结构……………………………………………………………… 145
5.2.2 操作事件控制块的函数………………………………………………………… 147
5.2.3 空事件控制块链表……………………………………………………………… 149
5.3 信号量及其操作……………………………………………………………………… 150
5.3.1 信号量…………………………………………………………………………… 150
5.3.2 信号量的操作…………………………………………………………………… 151
5.4 互斥型信号量和任务优先级反转…………………………………………………… 160
5.4.1 任务优先级的反转现象………………………………………………………… 161
5.4.2 互斥型信号量…………………………………………………………………… 166
5.5 消息邮箱及其操作…………………………………………………………………… 169
5.5.1 消息邮箱………………………………………………………………………… 169
5.5.2 消息邮箱的操作………………………………………………………………… 170
5.6 消息队列及其操作…………………………………………………………………… 175
5.6.1 消息队列………………………………………………………………………… 175
5.6.2 消息队列的操作………………………………………………………………… 178
5.7 小 结………………………………………………………………………………… 184
5.8 练习题………………………………………………………………………………… 185
第6章 信号量集……………………………………………………………………………… 186
6.1 信号量集的结构……………………………………………………………………… 186
6.1.1 基本概念………………………………………………………………………… 186
6.1.2 信号量集的结构组成…………………………………………………………… 187
6.1.3 对等待任务链表的操作………………………………………………………… 191
6.1.4 空标志组链表…………………………………………………………………… 191
6.2 信号量集的操作……………………………………………………………………… 192
6.2.1 创建信号量集…………………………………………………………………… 192
6.2.2 请求信号量集…………………………………………………………………… 194
6.2.3 向信号量集发送信号…………………………………………………………… 194
6.2.4 查询信号量集的状态…………………………………………………………… 200
6.2.5 删除信号量集…………………………………………………………………… 203
6.3 小 结………………………………………………………………………………… 203
6.4 练习题………………………………………………………………………………… 203
第7章 动态内存管理………………………………………………………………………… 204
7.1 内存控制块…………………………………………………………………………… 204
7.1.1 可动态分配内存的划分………………………………………………………… 204
7.1.2 内存控制块OS_MEM 的结构………………………………………………… 205
7.1.3 空内存控制块链表……………………………………………………………… 206
7.2 动态内存的管理……………………………………………………………………… 206
7.2.1 创建动态内存分区……………………………………………………………… 206
7.2.2 请求获得一个内存块…………………………………………………………… 208
7.2.3 释放一个内存块………………………………………………………………… 211
7.2.4 查询一个内存分区的状态……………………………………………………… 215
7.3 小 结………………………………………………………………………………… 220
7.4 练习题………………………………………………………………………………… 220
第8章 在51单片机上移植μC/OS II …………………………………………………… 221
8.1 μC/OS II移植的一般性问题……………………………………………………… 221
8.1.1 可重入函数的概念……………………………………………………………… 221
8.1.2 时钟节拍的产生………………………………………………………………… 222
8.1.3 任务堆栈的设计………………………………………………………………… 222
8.2 在51系列单片机上移植μC/OS II ……………………………………………… 223
8.2.1 文件OS_CPU.H 的修改……………………………………………………… 223
8.2.2 任务堆栈的设计………………………………………………………………… 224
8.2.3 文件OS_CPU_C.C的修改…………………………………………………… 231
8.2.4 几点注意事项…………………………………………………………………… 232
8.3 应用举例……………………………………………………………………………… 232
8.3.1 LED数码显示器的驱动程序…………………………………………………… 232
8.3.2 串行接口的应用………………………………………………………………… 234
8.4 小 结………………………………………………………………………………… 242
8.5 练习题………………………………………………………………………………… 242
第9章 基于ARM 的μC/OS II…………………………………………………………… 243
9.1 移植规划……………………………………………………………………………… 243
9.1.1 编译器的选择…………………………………………………………………… 243
9.1.2 ARM7工作模式的选择………………………………………………………… 243
9.2 移 植………………………………………………………………………………… 244
9.2.1 文件OS_CPU.H 的编写……………………………………………………… 244
9.2.2 文件OS_CPU_C.C的编写…………………………………………………… 246
9.2.3 文件OS_CPU_A.S的编写…………………………………………………… 253
9.2.4 关于中断及时钟节拍…………………………………………………………… 256
9.3 在LPC2000上移植μC/OS II …………………………………………………… 257
9.3.1 挂接SWI软件中断……………………………………………………………… 258
9.3.2 中断及时钟节拍中断…………………………………………………………… 258
9.3.3 一个基于μC/OS II和ARM 的应用程序实例……………………………… 259
9.4 小 结………………………………………………………………………………… 261
9.5 练习题………………………………………………………………………………… 261
第10章 μC/OS II在80x86上的移植…………………………………………………… 262
10.1 概 述………………………………………………………………………………… 262
10.2 任务切换……………………………………………………………………………… 263
10.2.1 任务切换函数OSCtxSw() …………………………………………………… 263
10.2.2 任务切换宏OS_TASK_SW()………………………………………………… 265
10.2.3 中断级任务切换函数OSIntCtxSw()………………………………………… 266
10.3 系统时钟……………………………………………………………………………… 267
10.3.1 PC中DOS的系统时钟………………………………………………………… 267
10.3.2 PC中μC/OS II的系统时钟………………………………………………… 267
10.3.3 μC/OS II系统时钟中断服务程序…………………………………………… 269
10.3.4 μC/OS II系统时钟中断向量的安装………………………………………… 269
10.3.5 由μC/OS II返回DOS ……………………………………………………… 270
10.4 小 结………………………………………………………………………………… 271
第11章 μC/OS II可裁剪性的实现……………………………………………………… 272
11.1 文件OS_CFG.H 中用于系统裁剪的常量………………………………………… 272
11.2 配置常量的解释……………………………………………………………………… 274
11.2.1 OS_MAX_EVENTS ………………………………………………………… 274
11.2.2 OS_MAX_MEM_PARTS …………………………………………………… 275
11.2.3 OS_MAX_QS ………………………………………………………………… 275
11.2.4 OS_MAX_MEM_TASKS …………………………………………………… 275
11.2.5 OS_LOWEST_PRIO ………………………………………………………… 275
11.2.6 OS_TASK_IDLE_STK_SIZE ……
嵌入式实时操作系统μC/OS-II原理及应用(第4版) 下载 mobi epub pdf txt 电子书 格式