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

  • 购买积分:16 如何计算积分?
  • 作  者:(美)拉伯罗斯(JEANJ.LABROSSE)著;宫辉,曾鸣,龚光华等译;邵贝贝审校
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2012
  • ISBN:9787512409668
  • 页数:536 页
图书介绍:μC/OS-III是源码公开的嵌入式实时操作系统内核,由著名的μC/OS-II实时内核基础上发展而来。μC/OS-III以ARM Cortex为假想CPU,面向有优先级硬件算法指令的32位单片机的嵌入式应用。因为这类高端CPU已经无需使用μC/OS-II的软件任务调度算法。故μC/OS-III是一个全新的RTOS内核。从μC/OS算起,该内核已有二十余年应用史,在诸多领域得到了广泛的认可与应用。

第1章 概述 1

1.1 前后台系统 2

1.2 实时内核 3

1.3 RTOS(实时操作系统) 4

1.4 μC/OS-Ⅲ 5

1.5 μC/OS、μC/OS-Ⅱ、μC/OS-Ⅲ特性比较 8

1.6 关于本书 10

1.7 μC/Probe调试软件工具 10

1.8 本书的常用约定 11

1.9 各章内容 11

第2章 目录与文件 14

2.1 应用代码 16

2.2 CPU 17

2.3 板级支持包(BSP) 17

2.4 μC/OS-Ⅲ与CPU无关的源代码 18

2.5 μC/OS-Ⅲ与CPU相关的源代码 21

2.6 μC/CPU与CPU相关的源代码 22

2.7 μC/LIB可移植的库函数 24

2.8 小结 26

第3章 初识μC/OS-Ⅲ 28

3.1 单任务应用程序 28

3.2 有内核对象参与的多任务应用程序 34

第4章 临界段代码 41

4.1 关中断 41

4.1.1 测量中断关闭时间 42

4.2 给调度器上锁 42

4.2.1 测量调度器锁定时间 43

4.3 μC/OS-Ⅲ的某些功能会导致临界段代码长度增加 44

4.4 小结 44

第5章 任务管理 46

5.1 任务优先级的分配 52

5.2 栈空间大小的确定 54

5.3 任务栈溢出检测 55

5.4 任务管理函数 58

5.5 任务管理的内部原理 59

5.5.1 任务状态 59

5.5.2 任务控制块TCB 64

5.6 系统内部任务 74

5.6.1 空闲任务(OS-IdleTask()、os_core.c) 75

5.6.2 时钟节拍任务(OS_TickTask()、os_tick.c) 76

5.6.3 统计任务(OS_StatTask()、os_stat.c) 82

5.6.4 定时任务(OS_TmrTask()、os_tmr.c) 85

5.6.5 中断服务管理任务(OS_IntQTask()、os_int.c) 86

5.7 小结 87

第6章 任务就绪表 88

6.1 优先级 88

6.2 就绪任务列表 92

6.3 向就绪任务列表中增加任务 95

6.4 小结 96

第7章 任务调度 97

7.1 可剥夺型调度 97

7.2 调度点 99

7.3 时间片轮转调度 101

7.4 调度的实现细节 102

7.4.1 OSSched() 103

7.4.2 OSIntExit() 104

7.4.3 OS_SchedRoundRobin() 105

7.5 小结 106

第8章 任务切换 107

8.1 OSCtxSw() 109

8.2 OSIntCtxSw() 111

8.3 小结 113

第9章 中断管理 114

9.1 CPU的中断处理 115

9.2 典型的μC/OS-Ⅲ中断服务程序 115

9.3 无需内核参与的中断服务程序 118

9.4 多中断优先级的处理器 118

9.5 所有中断源共用中断服务程序 120

9.6 每个中断源都有专用中断服务程序 121

9.7 直接发布和延迟发布 122

9.7.1 直接发布 122

9.7.2 延迟发布 124

9.8 直接发布模式和延迟发布模式的对比 126

9.9 时钟节拍(或系统节拍) 127

9.10 小结 129

第10章 任务挂起表 130

10.1 小结 134

第11章 时间管理 135

11.1 OSTimeDly() 135

11.2 OSTimeDlyHMSM() 139

11.3 OSTimeDlyResume() 141

11.4 OSTimeSet()和OSTimeGet() 142

11.5 OSTimeTick() 142

11.6 小结 142

第12章 定时器管理 143

12.1 单次定时器 144

12.2 周期定时器(无初始延迟) 145

12.3 周期定时器(有初始延迟) 146

12.4 定时器管理内部机制 147

12.4.1 定时器管理内部机制——定时器状态 147

12.4.2 定时器管理内部机制——os_tmr 148

12.4.3 定时器管理内部机制——定时器任务 149

12.4.4 定时器管理内部机制——定时器列表 151

12.5 小结 156

第13章 资源管理 157

13.1 关中断/开中断 159

13.2 给调度器上锁/开锁 160

13.3 信号量 161

13.3.1 二进制信号量 162

13.3.2 计数型信号量 168

13.3.3 使用信号量的注意事项 170

13.3.4 (用来共享资源的)信号量内部结构 170

13.3.5 优先级反转 174

13.4 互斥型信号量(MUTEX) 176

13.4.1 互斥型信号量的内部结构 180

13.5 何时可以用普通信号量替代互斥型信号量 184

13.6 死锁(或抱死) 184

13.7 小结 187

第14章 任务同步 189

14.1 信号量 189

14.1.1 单向同步 190

14.1.2 信用记录 193

14.1.3 多个任务等待同一个信号量 194

14.1.4 信号量的内部结构(以同步为目的) 195

14.2 任务信号量 200

14.2.1 等待任务信号量 201

14.2.2 发布任务信号量 202

14.2.3 双向同步 203

14.3 事件标志组 205

14.3.1 使用事件标志 206

14.3.2 事件标志的内部结构 210

14.4 与多任务同步 215

14.5 小结 216

第15章 消息传递 217

15.1 消息 217

15.2 消息队列 218

15.3 任务内建的消息队列 219

15.4 双向同步 220

15.5 流量控制 221

15.6 保持数据的可见性 223

15.7 使用消息队列 224

15.8 客户端和服务器 231

15.9 消息队列内部的细节 232

15.10 小结 235

第16章 同时等待多个内核对象 236

16.1 小结 242

第17章 存储管理 243

17.1 创建存储分区 244

17.2 从分区中获得存储块 247

17.3 将存储块归还到分区中 248

17.4 使用存储分区 249

17.5 小结 251

第18章 移植μC/OS-Ⅲ 252

18.1 约定 254

18.2 μC/CPU 255

18.2.1 CPU_BSP.H 256

18.2.2 CPU_DEF.H 256

18.2.3 CPU_CFG.H 256

18.2.4 CPU_CORE.C 257

18.2.5 CPU_CORE.H 258

18.2.6 CPU.H 258

18.2.7 CPU_C.C 261

18.2.8 CPU_A.ASM 261

18.3 μC/OS-Ⅲ移植 262

18.3.1 OS_CPU.H 263

18.3.2 OS_CPU_C.C 264

18.3.3 OS_CPU_A.ASM 270

18.3.4 OS_CPU_A.INC 275

18.4 板级支持包(BSP) 278

18.4.1 BSP.C和BSP.H 279

18.4.2 BSP_INT.C和BSP_INT.H 280

18.5 移植的测试 281

18.5.1 创建一个简单的测试工程 281

18.5.2 验证任务级任务切换 285

18.5.3 验证中断级任务切换 290

18.6 小结 293

第19章 程序运行时的各类统计信息 295

19.1 程序运行时的总体统计信息 295

19.2 程序运行时每个任务的统计信息 299

19.3 程序运行时和内核对象相关的统计信息 302

19.4 OS_DBG.C——编译时(静态)的统计信息 305

19.5 OS_CFG_APP.C——编译时(静态)的统计信息 316

19.6 小结 318

附录A μC/OS-Ⅲ API参考手册 319

A.1 任务管理 319

A.2 时间管理 321

A.3 互斥型信号量——资源管理 321

A.4 事件标志组——同步 322

A.5 信号量——同步 323

A.6 任务信号量——同步 324

A.7 消息队列——消息传递 325

A.8 任务消息队列——消息传递 326

A.9 等待多个对象 327

A.10 定时器 328

A.11 固定大小的存储分区——存储管理 329

A.12 OSCtxSw() 330

A.13 OSFlagCreate() 331

A.14 OSFlagDel() 333

A.15 OSFlagPend() 334

A.16 OSFlagPendAbort() 337

A.17 OSFlagPendGetFlagsRdy() 339

A.18 OSFlagPost() 341

A.19 OSIdleTaskHook() 343

A.20 OSInit() 344

A.21 OSInitHook() 348

A.22 OSIntCtxSw() 349

A.23 OSIntEnter() 350

A.24 OSIntExit() 351

A.25 OSMemCreate() 352

A.26 OSMemGet() 354

A.27 OSMemPut() 356

A.28 OSMutexCreate() 357

A.29 OSMutexDel() 359

A.30 OSMutexPend() 360

A.31 OSMutexPendAbort() 363

A.32 OSMutexPost() 365

A.33 OSPendMulti() 367

A.34 OSQCreate() 370

A.35 OSQDel() 372

A.36 OSQFlush() 374

A.37 OSQPend() 376

A.38 OSQPendAbort() 379

A.39 OSQPost() 381

A.40 OSSafetyCriticalStart() 384

A.41 OSSched() 384

A.42 OSSchedLock() 386

A.43 OSSchedRoundRobinCfg() 387

A.44 OSSchedRoundRobinYield() 388

A.45 OSSchedUnlock() 389

A.46 OSSemCreate() 390

A.47 OSSemDel() 392

A.48 OSSemPend() 394

A.49 OSSemPendAbort() 397

A.50 OSSemPost() 399

A.51 OSSemSet() 401

A.52 OSStart() 402

A.53 OSStartHighRdy() 403

A.54 OSStatReset() 404

A.55 OSStatTaskCPUUsageInit() 405

A.56 OSStatTaskHook() 406

A.57 OSTaskChangePrio() 407

A.58 OSTaskCreate() 409

A.59 OSTaskCreateHook() 418

A.60 OSTaskDel() 419

A.61 OSTaskDelHook() 421

A.62 OSTaskQFlush() 422

A.63 OSTaskQPend() 424

A.64 OSTaskQPendAbort() 427

A.65 OSTaskQPost() 429

A.66 OSTaskRegGet() 431

A.67 OSTaskRegSet() 432

A.68 OSTaskReturnHook() 434

A.69 OSTaskResume() 436

A.70 OSTaskSemPend() 437

A.71 OSTaskSemPendAbort() 440

A.72 OSTaskSemPost() 441

A.73 OSTaskSemSet() 443

A.74 OSStatTaskHook() 444

A.75 OSTaskStkChk() 445

A.76 OSTaskStkInit() 447

A.77 OSTaskSuspend() 451

A.78 OSTaskSwHook() 452

A.79 OSTaskTimeQuantaSet() 454

A.80 OSTickISR() 456

A.81 OSTimeDly() 457

A.82 OSTimeDlyHMSM() 459

A.83 OSTimeDlyResume() 461

A.84 OSTimeGet() 463

A.85 OSTimeSet() 464

A.86 OSTimeTick() 465

A.87 OSTimeTickHook() 465

A.88 OSTmrCreate() 467

A.89 OSTmrDel() 472

A.90 OSTmrRemainGet() 473

A.91 OSTmrStart() 475

A.92 OSTmrStateGet() 476

A.93 OSTmrStop() 478

A.94 OSVersion() 480

附录B μC/OS-Ⅲ配置手册 481

B.1 μC/OS-Ⅲ的功能(os_cfg.h) 483

B.2 μC/OS-Ⅲ的数据类型(os_type.h) 492

B.3 μC/OS-Ⅲ的堆栈、池和其他数据类型(os_cfg_app.h) 493

附录C 从μC/OS-Ⅱ迁移到μC/OS-Ⅲ 497

C.1 源文件名称和内容的差异 498

C.2 编程约定的变化 501

C.3 变量名称的变化 506

C.4 API的变化 507

C.4.1 事件标志 507

C.4.2 消息邮箱 509

C.4.3 存储管理 511

C.4.4 互斥型信号量 513

C.4.5 消息队列 514

C.4.6 信号量 516

C.4.7 任务管理 518

C.4.8 时间管理 523

C.4.9 定时器管理 524

C.4.10 其他 526

C.4.11 介入函数与系统移植 528

附录D MISRA-C:2004和μC/OS-Ⅲ 531

D.1 MISRA-C:2004,规则8.5(强制) 531

D.2 MISRA-C:2004,规则8.12(强制) 532

D.3 MISRA-C:2004,规则14.7(强制) 532

D.4 MISRA-C:2004,规则15.2(强制) 533

D.5 MISRA-C:2004,规则17.4(强制) 534

附录E 参考文献 535

附录F μC/OS-Ⅲ许可政策 536