logo资料库

uCOSIII中文版.pdf

第1页 / 共316页
第2页 / 共316页
第3页 / 共316页
第4页 / 共316页
第5页 / 共316页
第6页 / 共316页
第7页 / 共316页
第8页 / 共316页
资料共316页,剩余部分请下载后查看
序言
1、简介
1-1前后台系统
1-2实时内核
1-3实时系统(RTOS)
1-4uC/OS-III
1-5uC/OS,uC/OS-II,uC/OS-III的性能对比
1-6这本书的编排方式
1-7探针uC/Probe
1-8规定
1-9章节目录
2、目录和文件
2-1应用代码
2-2CPU
2-3板级支持包(BSP)
2-4uC/OS-III中独立于CPU的源文件
2-5uC/OS-III中CPU相关的源代码
2-6uC/CPU,CPU相关代码
2-7uC/LIB可移植的函数库
2-8概要
3、开始学习uC/OS-III
3-1单任务应用
3-2内核对象与多任务应用
4、临界段
4-1关中断
4-1-1测量关中断时间
4-2锁住调度器
4-2-1测量锁调度器时间
4-3uC/OS-III与长临界段
4-4总结
5、任务管理
5-1设置任务优先级
5-2堆栈空间大小的确定
5-3检测任务堆栈的溢出
使用MMU或MPU
堆栈溢出检测寄存器
基于软件的堆栈溢出检测
计算空闲堆栈空间
5-4任务管理服务
5-5内部任务管理
5-5-1任务状态
5-5-2任务控制块TCB
5-6内部任务
5-6-1空闲任务OS_IdleTask()
5-6-2时基任务OS-TickTask()
5-6-3统计任务OS_StatTask()
5-6-4定时器任务OS_TmrTask()
5-6-5中断处理任务OS_IntQTask()
5-7总结
6、就绪列表
6-1优先级
6-2就绪列表
6-3添加任务到就绪队列
6-4总结
7、调度
7-1抢占式调度
7-2调度点
7-3循环轮转调度
7-4调度的内部实现
7-4-1OSSched()
7-4-2OSIntExit()
7-4-3OS_SchedRoundRobin()
7-5总结
8、上下文切换
8-1OSCtxSw()
8-2OSIntCtxSw()
8-3总结
9、中断管理
9-1CPU的中断处理
9-2典型的中断服务程序
9-3短中断服务程序(ISR)
9-5每个中断向量指向不同的地址
9-6直接提交和延迟提交
9-6-1直接提交
9-6-2延迟提交方式
9-7直接提交VS延迟提交
9-8系统时基
9-9总结
10、挂起队列
10-1总结
11、时间管理
11-1OSTimeDly()
11-2OSTimeDlyHMSM()
11-3OSTimeDlyResume()
11-4OSTimeSet()和OSTimeGet()
11-5OSTimeTick()
12、软件定时器管理
12-1一次性定时模式
12-3有初始定时周期模式
12-4内部定时器管理
12-4-1内部定时器管理-定时器状态
12-4-2定时器内部管理——OS_TMR
12-4-3内部定时器管理——定时器任务
12-4-4内部定时器管理——定时器列表
12-5总结
13、资源管理
13-1关中断
13-2锁调度器
13-3信号量
13-3-1二值信号量
13-3-2信号量计数值
当共享资源同时可以被多个任务访问时,信号量计数值用于标记共享资源能同时被多少个任务访问。例如,缓冲池
13-3-3信号量需注意的事项
13-3-4信号量的结构
13-3-5优先级反转
13-4互斥信号量mutex
13-4-1mutex的内部机制
13-5用信号量代替mutex
13-6死锁
13-7总结
14、同步
14-1信号量
14-1-1单向同步
14-1-2信号量计数值
14-1-3多个任务等待一个信号量
14-2任务内建信号量
14-2-1挂起(等待)任务信号量
14-2-2提交(标记)任务信号量
14-2-3双向同步
14-3事件标志组
14-3-1使用事件标志组
14-3-2事件标志组内部结构
14-4多任务同步
14-5总结
15、消息传递
15-1消息
15-2消息队列
15-3任务的消息队列
15-4双向通信
15-5流量控制
15-6保持数据在作用域中
15-7使用消息队列
15-8客户端和服务器端
15-9消息队列的组成
15-10总结
16、挂起多个对象
16-1总结
17、内存管理
17-1创建一个内存分区
17-2获得内存分区中的内存块
17-3归还内存块给内存分区
17-4使用内存分区
17-5总结
18、移植uC/OS-III
18-1uC/CPU
18-2uC/OS-III移植
18-3板级支持包BSP
18-4总结
主要内容
信号量结构
消息队列结构
事件标志组结构
挂起队列结构
任务创建
任务状态
时基列表
就绪列表
内核对象
软件定时器结构
任务
时基任务
统计任务
中断处理任务
软件定时器任务
空闲任务
uC/OS-III 中文资料
uC/OS-III 中文资料 译者序 很高兴终于完成了 uC/OS-III 嵌入式系统的翻译,翻译从 2011 年 10 月 15 日开始到 2011 年 11 月 3 日为止,共 20 天时间,平均每天 5 个小时。本想将 uC/OS-III 函数的 API 部分也翻译的,但毕竟考研更 甚于爱好,我得为 2013 年 1 月的考研做准备呀~~。 在此,我要感谢: 1、我的导师:乐光学教授。是您经常带我去公司拓展视野, 并让我坚定不移地往嵌入式方面发展。 2、我的师傅:张雪强博士。是您无偿提供给我一些开发板, 作为回报,帮您的店铺宣传一下 http://as-robot.taobao.com/ 3、还有我的亲朋好友们。 特 别 是 今 天 上 午 , 用 了 3 小 时 终 于 在 MDK4.0 编 译 器 上 将 uC/OS-III 移植到 stm32f103rb 处理器上,并成功运行。移植的步骤, 我也会发布到网上的,谢谢大家。 我的 QQ 号码是 522430192,我的邮箱是 522430192@qq.com,希 望大家多多联系我,共同学习,共同进步。 :屈环宇 :嘉兴学院 :2011 年 11 月 3 日晚
uC/OS-III 中文资料 序言 什么是 uC/OS-III? uC/OS-III(Micro C OS Three 微型的 C 语言编写的操作系统第 3 版)是一个可升级的,可固化的,基于优先级的实时内核。它对任务 的个数无限制。uC/OS-III 是一个第 3 代的系统内核,支持现代的实 时内核所期待的大部分功能。例如资源管理,同步,任务间的通信等 等。然而,uC/OS-III 提供的特色功能在其它的实时内核中是找不到 的,比如说完备的运行时间测量性能,直接地发送信号或者消息到任 务,任务可以同时等待多个内核对象等。 为什么命名一个新的版本? uC/OS 系列,第一代产生于 1992。经过了多年的使用和上千人 的反馈,已经产生了很多的进化版本。 uC/OS-III 是这些反馈和经验的总结。在 uC/OS-II 中很少使用的 功能已经被删除或者被更新,添加了更高效的功能和服务。其中最有 用的功能应该是时间片轮转法(round robin),这个是 uC/OS-II 中不支 持的,但是现在已经是 uC/OS-III 的一个功能了。 uC/OS-III 会提供新的功能以更好地适应新出现的处理器。特别 的,uC/OS-III 被设计用于 32 位处理器,但是它也能在 16 位或 8 位 处理器中很好地工作。
uC/OS-III 中文资料 uC/OS-III 的目标 uC/OS-III 最主要的目标是提供一流的实时内核以适应更新很快 的嵌入式产品。使用像 uC/OS-III 那样具有雄厚的基础和稳定的框架 的商业实时内核,能够帮助设计师们处理日益复杂的嵌入式设计。 这本书中的目标,是为了介绍 uC/OS-III 的内部工作。了解这些会 帮助读者实现逻辑上的设计方案,协调统一硬件和软件会让你对整体 的设计很有把握。
uC/OS-III 中文资料 1111、简介 在重要的地方,实时系统凭借其系统性的计算和及时的处理能力 工作着。一共有 2 种类型的实时系统:软实时系统和硬实时系统。 软实时系统和硬实时系统的区别在于一旦没有在规定的时间内完 成任务所导致后果的严重性。超过时限后所得到的结果即使正确也可 能是毫无作用的。 硬实时系统中,运算超时是不允许发生的。在很多情况下,超时 会导致巨大的灾难,会威胁人们的生命安全。但是在软实时系统中, 超时不会导致严重后果。 实时系统的应用范围很广,但很多实时系统是嵌入式的。一个嵌 入式系统是计算机中添加操作系统,但是用户不公认这是个计算机。 以下列出嵌入式系统的一些例子 航空航天 通讯 飞行管理系统 路由器 喷射发动机控制 交换机 武器系统 手机 加工控制 化学工厂 工厂自动化 食品加工 语音 计算机外围设备 机器人 MP3 播放器 打印机
uC/OS-III 中文资料 放大器和调谐器 扫描仪 汽车制造业 家用电器 视频 广播设备 高清电视 反锁死制动系统 空气调节机 气候控制 引擎控制 GPS 恒温器 大型家用电器 办公室自动化 等等 传真机 复印机 实时系统的设计,调试和配置比非实时系统难得多。 1-11-11-11-1 前后台系统 前后台系统 前后台系统 前后台系统 简单的小型系统设计一般是基于前后台的或者无限循环的系统。 包含一个无限循环的模块实现需要的操作(后台)。中断处理程序实 现异步事件(前台)。前台也叫做中断级,后台也叫作任务级。 临界操作应该在任务级中被执行,不可避免地必须在中断处理程 序中执行也要确保是在很短的时间内完成。因为这会导致 ISR 占用更 长的时间。通常的,ISR 中使能相关的信息而在后台程序中执行相应 的操作。这叫做任务级响应。任务级响应的时间依赖于后台循环一次 所需的时间,通常这不是一个固定常量。另外,如果其中的代码稍有 改动,那么循环一次所用的时间也将有所变化。
uC/OS-III 中文资料 大多数高产量低成本微控制器的应用软件(例如微波炉,电话玩 具等)都是基于前后台系统的。 1-21-21-21-2 实时内核 实时内核 实时内核 实时内核 实时内核是一个能管理 MPU、MCU、DSP 时间和资源的软件。 实时内核的应用包括迅速地响应,可靠地完成工作的各个部分。 任务(也叫做线程)是一段简单的程序,运行时完全地占用 CPU。 在单 CPU 中,任何时候只有 1 个任务被执行。 内核的责任是管理任务,也做多任务处理。多任务处理的作用是 协调和切换多个任务依次享用 CPU。多任务处理最大化 CPU 的功能
uC/OS-III 中文资料 同时会让我们感觉是多个 CPU 在同时运行。多任务处理也有利于处 理模块化的应用。多任务处理一个最重要的方面在于它允许程序员管 理复杂的实时应用。在多任务处理中程序员可以简单的维护和升级产 品。 uC/OS-III 是一个抢占式内核,这意味着 uC/OS-III 总是执行最 重要的就绪任务,如图 1-2。 F1-2(1) 一个低优先级的任务正在被执行 F1-2(2)发生一个中断,CPU 转向 ISR F1-2(3)ISR 响应中断请求设备,但是 ISR 只做非常少的工作。ISR 应该标记或发送消息到一个高优先级的任务,让中断能够快速处理完 毕。例如,如果一个中断来自于以太网控制器,ISR 标记任务,在任 务级响应以太网控制器。 F1-2(4)当 ISR 执行完毕,uC/OS-III 注意到 ISR 创建的一个更高优 先级的任务就绪。uC/OS-III 将不会返回到中断前的任务,它会切换
分享到:
收藏