μC/OS II(Micro-Controller Operating System Two)是一个可以基于ROM运行的、可裁剪的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,适合很多商业操作系统性能相当的实时操作系统(RTOS)。为了提供最好的移植性能,μC/OS II最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。 μC/OS II可以简单的视为一个多任务调度器,在这个任务调度器之上完善并添加了和多任务操作系统相关的系统服务,如信号量、邮箱等。其主要特点有公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化。内核属于抢占式,最多可以管理60个任务。从1992年开始,由于高度可靠性、鲁棒性和安全性,μC/OS II已经广泛使用在从照相机到航空电子产品的各种应用中。
μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。 1) 核心部分(OSCore.c) 是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。能够维持系统基本工作的部分都在这里。 2) 任务处理部分(OSTask.c) 任务处理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为μC/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。 3) 时钟部分(OSTime.c) μC/OS-II中的最小时钟单位是timetick(时钟节拍)。任务延时等操作是在这里完成的。 4) 任务同步和通信部分 为事件处理部分,包括信号量、邮箱、消息队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。 5) 与CPU的接口部分 是指μC/OS-II针对所使用的CPU的移植部分。由于μC/OS-II是一个通用性的操作系统,所以对于关键问题上的实现,还是需要根据具体CPU的具体内容和要求作相应的移植。这部分内容由于牵涉到SP等系统指针,所以通常用汇编语言编写。主要包括中断级任务切换的底层实现、任务级任务切换的底层实现、时钟节拍的产生和处理、中断的相关处理部分等内容。
任务优化:摘要:μC/OS-II是一种适用于嵌入式系统的抢占式实时多任务操作系统,开放源代码,便于学习和使用。介绍μC/OS-II在任务级和中断级的任务切换原理,以及这一操作系统基于嵌入式系统的对于中断的处理;相对于内存资源较少的单片机,着重讨论一种优化的实用堆栈格式和切换形式,以提高资源的利用率;结合MSP430单片机,做具体的分析。 关键词:实时多任务操作系统 μC/OS MSP430 中断 堆栈 引 言 在嵌入式操作系统领域,由Jean J. Labrosse开发的μC/OS,由于开放源代码和强大而稳定的功能,曾经一度在嵌入式系统领域引起强烈反响。而其本人也早已成为了嵌入式系统会议(美国)的顾问委员会的成员。 不管是对于初学者,还是有经验的工程师,μC/OS开放源代码的方式使其不但知其然,还知其所以然。通过对于系统内部结构的深入了解,能更加方便地进行开发和调试;并且在这种条件下,完全可以按照设计要求进行合理的裁减、扩充、配置和移植。通常,购买RTOS往往需要一大笔资金,使得一般的学习者望而却步;而μC/OS对于学校研究完全免费,只有在应用于盈利项目时才需要支付少量的版权费,特别适合一般使用者的学习、研究和开发。自1992第1版问世以来,已有成千上万的开发者把它成功地应用于各种系统,安全性和稳定性已经得到认证,现已经通过美国FAA认证。
分时操作系统将系统处理机时间与内存空间按一定的时间间隔(划分时间片),采用轮转运行方式轮流地切换给各终端用户的程序使用(例如规定每个作业每次只能运行一个时间片)。由于时间间隔很短,每个用户就感觉像独占全机一样,这样就解决了主机共享问题。而对于人机交互,为实现用户键入命令后能对自己的作业及其运行及时控制或修改,各个用户的作业都必须留在内存中(作业在磁盘上是不能运行的),用时间片进行切换管理。分时操作系统的特点是可有效增加资源的使用率,支持人机交互与资源共享。例如UNIX系统就采用了剥夺式动态优先的CPU调度以支持分时操作。
简而言之,分时操作系统的核心原理在于将作业直接放入内存,并引入了时间片的概念,采用轮转运行的方式,规定每个作业每次只能运行一个时间片,然后就暂停该作业并立即调度下一个作业运行。在不长的时间内使所有的作业都执行一个时间片的时间,便可以使每个用户都能及时地与自己的作业进行交互,从而使用户的请求得到及时响应。这样就解决了在分时系统中最重要的及时接收、及时处理问题。
多路性:两者都具有多路性。软实时与分时系统中的多路性表现为系统按分时原则为多个任务终端用户服务;硬实时则指系统周期性地对多路现场信息进行采集以及对多个对象或多个执行机构进行控制。
独立性:两者都具有独立性。每个终端用户在向分时系统提出服务请求时,是彼此独立的操作,互不干扰;而在实时控制系统中信息的采集和对对象的控制,也彼此互不干扰。
及时性:实时信息系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定;而实时控制系统的及时性,则是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级、百毫秒级直至毫秒级,甚至有的要低于100微秒。
交互性:实时信息处理系统具有交互性,但这里人与系统的交互,仅限于访问系统中某些特定的专用服务程序。它不像分时系统那样能向终端用户提供数据处理服务、资源共享等服务。
可靠性:分时系统要求系统可靠,相比之下,实时系统则要求系统高度可靠。因为任何差错都可能带来巨大的经济损失甚至无法预料的灾难性后果。因此,在实时系统中,采取了多级容错措施来保证系统的安全及数据的安全。