《嵌入式实时操作系统μC/OS-II》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)Jean J. Labrosse著;邵贝贝等译
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2003
  • ISBN:7810772902
  • 页数:582 页
图书介绍:本书通过对μC/OS-Ⅱ源代码的分析与描述,讲述了多任务实时的基本概念、竞争与调度算法、任务间同步与通信、存储与定时的管理以及如何处理优先级反转问题;介绍如何将μC/OS-Ⅱ移植到不同CPU上,如何调试移植代码等。

目录 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