搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
μC/OS-??标准教程
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787115204424
  • 作      者:
    杨宗德,张兵编著
  • 出 版 社 :
    人民邮电出版社
  • 出版日期:
    2009
收藏
编辑推荐
  《μC/OS-2标准教程》特点:逐句分析u(3/OS-II(2.80版本)源代码,详细分析系统原理。以Microsoft vc++环境为平台,配备完整模拟应用案例。以S3C24 10(ARM9)为处理器平台,分析硬件平台相关代码,逐步介绍移植过程。《μC/OS-2标准教程》主要介绍uC/OS-II(2.80版本)内核基本原理(包括任务及任务调度、系统启动与实始化、任务间通信与同步、内存管理),分析源代码及应用案例,并介绍在ARM9内核处理器(S3C:2410)上的移植和uC/TCP-IP协议栈设计方法。
展开
内容介绍
  《μC/OS-2标准教程》主要介绍当前最新版本的μC/OS-II(2.80版本)实时操作系统,包括内核分析及其在ARM 9内核处理器(S3C2410)上的移植方法。内核方面主要包括μC/OS-II操作任务管理、任务级任务调度和中断级任务调度、系统启动与初始化、时钟任务管理、任务间通信机制、任务间单事件和多事件同步机制、内存管理方式。《μC/OS-2标准教程》还通过具体实例介绍μC/OS-II系统在以ARM 9为内核的嵌入式处理器S3C2410上的移植方法,最后对轻量级TCP/IP协议栈——μC/TCP-IP协议栈进行了概要介绍。《μC/OS-2标准教程》可以作为高等院校学习嵌入式操作系统原理的专业教材,也适合有意从事嵌入式系统开发的工程技术人员阅读。《μC/OS-2标准教程》假定读者有较好的C语言基础和数据结构基础知识,如果读者对ARM处理器有一定的了解,将更容易掌握《μC/OS-2标准教程》内容。
展开
精彩书摘
  在上一小节的IRO中断处理及调度汇编代码中,当有一个中断发生时,系统使用汇编语言使全局变量OSIntNesting自加1。通常,μC/OS-II操作系统可以调用函数OSIntEnter()对全局变量OSIntNesting进行自加操作。
  在中断处理过程中,不允许进行任务管理、事件管理及任务调度等操作。在所有任务及事件管理的程序中,都有对OSIntNesting全局变量值进行判断的语句。
  这样处理的目的是为尽量减少中断处理时间。
  以下是对OSIntExit()函数的几点说明。
  (1)在调用此函数前,要求禁止中断。
  (2)进入中断OSIntEnter()和退出中断OSInIExit()操作需要配套使用,因为在退出中断时,OSIntExit(1需要对全局变量OSIntNesting进行自减操作。当然,程序员可以不调用OSIntEnter()而直接在中断服务程序中对OSIntNesting进行自加操作,但是在退出时一定要调用OSIntExit()。
  (3)中断嵌套次数的最大值为255,否则会发生翻转,这是由OSIntNesting的类型(INT8U)决定的。此函数源代码如下。
  在3.3.2小节的IRO中断处理及调度汇编代码中,当完成中断服务程序执行后,需要调用系统函数OSIntExit()函数。在此程序中,除了与函数OSIntEnter()完成配套操作外,在允许的条件下(内核正在执行、没有进入中断嵌套且调度器未上锁),还需要完成中断级任务调度。 此函数基本功能如下。
展开
目录
第1章 μC/OS-II与嵌入式实时操作系统 1
1.1 实时操作系统概述 2
1.1.1 嵌入式系统软件结构 2
1.1.2 实时操作系统内核概述 3
1.1.3 常见实时操作系统简介 4
1.2 μC/OS-II内核源代码文档结构 6
1.2.1 构建μC/OS-II模拟编程环境 6
1.2.2 测试程序源代码说明 8
1.3 μC/OS-II基本概念 9
1.3.1 嵌入式应用程序开发模式 9
1.3.2 可重入函数与不可重入函数 10
1.3.3 μC/OS-II临界状态管理 11
1.4 小结 12
1.5 习题 13

第2章 μC/OS-II任务管理 15
2.1 案例引入:基于mC/OS-II的多任务管理 16
2.1.1 μC/OS-II多任务示例运行结果 16
2.1.2 μC/OS-II多任务代码分析 16
2.2 μC/OS-II任务基本属性 17
2.2.1 C语言可执行代码结构 17
2.2.2 μC/OS-II任务结构 18
2.2.3 μC/OS-II任务栈 19
2.2.4 μC/OS-II任务控制块 21
2.2.5 μC/OS-II任务优先级 26
2.2.6 μC/OS-II任务状态 26
2.2.7 系统任务 28
2.3 μC/OS-II任务管理函数源码分析 32
2.3.1 创建任务 32
2.3.2 初始化任务栈 35
2.3.3 初始化任务控制块 37
2.3.4 扩展创建任务 40
2.3.5 删除任务 42
2.3.6 请求删除任务 45
2.3.7 挂起任务 47
2.3.8 恢复任务 49
2.3.9 设置任务名称 50
2.3.10 获取任务名称 52
2.3.11 读取任务TCB信息 53
2.4 应用实例:多任务管理应用分析 55
2.4.1 基本功能 55
2.4.2 程序实现及源码分析 55
2.5 小结 58
2.6 习题 58

第3章 μC/OS-II任务调度与系统初始化 59
3.1 μC/OS-II任务级任务调度机制 60
3.1.1 μC/OS-II调度算法 60
3.1.2 μC/OS-II任务就绪表 60
3.1.3 获取最高优先级就绪任务 62
3.2 μC/OS-II任务级任务调度 63
3.2.1 任务级任务调度算法分析 63
3.2.2 任务级任务切换OS_TASK_SW() 64
3.2.3 调度器上锁与解锁 66
3.2.4 修改任务优先级 67
3.3 μC/OS-II中断级任务调度 69
3.3.1 μC/OS-II中断管理 69
3.3.2 IRQ中断处理过程及中断级调度 70
3.3.3 OSIntEnter()进入中断管理函数 72
3.3.4 OSIntExit()退出中断管理函数 72
3.3.5 中断级任务调度切换函数OSIntCtxSw() 73
3.3.6 FIQ中断处理过程及中断级调度 74
3.4 任务级任务调度实例 76
3.4.1 程序功能 76
3.4.2 程序实现及源码分析 76
3.5 小结 78
3.6 习题 79

第4章 μC/OS-II系统启动与时钟任务管理 81
4.1 μC/OS-II系统启动过程分析 82
4.1.1 μC/OS-II应用程序开发模式 82
4.1.2 OSInit()函数初始化分析 82
4.1.3 OSStart()函数启动系统分析 87
4.1.4 运行最高优先级任务 87
4.2 时钟任务与时钟管理 88
4.2.1 创建系统时钟任务 88
4.2.2 时钟中断服务程序OSTimeTick() 89
4.2.3 系统时间管理函数源码分析 91
4.3 小结 95
4.4 习题 95

第5章 μC/OS-II任务间通信机制 97
5.1 μC/OS-II事件管理机制 98
5.1.1 事件控制块 98
5.1.2 事件控制块管理 99
5.2 单一消息传递事件:消息邮箱 101
5.2.1 消息邮箱基本原理 101
5.2.2 创建消息邮箱 101
5.2.3 阻塞式读取消息 103
5.2.4 非阻塞式读取消息 106
5.2.5 发送消息到消息邮箱 107
5.2.6 按指定方式发送数据到消息邮箱 110
5.2.7 删除消息邮箱 111
5.2.8 获取消息邮箱基本信息 114
5.2.9 消息邮箱应用实例 115
5.3 多消息传递事件:消息队列 117
5.3.1 消息队列基本原理 117
5.3.2 创建消息队列 119
5.3.3 发送消息到队列尾 121
5.3.4 发送消息到队首 122
5.3.5 按指定方式发送消息 124
5.3.6 阻塞式读取消息 125
5.3.7 非阻塞式读取消息 128
5.3.8 删除消息队列 129
5.3.9 获取消息队列信息 132
5.3.10 清理消息队列空间 133
5.3.11 消息队列应用实例 134
5.4 小结 137
5.5 习题 138

第6章 μC/OS-II任务间单事件同步机制 139
6.1 任务同步机制:信号量 140
6.1.1 信号量基本原理 140
6.1.2 创建信号量 140
6.1.3 阻塞式获取信号量 141
6.1.4 非阻塞式获取信号量 143
6.1.5 释放信号量 144
6.1.6 删除信号量 145
6.1.7 查询信号量信息 147
6.1.8 设置信号量的值 148
6.1.9 信号量实现生产-消费问题应用实例 149
6.2 互斥事件管理机制:互斥锁 153
6.2.1 互斥锁与优先级反转 153
6.2.2 创建互斥锁 156
6.2.3 阻塞式获取互斥锁 158
6.2.4 非阻塞式获取互斥锁 161
6.2.5 释放互斥锁 162
6.2.6 删除互斥锁 164
6.2.7 获取互斥锁基本信息 167
6.3 小结 168
6.4 习题 169

第7章 μC/OS-II多事件同步机制 171
7.1 事件组标志同步机制基本原理 172
7.1.1 事件组标志基本原理 172
7.1.2 初始化事件标志组控制块 174
7.2 事件组标志基本操作 175
7.2.1 创建事件组标志 175
7.2.2 阻塞式等待事件组标志 176
7.2.3 非阻塞式等待事件组标志 182
7.2.4 修改事件组标志状态 184
7.2.5 删除事件标志组 187
7.2.6 获取任务就绪标志 190
7.2.7 查询事件组标志信息 190
7.2.8 获取事件组标志名称 191
7.2.9 设置事件组标志名称 192
7.3 使用事件组标志实现读写锁功能案例 193
7.3.1 案例功能及原理说明 193
7.3.2 程序源代码分析 195
7.4 小结 197
7.5 习题 197

第8章 μC/OS-II内存分区管理 199
8.1 内存分区管理基本原理 200
8.1.1 μC/OS-II内存分区管理机制 200
8.1.2 内存分区控制块数据空间初始化 201
8.2 μC/OS-II内存分区管理操作 202
8.2.1 创建内存分区 202
8.2.2 申请一个内存分区块 204
8.2.3 释放内存分区块 205
8.2.4 查询内存分区基本信息 206
8.2.5 读取/设置内存分区名称 207
8.3 μC/OS-II内存管理应用实例 210
8.3.1 应用程序基本功能 210
8.3.2 应用程序源代码分析 211
8.4 小结 212
8.5 习题 212

第9章 μC/OS-II在S3C2410处理器上的移植案例分析 213
9.1 ARM可执行文件结构分析 214
9.1.1 可执行文件结构分析 214
9.1.2 ADS下可执行文件的编译连接过程分析 215
9.1.3 移植第一步:设置代码存储加载位置 217
9.2 移植第二步:编写系统启动代码 218
9.2.1 开始执行,禁止中断 219
9.2.2 初始化栈空间 219
9.2.3 复制异常代码与异常向量地址 220
9.3 移植第三步:中断处理与时钟中断任务 221
9.3.1 S3C2410中断向量 221
9.3.2 S3C2410中断处理硬件结构 223
9.3.3 移植时对中断的处理 225
9.3.4 示例:μC/OS-II系统时钟中断任务管理 228
9.4 移植第四步:修改与调度相关的汇编代码 229
9.4.1 临界状态问题 229
9.4.2 数据类型问题 230
9.4.3 任务调度问题与钩子函数问题 231
9.5 移植后续工作:添加硬件驱动程序 232
9.5.1 重新写C函数以实现信息从串口输出 232
9.5.2 实现串口驱动程序 234
9.5.3 重写堆栈空间初始化函数 237
9.6 小结 238
9.7 习题 238

第10章 μC/TCP-IP协议栈设计分析 239
10.1 TCP/IP协议栈概述 240
10.1.1 标准TCP/IP协议栈模型 240
10.1.2 BSD面向连接的TCP通信编程过程 241
10.1.3 BSD面向无连接的UDP通信实现 242
10.1.4 轻量级TCP/IP协议栈和标准TCP/IP协议栈比较 242
10.1.5 μC/TCP-IP协议栈介绍及特点 243
10.2 μC/TCP-IP协议栈设计 243
10.2.1 μC/TCP-IP协议栈基本框架 243
10.2.2 进程基本形式 245
10.2.3 接收数据过程 245
10.2.4 发送数据过程 246
10.3 μC/TCP-IP协议栈实现 247
10.3.1 IP协议栈设计及实现 247
10.3.2 TCP协议设计及实现 249
10.3.3 UDP协议设计及实现 252
10.3.4 ICMP协议设计及实现 253
10.3.5 ARP设计及实现 255
10.3.6 缓冲区设计及管理 257
10.4 小结 260
10.5 习题 260

附录 编译程序工具简介 261
A.1 Visual C++ 6.0集成开发环境 261
A.2 ADS集成开发环境 264
A.3 Source Insight源代码查看工具 269
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证