作者:Adam Taylor
介绍完操作系统后我将会在Zynq SoC上演示,我打算首先在MicroZed上实现的操作系统就是Micrium公司的uC/OSiii。这是一个硬式实时操作系统,可以点击这里下载。
该OS已经用于大量很有趣的系统中,而且目前正在MISRA-C、DO178B level A、SIL3/4和IEC61508的认证过程中。因此,它将会对许多使用Zynq SoC的设计者具有很大的吸引力。
我在我的第一个OS例子中选择Micrium公司的uC/OSiii是因为我非常有兴趣将Zynq SoC用于工业、军用、航空航天以及其他具有挑战性的应用领域。我认为在应用领域中Zynq SoC的好处是显而易见的。与其他同类应用相比,Zynq Soc的应用被证明有SWAP-C(尺寸、重量和功耗)和性能上的优点。
不过,在我开始讨论OS实现之前,我想先提供一些实时操作系统(RTOSes)的背景信息。
RTOS与一般的操作系统有什么不同?RTOS具有确定性,也就是说系统响应会满足一个定义的截止时间。
system?但是每个满足截止时间的系统都被归为实时系统吗?
事实上,不是。
根据截止时间的不同处理方式,分为3类RTOS
•硬式RTOS——缺失截止时间被归为系统故障
•固式RTOS——偶尔缺失截止时间可被接受,不归为故障
•软式RTOS——缺失截止时间仅仅减少结果的有用程度
RTOS以执行任务的概念运行(有时叫做进程)。每个这样的任务执行一个被请求的系统功能。例如,一个任务可以是从接口读取数据或者运行计算。一个很简易的实时系统可能只有一个任务,但更有可能的是多个任务同时在处理器上运行。任务间切换根据“上下文切换”,并且要求在上下文切换开始下个任务之前,RTOS要为每个任务保存处理器状态。RTOS将这个处理器状态保存在任务堆栈上。
由RTOS内核来控制决定接下来运行哪个任务,这个决定是很复杂的——特别是我们要避免死锁,就是任务之间互相锁定——不过这里有两种基本判定方法:
•时序共享——每个任务都能在处理器上获得一个特有的时隙。拥有较高优先权的任务可以拥有多个时隙。时间分割可以通过常规的中断或者计时器控制。这种方法通常叫做轮叫调度。
•事件驱动——任务只有在一个任务完成或者拥有较高优先权的任务必须运行时才能被切换。这个方法通常叫做抢占调度
Micrium公司的μC/OSiii就是一款抢占调度的RTOS。因此它总是运行已经准备好执行的有最高优先权的任务。
在下一篇博客里,我们会看到任务之间如何通信(通常叫做进程间通信)。我们也将会更详细地看到类似于死锁和饥饿的事件。
对许多人来说,这只是概括性的讨论。然而,我觉得解释所有这些我们将会用到的基本概念是很重要的,可以帮助我们更深入地了解操作系统和Zynq SoC。
原文链接: http://forums.xilinx.com/t5/Xcell-Daily-Blog/Adam-Taylor-s-MicroZed-Chro...
© Copyright 2014 Xilinx Inc.
如需转载,请注明出处