前言1
概述7
第1章 初识μC/OSII 1
1.00 安装 μC/OSII 1
1.01 范例11
1.02 范例210
1.03 范例320
1.04 范例430
第2章 实时系统概念34
2.00 前/后台系统34
2.01 代码的临界段35
2.02 资源36
2.03 共享资源36
2.04 多任务36
2.05 任务36
2.06 任务切换38
2.07 内核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()和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/OSII中的中断103
3.11 时钟节拍107
3.12 μC/OSII初始化111
3.13 μC/OSII的启动113
3.14 获取当前μC/OSII的版本号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.00 将任务置于等待事件的任务列表156
6.01 从等待事件的任务列表中使任务脱离等待状态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 等待事件标志组的事件标志位, OSFlagPend()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/OSII283
13.00 开发工具286
13.01 目录和文件286
13.02 INCLUDES.H287
13.03 OS_CPU.H287
13.03.01 与编译器相关的数据类型289
13.03.02 OS_ENTER_CRITICAL()和 OS_EXIT_CRITICAL()289
13.03.03 OS_STK_GROWTH293
13.03.04 OS_TASK_SW()293
13.04 OS_CPU_C.C294
13.04.01 OSTaskStkInit()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.04.09 OSInitHookBegin()301
13.04.10 OSInitHookEnd()301
13.05 OS_CPU_A.ASM301
13.05.01 OSStartHighRdy()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/OSII在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.03 OS_CPU.H, 堆栈方向340
14.03.04 OS_CPU.H和OS_TASK_SW()340
14.03.05 OS_CPU.H, 时钟节拍频率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.04 任务删除接口函数OSTaskDelHook()351
14.04.05 任务切换接口函数OSTaskSwHook()351
14.04.06 空闲任务接口函数OSTaskIdleHook()351
14.04.07 统计任务接口函数OSTaskStatHook()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/OSII在带有硬件浮点运算单元的80x86上的移植372
15.00 开发工具372
15.01 目录和文件374
15.02 INCLUDES.H文件375
15.03 OS_CPU.H文件375
15.03.01 OS_CPU.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.04.09 系统初始化开始接口函数OSInitHookBegin()386
15.04.10 系统初始化结束接口函数 OSInitHookEnd() 386
15.04.11 控制块初始化接口函数OSTCBInitHook() 386
15.05 OS_CPU_A.ASM文件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/OSII参考手册398
第17章 μC/OSII配置手册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.02 程序运行时间的测量525
18.03 其他函数525
18.04 接口函数526
18.05 参考文献544
附录A C语言编程规约545
A.01 文件头545
A.02 文件包含546
A.03 标志符命名法547
A.04 缩写. 略语及助记符548
A.05 注解550
A.06 定义语句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/OSII的使用许可证559
B.01 用于学院和大学教学559
B.02 用于商业目的559
附录C μC/OSII速查手册560
附录D 工具程序TO574
附录E 参考文献576
附录F 本书所附光盘578
F.01 文件和目录579