目录 1
前言 1
第1章 初识μC/OS-Ⅱ 1
1.00 安装μC/OS-Ⅱ 1
1.01 范例1 1
概述 7
1.02 范例2 10
1.03 范例3 20
1.04 范例4 30
第2章 实时系统概念 34
2.00 前/后台系统 34
2.01 代码的临界段 35
2.02 资源 36
2.03 共享资源 36
2.04 多任务 36
2.05 任务 36
2.07 内核 38
2.06 任务切换 38
2.08 调度 39
2.09 不可剥夺型内核 39
2.10 可剥夺型内核 40
2.11 可重入函数 42
2.12 时间片轮番调度法 44
2.13 任务优先级 44
2.14 静态优先级 44
2.15 动态优先级 44
2.16 优先级反转 44
2.17 任务优先级分配 47
2.18 互斥条件 49
2.18.01 关中断和开中断 49
2.18.02 测试并置位操作 50
2.18.03 禁止,然后允许任务切换 50
2.18.04 信号量 51
2.19 死锁 55
2.20 同步 56
2.21 事件标志 58
2.22 任务间通信 59
2.23 消息邮箱 59
2.24 消息队列 60
2.25 中断 61
2.26 中断延迟 62
2.27 中断响应 62
2.28 中断恢复时间 63
2.29 中断延迟、响应及恢复 64
2.30 中断处理时间 66
2.31 非屏蔽中断 66
2.32 时钟节拍 67
2.33 对存储器的需求 69
2.34 使用实时内核的优、缺点 70
2.35 实时系统小结 71
第3章 内核结构 72
3.00 临界段,OS_ENTER_CRITICAL()和 73
OS_EXIT_CRITICAL() 73
3.01 任务 76
3.02 任务状态 78
3.03 任务控制块(OS_TCB) 80
3.04 就绪表 88
3.05 任务调度 91
3.06 任务级的任务切换,OS_TASK_SW() 92
3.07 给调度器上锁和开锁 96
3.08 空闲任务 97
3.09 统计任务 98
3.10 μC/OS-Ⅱ中的中断 103
3.11 时钟节拍 107
3.12 μC/OS-Ⅱ初始化 111
3.13 μC/OS-Ⅱ的启动 113
3.14 获取当前μC/OS-Ⅱ的版本号 115
第4章 任务管理 116
4.00 建立任务,OSTaskCreate() 117
4.01 建立任务,OSTaskCreateExt() 119
4.02 任务堆栈 122
4.03 堆栈检验,OSTaskStkChk() 125
4.04 删除任务,OSTaskDel() 128
4.05 请求删除任务,OSTaskDelReq() 132
4.06 改变任务的优先级,OSTaskChangePrio() 135
4.07 挂起任务,OSTaskSuspend() 138
4.08 恢复任务,OSTaskResume() 140
4.09 获得任务的信息,OSTaskQuery() 142
第5章 时间管理 144
5.00 任务延时函数,OSTimeDly() 144
5.01 按时、分、秒延时函数,OSTimeDlyHMSM() 146
5.02 恢复延时的任务,OSTimeDlyResume() 149
5.03 系统时间,OSTimeGet()和OSTimeSet() 150
第6章 事件控制块 152
6.01 从等待事件的任务列表中使任务脱离等待状态 156
6.00 将任务置于等待事件的任务列表 156
6.02 在等待事件的任务列表中查找优先级最高的任务 157
6.03 空余事件控制块链表 159
6.04 初始化一个事件控制块,OS_EventWaitListInit() 159
6.05 使一个任务进入就绪态,OS_EventTaskRdy() 161
6.06 使一个任务进入等待某事件发生状态,OS_EventTaskWait() 163
6.07 由于等待超时而将任务置为就绪态,OS_EventTO() 163
第7章 信号量管理 165
7.00 建立一个信号量,OSSemCreate() 166
7.01 删除一个信号量,OSSemDel() 168
7.02 等待一个信号量,OSSemPend() 171
7.03 发出一个信号量,OSSemPost() 173
7.04 无等待地请求一个信号量,OSSemAccept() 175
7.05 查询一个信号量的当前状态,OSSemQuery() 176
第8章 互斥型信号量管理 179
8.00 建立一个互斥型信号量,OSMutexCreate() 182
8.01 删除一个互斥型信号量,OSMutexDel() 185
8.02 等待一个互斥型信号量(挂起),OSMutexPend() 187
8.03 释放一个互斥型信号量,OSMutexPost() 191
8.04 无等待地获取互斥型信号量(任务不挂起),OSMutexAccept() 193
8.05 获取互斥型信号量的当前状态,OSMutexQuery() 195
第9章 事件标志组管理 198
9.00 深入事件标志组 199
9.01 建立一个事件标志组,OSFlagCreate() 202
9.02 删除一个事件标志组,OSFlagDel() 204
9.03 等待事件标志组的事件标志位,CSFlagPend() 206
9.04 置位或清0事件标志组中的事件标志,OSFlagPost() 214
9.05 无等待地获得事件标志组中的事件标志,OSFlagAccept() 223
9.06 查询事件标志组的状态,OSFlagQuery() 226
第10章 消息邮箱管理 228
10.00 建立一个邮箱,OSMboxCreate() 229
10.01 删除一个邮箱,OSMboxDel() 231
10.02 等待邮箱中的消息,OSMboxPend() 234
10.03 向邮箱发送一则消息,OSMboxPost() 236
10.04 向邮箱发送一则消息,OSMboxPostOpt() 238
10.05 无等待地从邮箱中得到一则消息,OSMboxAccept() 240
10.06 查询一个邮箱的状态,OSMboxQuery() 241
10.07 用邮箱作为二值信号量 243
10.08 用邮箱实现延时,而不使用OSTimeDly() 243
第11章 消息队列管理 245
11.00 建立一个消息队列,OSQCreate() 249
11.01 删除一个消息队列,OSQDel() 251
11.02 等待消息队列中的消息,OSQPend() 253
11.03 向消息队列发送一则消息(FIFO),OSQPost() 256
11.04 向消息队列发送一则消息(LIFO),OSQPostFront() 258
11.05 向消息队列发送一则消息(FIFO或LIFO),OSQPostOpt() 259
11.06 无等待地从消息队列中获得消息,OSQAccept() 262
11.07 清空消息队列,OSQFlush() 263
11.08 获取消息队列的状态,OSQQuery() 264
11.09 使用消息队列读取模拟量的值 267
11.10 消息队列用做计数型信号量 268
第12章 内存管理 270
12.00 内存控制块 271
12.01 建立一个内存分区,OSMemCreate() 272
12.02 分配一个内存块,OSMemGet() 275
12.03 释放一个内存块,OSMemPut() 277
12.04 查询一个内存分区的状态,OSMemQuery() 278
12.05 使用内存分区 279
12.06 等待内存分区中的一个内存块 281
第13章 移植μC/OS-Ⅱ 283
13.00 开发工具 286
13.01 目录和文件 286
13.02 INCLUDES.H 287
13.03 OS_CPU.H 287
13.03.01 与编译器相关的数据类型 289
13.03.02 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL() 289
13.03.03 OS_STK_GROWTH 293
13.03.04 OS_TASK_SW() 293
13.04.01 OSTaskStkInit() 294
13.04 OS_CPU_C.C 294
13.04.02 OSTaskCreateHook() 298
13.04.03 OSTaskDelHook() 298
13.04.04 OSTaskSwHook() 299
13.04.05 OSTaskStatHook() 299
13.04.06 OSTimeTickHook() 299
13.04.07 OSTCBInitHook() 299
13.04.08 OSTaskIdleHook() 300
13.05 OS_CPU_A.ASM 301
13.05.01 OSStartHighRdy() 301
13.04.09 OSInitHookBegin() 301
13.04.10 OSInitHookEnd() 301
13.05.02 OSCtxSw() 302
13.05.03 OSTickISR() 304
13.05.04 OSIntCtxSw() 306
13.06 测试移植代码 307
13.06.01 确保C编译器、汇编编译器及链接器正常工作 307
13.06.02 验证OSTaskStkInit()和OSStartHighRdy()函数 311
13.06.03 验证OSCtxSw()函数 313
13.06.04 验证OSIntCtxSw()和OSTickISR()函数 316
第14章 μC/OS-Ⅱ在80x86上的移植 333
14.00 开发工具 335
14.01 目录和文件 336
14.02 INCLUDES.H文件 336
14.03 OS_CPU.H文件 337
14.03.01 OS_CPU.H,数据类型 338
14.03.02 OS_CPU.H,OS_ENTER_CRITICAL()及OS_EXIT_CRITICAL() 338
14.03.05 OS_CPU.H,时钟节拍频率 340
14.03.03 OS_CPU.H,堆栈方向 340
14.03.04 OS_CPU.H和OS_TASK_SW() 340
14.03.06 OS_CPU.H,浮点仿真 341
14.04 OS_CPU_C.C文件 341
14.04.01 任务堆栈初始化函数OSTaskStkInit() 342
14.04.02 浮点仿真任务栈初始化函数OSTaskStkInit_FPE_x86() 344
14.04.03 任务建立接口函数OSTaskCreateHook() 350
14.04.07 统计任务接口函数OSTaskStatHook() 351
14.04.06 空闲任务接口函数OSTaskIdleHook() 351
14.04.04 任务删除接口函数OSTaskDelHook() 351
14.04.05 任务切换接口函数OSTaskSwHook() 351
14.04.08 时钟节拍接口函数OSTimeTickHook() 352
14.04.09 系统初始化开始接口函数OSInitHookBegin() 352
14.04.10 系统初始化结束接口函数OSInitHookEnd() 352
14.04.11 控制块初始化接口函数OSTCBInitHook() 353
14.05 OS_CPU_A.ASM文件 353
14.05.01 OSStartHighRdy() 353
14.05.02 OSCtxSw() 355
14.05.03 OSIntCtxSw() 357
14.05.04 OSTickISR() 360
14.06 内存占用 366
第15章 μC/OS-Ⅱ在带有硬件浮点运算单元的80x86上的移植 372
15.00 开发工具 372
15.01 目录和文件 374
15.03 OS_CPU.H文件 375
15.02 INCLUDES.H文件 375
15.03.01 OS_CP U.H,数据类型 376
15.03.02 OS_CPU.H,OS_ENTER_CRITICAL()及OS_EXIT_CRITICAL() 376
15.03.03 OS_CPU.H,堆栈方向 376
15.03.04 OS_CPU.H,OS_TASK_SW() 377
15.03.05 OS_CPU.H,时钟节拍频率 377
15.03.06 OS_CPU.H,浮点函数 377
15.04 OS_CPU_C.C文件 378
15.04.01 任务堆栈初始化函数OSTaskStkInit() 378
15.04.02 浮点处理单元初始化函数OSFPInit() 380
15.04.03 任务建立接口函数OSTaskCreateHook() 381
15.04.04 任务删除接口函数OSTaskDelHook() 382
15.04.05 任务切换接口函数OSTaskSwHook() 384
15.04.06 空闲任务接口函数OSTaskIdleHook() 385
15.04.07 统计任务接口函数OSTaskStatHook() 385
15.04.08 时钟节拍接口函数OSTimeTickHook() 385
15.05 OS_CPU_A.ASM文件 386
15.04.11 控制块初始化接口函数OSTCBInitHook() 386
15.04.10 系统初始化结束接口函数OSInitHookEnd() 386
15.04.09 系统初始化开始接口函数OSInitHookBegin() 386
15.05.01 OSStartHighRdy() 387
15.05.02 OSCtxSw() 387
15.05.03 OSIntCtxSw() 390
15.05.04 OSTickISR() 393
15.05.05 OSFPSave() 394
15.05.06 OSFPRestore() 395
15.06 内存占用 396
第16章 μC/OS-Ⅱ参考手册 398
第17章 μC/OS-Ⅱ配置手册 509
17.00 杂项 509
17.01 事件标志 512
17.02 消息邮箱 512
17.03 内存管理 513
17.04 互斥型信号量 513
17.05 消息队列 514
17.06 信号量 515
17.07 任务管理 515
17.08 时钟管理 516
17.09 函数概述 517
第18章 PC中的功能函数 520
18.00 字符显示 520
18.01 保存和恢复DOS的环境设置 523
18.03 其他函数 525
18.02 程序运行时间的测量 525
18.04 接口函数 526
18.05 参考文献 544
附录A C语言编程规约 545
A.01 文件头 545
A.02 文件包含 546
A.03 标志符命名法 547
A.04 缩写、略语及助记符 548
A.06 定义语句 550
A.05 注解 550
A.07 数据类型 551
A.08 局部变量 552
A.09 函数原型 552
A.10 函数声明 553
A.11 缩进格式 554
A.12 语句和表达式 556
A.13 结构和联合 557
A.14 参考文献 558
附录B μC/OS-Ⅱ的使用许可证 559
B.01 用于学院和大学教学 559
B.02 用于商业目的 559
附录C μC/OS-Ⅱ速查手册 560
附录D 工具程序TO 574
附录E 参考文献 576
附录F 本书所附光盘 578
F.01 文件和目录 579