嵌入式体系是以嵌入式计算机为中心,面向用户、面向产品、面向运用,软硬件可削减的,适用于对功用、牢靠性、体积、本钱、功耗等综合功用有严格要求的计算机体系。跟着嵌入式体系的广泛运用,传统的前/后台程序开发机制现已不能满意日益杂乱和荷记住的完结要求,因此现场常常选用嵌入式产时操作体系PROS(Real TIme OperaTIon System)开发实时多使命体系。嵌入式实时操作体系一般能够供给多使命的使命调度、时刻办理、使命间通讯和同步以及内存办理MMU(Memory Manager Unit)等重要服务,使得嵌入式运用程序易于规划和扩展。选用RTOS能够使嵌入式产品更牢靠、开发周期更短。在嵌入式运用中运用RTOS现已成为当时嵌入式运用的一个热门。
完结简略功用的嵌入式体系一般不需求操作体系。如,曾经许多MCS51系列单片机组成的小体系就仅仅运用软件完结简略的操控环路;可是跟着所谓后PC年代的降临,嵌入式体系规划日趋杂乱,嵌入式操作体系就必不可少了。
嵌入式RTOS在体系实时高效性、硬件的相关依赖性、软件固化以及运用的专业性等方面具有较为杰出的优势。一般来说,嵌入式操作体系不同于一般含义的计算机操作体系,它有占用空间小、履行效率高、便利进行个性化定制和软件要求固化存储等特色。
UC/OS和uClinux操作体系是用两种功用优异、源码揭露且被广泛运用的免费嵌入式操作体系,能够作为研讨实时操作体系和非实时操作体系的模范。
uC/OS
uC/OS II(Micro Control OperaTIon System Two)是一个能够根据ROM运转的、可削减的、抢占式、实时多使命内核,具有高度可移植性,特别适合于微处理器和操控器,是和许多商业操作体系功用适当的实时操作体系(RTOS)。为了供给最好的移植功用,uC/OS II最大程度上运用ANSI C言语进行开发,而且现已移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包含DSP)。
uC/OS II能够简略的视为一个多使命调度器,在这个使命调度器之上完善并添加了和多使命操作体系相关的体系服务,如信号量、邮箱等。其主要特色有揭露源代码,代码结构明晰、明晰,注释翔实,安排有条理,可移植性好,可裁剪,可固化。内核归于抢占式,最多能够办理60个使命。从1992年开端,因为高度牢靠性、移植性和安全性,uC/OS II现已广泛运用在从照相机到航空电子产品的各种运用中。
μC/OS-II实时多使命操作体系内核被广泛运用于微处理器、微操控器和数字信号处理器。 μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式体系专家Jean J.Labrosse 在《嵌入式体系编程》杂志的5 月和6 月刊上刊登的文章连载,并把μC/OS 的源码发布在该杂志的BBS 上。
uCLinux
uCLinux表明Micro-Control Linux,即“微操控器领域中的Linux体系”,是Lineo公司的主打产品,一起也是开放源码的嵌入式Linux的模范之作。uCLinux主要是针对方针处理器没有存储办理单元MMU(Memory Management Unit)的嵌入式体系而规划的。它现已被成功地移植到了许多渠道上。因为没有MMU,其多使命的完结需求必定技巧。
uClinux从Linux 2.0/2.4内核派生而来,沿用了Linux的绝大部分特性。它一般用于具有很少内存或Flash的嵌入式操作体系。在GNU通用许可证的确保下,运转uClinux操作体系的用户能够运用简直一切的Linux API函数。因为经过了裁剪和优化,它形成了一个高度优化,代码紧凑的嵌入式Linux。
它具有体积小、安稳、杰出的移植性、优异的网络功用、齐备的对各种文件体系的支撑,以及丰厚的API函数等长处。uClinux与Linux在兼容性方面表现出色,uClinux除了不能完结fork()外,其他uClinux的API函数与规范Linux完全相同。
两种嵌入式操作体系主要功用比较
嵌入式操作体系是嵌入式体系软硬件资源的操控中心,它以尽量合理的有用办法安排多个用户同享嵌入式体系的各种资源。其间用户指的是体系程序之上的一切软件。所谓合理有用的办法,指的便是操作体系怎么和谐并充分运用硬件资源来完结多使命。杂乱的操作体系都支撑文件体系,便利安排文件并易于对其规范化操作。
嵌入式操作体系还有一个特色便是针对不同的渠道,体系不是直接可用的,一般需求经过针对专门渠道的移植操作体系才干正常作业。进程调度、文件体系支撑和体系移植是在嵌入式操作体系实践运用中最常见的问题,下文就从这几个视点下手对uc/os和uclinux进行剖析比较。
进程调度
使命调度主要是和谐使命对计算机体系内资源(如内存、i/o设备、cpu)的抢夺运用。进程调度又称为cpu调度,其根本使命是依照某种原则为处于安排妥当状况的进程分配cpu。因为嵌入式体系中内存和i/o设备一般都和cpu一起归归于某进程,所以使命调度和进程调度概念附近,许多场合不加区分,下文中说到的使命其实便是进程的概念。
进程调度可分为“掠夺型调度”和“非掠夺型调度”两种根本方法。所谓“非掠夺型调度”是指:一旦某个进程被调度履行,则该进程一向履行下去直至该进程完毕,或因为某种原因自行抛弃cpu进入等候状况,才将cpu从头分配给其他进程。所谓“掠夺型调度”是指:一旦安排妥当状况中呈现优先权更高的进程,或许运转的进程已用满了规则的时刻片时,便当即掠夺当时进程的运转(将其放回安排妥当状况),把cpu分配给其他进程。
作为实时操作体系,uc/os是选用的可掠夺型实时多使命内核。可掠夺型的实时内核在任何时候都运转安排妥当了的最高优先级的使命。uc/os中最多能够支撑64个使命,别离对应优先级0~63,其间0为最高优先级。调度作业的内容能够分为两部分:最高优先级使命的寻觅和使命切换。
其最高优先级使命的寻觅是经过树立安排妥当使命表来完结的。uc/os中的每一个使命都有独立的仓库空间,并有一个称为使命操控块tcb(task control block)数据结构,其间第一个成员变量便是保存的使命仓库指针。使命调度模块首先用变量ostcbhighrdy记载当时第一流安排妥当使命的tcb地址,然后调用os_task_sw()函数来进行使命切换。