http://www.FreeRTOS.org
USING THE F
REE
RTOS
REAL TIME KERNEL
A Practical Guide
Richard Barry
F
REE
RTOS
实时内核
实用指南
FreeRTOS
Designed For Microcontrollers;
© 2009 Richard Barry. Distribution or publication in any form is strictly prohibited.
1
http://www.FreeRTOS.org
其实我并没有决定
这篇文章的英文原版我是在www.FreeRTOS.net上下½½得到的。
是否要在系统中½用FreeRTOS,½然我想要的也仅仅是一个实时内核,½然更重要的
是免费。之所以翻译这篇文章倒不是因为FreeRTOS有多么优秀,完全是因为这篇文章
还不算太长。而且FreeRTOS.net仿½致力于这个内核在½内的推广,也做了不少中文
化的工½。所以我是打算利用工½之½,边看边译,到读完这篇文档,也就有个中文版
了。如果FreeRTOS.net不弃的话,我倒是情愿放到这个½站上与大家共享。
另外,我本人很懒,没有翻译附½,而且译完正文后也没有做过任½检查。所以如
果有任½问题,请不要骂我。
Zou Changjun
yisfx@126.com
FreeRTOS
Designed For Microcontrollers;
© 2009 Richard Barry. Distribution or publication in any form is strictly prohibited.
2
http://www.FreeRTOS.org
第一章
任务管理
FreeRTOS
Designed For Microcontrollers;
© 2009 Richard Barry. Distribution or publication in any form is strictly prohibited.
3
http://www.FreeRTOS.org
1.1
概览
[附½中提供了½用 FreeRTOS
源代码的实用信息]
小型多任务嵌入式系统简介
不同的多任务系统有不同的侧重点。以工½站和桌面电脑为例:
早期的处理器非常昂贵,所以那时的多任务用于实现在单处理器上支持多用户。这
类系统中的调度算法侧重于让每个用户”公平共享”处理器时间。
随着处理器功½越来越强大,价格却更偏宜,所以每个用户½可以独占一个或多个
处理器。这类系统的调度算法则设计为让用户可以同时运行多个应用程序,而计算
机也不会显得反应迟钝。例如某个用户可½同时运行了一个字处理程序,一个电子
表格,一个邮件客户端和一个
WEB
浏览器,并且期望每个应用程序任½时候½½
对输入有足够快的响应时间。
桌面电脑的输入处理可以½类为”½实时”。为了保证用户的最½½验,计算机对每
个输入的响应应½限定在一个恰½的时间范围——½是如果响应时间超出了限定范围,
并不会让人觉得这台电脑无法½用。比如说,键盘操½必须在键按下后的某个时间内½
出明显的提示。½如果按键提示超出了这个时间,会½得这个系统看起来响应太慢,而
不致于说这台电脑不½½用。
仅仅从单处理器运行多线程这一点来说,
实时嵌入式系统中的多任务与桌面电脑的
多任务从概念上来讲是相似的。
½实时嵌入式系统的侧重点却不同于桌面电脑——特别
是½嵌入式系统期望提供”硬实时”行为的时候。
硬实时功½必须在给定的时间限制之内完成——如果无法做到即意味着整个系统
的绝对失败。½½的安全气囊触发机制就是一个硬实时功½的例子。安全气囊在撞击发
生后给定时间限制内必须弹出。如果响应时间超出了这个时间限制,会½得驾驶员受到
伤害,而这原本是可以避免的。
大多数嵌入式系统不仅½满足硬实时要求,也½满足½实时要求。
FreeRTOS
Designed For Microcontrollers;
© 2009 Richard Barry. Distribution or publication in any form is strictly prohibited.
4
http://www.FreeRTOS.org
术语说明
在
FreeRTOS
中,每个执行线程½被称为”任务”。在嵌入式社区中,对此并没有一
个公允的术语,½我更喜欢用”任务”而不是”线程”,因为从以前的经验来看,线程具有
更多的特定含义。
本章的目的是让读者充分了解:
在应用程序中,FreeRTOS 如½为各任务分配处理时间。
在任意给定时刻,FreeRTOS 如½选择任务投入运行。
任务优先级如½½响系统行为。
任务存在哪些状态。
此外,还期望½够让读者解:
如½实现一个任务。
如½创建一个或多个任务的实例。
如½½用任务参数。
如½改变一个已创建任务的优先级。
如½删除任务。
如½实现周期性处理。
空闲任务½时运行,可以用来干什么。
本章所介绍的概念是理解如½½用
FreeRTOS
的基础,也是理解基于
FreeRTOS
的应用程序行为方式的基础——因此,本章也是这本书中最为详½的一章。
FreeRTOS
Designed For Microcontrollers;
© 2009 Richard Barry. Distribution or publication in any form is strictly prohibited.
5
评论