《嵌入式实时操作系统μC/OS-Ⅱ教程 第2版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:程文娟,吴永忠,苗刚中编著
  • 出 版 社:西安:西安电子科技大学出版社
  • 出版年份:2017
  • ISBN:9787560644004
  • 页数:312 页
图书介绍:本书内容包括嵌入式系统导论、嵌入式操作系统中的基本概念、μC/OS-Ⅱ的体系结构、任务管理、中断与时间管理、信号量与互斥信号量管理、消息管理、事件标志组管理、内存管理、移植等方面的原理与实现、范例和应用实例。本书中的全部源代码、范例和应用实例都可在PC上运行。

第1章 嵌入式系统导论 1

1.1嵌入式系统的基本概念 1

1.1.1嵌入式系统的发展概况 1

1.1.2嵌入式系统的定义 3

1.1.3嵌入式系统的特点 4

1.2嵌入式系统的组成结构 5

1.2.1硬件层 5

1.2.2硬件抽象层 8

1.2.3应用层 9

1.3嵌入式系统设计的基本方法 10

1.3.1总体设计 11

1.3.2软硬件组件的详细设计 13

1.3.3系统集成 13

1.3.4系统测试 13

1.4嵌入式操作系统的基本概念 14

1.4.1嵌入式操作系统的发展历程 14

1.4.2嵌入式实时操作系统的定义 14

1.4.3评价嵌入式操作系统的几个重要指标 17

1.4.4嵌入式实时操作系统的特点 17

1.4.5嵌入式操作系统的分类 20

1.4.6通用操作系统与嵌入式操作系统的区别 20

1.5初识μC/OS-Ⅱ操作系统 21

1.5.1 μC/OS-Ⅱ的特点 22

1.5.2 μC/OS-Ⅱ内核文件组成 23

1.5.3如何学好μC/OS-Ⅱ 23

1.5.4一个简单的实例 24

参考文献 27

习题 27

第2章 嵌入式操作系统中的基本概念 28

2.1前后台系统 28

2.2调度 29

2.3临界区 29

2.4进程与线程 29

2.4.1进程的概念 29

2.4.2线程的概念 30

2.5任务与多任务 30

2.6任务切换 31

2.7死锁 32

2.8不可剥夺型内核 32

2.9可剥夺型内核 33

2.10可重入性 34

2.11优先级反转 36

2.11.1任务的优先级 36

2.11.2优先级反转 36

2.12事件 37

2.12.1信号量 37

2.12.2消息邮箱 38

2.12.3消息队列 39

2.12.4事件标志组 39

2.13互斥 40

2.13.1禁止中断 41

2.13.2禁止调度 41

2.13.3信号量 42

2.13.4测试并置位 42

2.14同步 43

2.15通信 44

2.16对存储器的要求 44

2.16.1代码存储器需求 44

2.16.2数据存储器需求 44

习题 45

第3章 任务管理 46

3.1核心任务管理 46

3.1.1临界区的处理 46

3.1.2任务的形式 48

3.1.3任务的状态 49

3.1.4任务控制块 49

3.1.5就绪表 52

3.1.6任务调度 55

3.1.7任务级的任务切换 57

3.1.8调度器上锁和解锁 60

3.1.9空闲任务 61

3.1.10统计任务 62

3.1.11 μC/OS-Ⅱ的初始化 64

3.1.12 μC/OS-Ⅱ的启动 66

3.2用户任务管理 68

3.2.1任务栈管理 69

3.2.2建立任务——OSTaskCreate()函数 77

3.2.3建立任务——OSTaskCreateExt()函数 80

3.2.4优先级变更——OSTaskChangePrio()函数 83

3.2.5删除任务——OSTaskDel()函数 86

3.2.6请求删除任务——OSTaskDelReq()函数 90

3.2.7堆栈检验——OSTaskStkChk()函数 92

3.2.8任务挂起——OSTaskSuspend()函数 96

3.2.9任务恢复——OSTaskResume()函数 98

3.2.10任务信息的获取——OSTaskQuery()函数 100

3.3部分其他系统服务功能 102

习题 103

第4章 中断与时间管理 104

4.1中断相关概念 104

4.1.1中断 104

4.1.2中断延迟时间 105

4.1.3中断响应时间 105

4.1.4中断恢复时间 105

4.1.5中断延迟、响应和恢复比较 106

4.1.6非屏蔽中断 106

4.2 μC/OS-Ⅱ的中断处理 106

4.2.1中断处理程序 106

4.2.2中断处理过程 109

4.3 μC/OS-Ⅱ的时钟节拍 110

4.3.1时钟节拍 110

4.3.2时钟节拍程序 112

4.3.3时钟节拍器的正确用法 114

4.4 μC/OS-Ⅱ的时间管理 114

4.4.1任务延时函数——OSTimeDly()函数 115

4.4.2按时分秒毫秒延时函数——OSTimeDlyHMSM()函数 116

4.4.3结束任务延时——OSTimeDlyResume()函数 118

4.4.4系统时间函数——OSTimeGet()和OSTimeSet() 120

习题 121

第5章 事件控制块 122

5.1基本概念 122

5.2将任务置于等待事件的任务列表中 124

5.3从等待事件的任务列表中删除任务 125

5.4在等待事件的任务列表中查找优先级最高的任务 126

5.5空闲事件控制块链表 127

5.5.1基本概念 127

5.5.2对事件控制块的基本操作 127

5.6初始化一个事件控制块——OS_EventWait ListInit()函数 128

5.7使一个任务脱离等待进入就绪——OS_EventTaskRdy()函数 129

5.8使一个任务进入等待事件发生状态——OS_EventTaskWait()函数 131

5.9由于等待超时而将任务置为就绪态——OS_EventTO()函数 131

习题 132

第6章 信号量与互斥信号量管理 133

6.1信号量管理 133

6.1.1概述 133

6.1.2建立信号量——OSSemCreate()函数 135

6.1.3删除信号量——OSSemDel()函数 137

6.1.4等待信号量——OSSemPend()函数 139

6.1.5发送信号量——OSSemPost()函数 142

6.1.6无等待地获取信号量——OSSemAccept()函数 144

6.1.7查询信号量的当前状态——OSSemQuery()函数 145

6.2互斥信号量管理 147

6.2.1概述 147

6.2.2建立互斥信号量——OSMutexCreate()函数 149

6.2.3删除互斥信号量——OSMutexDel()函数 151

6.2.4等待互斥信号量——OSMutexPend()函数 154

6.2.5释放互斥信号量——OSMutexPost()函数 157

6.2.6无等待地获取互斥信号量——OSMutexAccept()函数 161

6.2.7获取当前互斥信号量的状态——OSMutexQuery()函数 163

第7章 消息管理 167

7.1消息邮箱管理 167

7.1.1概述 167

7.1.2建立消息邮箱——OSMboxCreate()函数 169

7.1.3删除消息邮箱——OSMboxDel()函数 171

7.1.4等待邮箱中的消息——OSMboxPend()函数 173

7.1.5发出邮箱消息——OSMboxPost()函数 176

7.1.6发出邮箱消息——OSMboxPostOpt()函数 180

7.1.7无等待地从邮箱中获取消息——OSMboxAccept()函数 182

7.1.8查询邮箱的状态——OSMboxQuery()函数 184

7.2消息队列管理 186

7.2.1概述 186

7.2.2实现消息队列所需要的各种数据结构 188

7.2.3建立消息队列——OSQCreate()函数 190

7.2.4删除消息队列——OSQDel()函数 192

7.2.5等待消息队列中的一则消息——OSQPend()函数 194

7.2.6向消息队列发送一则(FIFO)消息——OSQPost()函数 197

7.2.7向消息队列发送一则(LIFO)消息——OSQPostFront()函数 199

7.2.8以可选方式(FIFO或LIFO)向消息队列发一则消息 202

7.2.9无等待地从消息队列中获取一则消息——OSQAccept()函数 205

7.2.10清空消息队列——OSQFlush()函数 206

7.2.11查询一个消息队列的状态——OSQQuery()函数 207

习题 209

第8章 事件标志组管理 210

8.1概述 210

8.1.1事件标志组的组成及管理函数 210

8.1.2事件标志组的配置常量 210

8.1.3实现事件标志组所需要的数据结构 211

8.2建立事件标志组——OSFlagCreate()函数 212

8.3等待事件标志——OSFlagPend()函数 214

8.4设置事件标志——OSFlagPost()函数 218

8.5删除事件标志组——OSFlagDel()函数 223

8.6无等待地获得事件标志——OSFlagAccept()函数 226

8.7查询事件标志组的状态——OSFlagQuery()函数 228

习题 230

第9章 内存管理 231

9.1概述 231

9.1.1基本原理 231

9.1.2内存管理函数 232

9.1.3内存管理函数配置常量 232

9.1.4内存控制块 233

9.2建立内存分区——OSMemCreate()函数 233

9.3获取一个内存块——OSMemGet()函数 236

9.4释放一个内存块——OSMemPut()函数 238

9.5查询内存分区的状态——OSMemQuery()函数 240

习题 242

第10章 μ/OS-Ⅱ的移植 243

10.1移植的基本方法 243

10.1.1移植的概念与一般要求 243

10.1.2 OS CPU.H代码的移植 245

10.1.3 OS CPU_C.C代码的移植 247

10.1.4 OS CPU_A.ASM代码的移植 250

10.1.5移植代码的测试 253

10.2基于MCS-51单片机的移植实例 253

10.2.1 OS CPU0H代码的移植 253

10.2.2 OS CPU_C.C代码的移植 254

10.2.3 OS CPU_A.ASM代码的移植 255

10.3基于ARM处理器的移植实例 261

10.3.1移植规划 261

10.3.2 OS CPU.H代码的移植 261

10.3.3 OS CPU_C.C代码的移植 262

10.3.4 OS CPU_A.ASM代码的移植 264

习题 276

第11章 应用实例 277

11.1基于MCS-51处理器的应用实例 277

11.1.1设计目标 277

11.1.2总体设计 277

11.1.3系统电路设计 280

11.1.4系统程序设计 281

11.2基于ARM处理器的应用实例 304

第12章 μC/OS-Ⅱ几个版本的区别简介 310

12.1 μC/OS-ⅡV2.52与V2.62的区别 310

12.2 μC/OS-ⅡV2.62与V2.76的区别 311

12.3 μC/OS-ⅡV2.76与V2.83的区别 312