从基本原理到实现 本文描述FreeRTOS(飞拓)是如何实现的。 如果你 1. 希望修改 FreeRTOS 源代码 2. 移植实时内核到另一个微控制器或者原型板(prototyping board) 3. 第一次接触 FreeRTOS,希望得到关于它们在操作和实现上的更多信息 这些文档会有用。 本文档分为两个章节: 1. 基本原理和 RTOS 概念 包括多任务的背景信息和基本实时概念,这是为初学者准备的(is intended for beginners) 2. 从底向上(from the bottom up)解释实时内核源代码 FreeRTOS 实时内核已经移植到许多不同的微控制器架构下。这份文档是以 Atmel AVR 为范例,因为: 1. AVR 架构简单 2. 有免费可用的开发工具 WinAVR (GCC) development tools. 3. 非常便宜的原型板 STK500 prototyping board 在本文的最后,还一步一步地详细描述了一个完整的上下文切换(context switch)。 RTOS 基本原理 多任务 调度 上下文切换 实时应用 实时调度 这一节提供一个关于实时和多任务概念的简介。读下一节之前必须理解这些概念。 多任务(Mu ltitasking) 在一个操作系统内部,内核[kernel]是最核心的部件。像 Linux 那样的操作系统使用的内核,从表面上看(seemingly),允许用户并发(simultaneously)访问 计算机。多个用户似乎(apparently)可以并行(concurrently)执行多个程序。 在操作系统的控制下,每个正在执行的程序就是一个任务[task]。如果一个操作系统能够以这种方法执行多个任务,这就叫做多任务[multitasking]. 多任务操作系统的使用可以简化应用程序的设计: 1. 操作系统的多任务和任务间通信的机制允许复杂的应用程序被分成一系列更小的和更多的可以管理的任务。 2. (程序的)划分(partitioning)让软件测试更容易, 团队工作分解(work breakdown within teams),也有利于代码复用。 3. 复杂的定时和先后顺序的细节 可以从应用程序代码中 删除。(因为)这成为操作系统的职责。 多任务Vs 并发 传统的(conventional)的处理器同时只能执行一个任务。但通过快速的任务切换,一个多任务操作系统可以使它看起来(appear)好像每个任务并行执行一样。这可以下面的示意图来描述(depicted)。它显示了有关(with respect to)时间的3 个任务的执行模式。任务名用颜色标注出来,写在左手边。时间从左到右增加,相应的颜色的线条 显示该任务在某个特殊时间正在执行。上面的图 演示的是用户所觉察到的并行执行...