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 将不会返回到中断前的任务,它会切换