嵌入式操作系统 订阅
嵌入式操作系统(Embedded Operating System,简称:EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前在嵌入式领域广泛使用的操作系统有:嵌入式实时操作系统µC/OS-II、嵌入式Linux、Windows Embedded、VxWorks等,以及应用在智能手机和平板电脑的Android、iOS等。 展开全文
嵌入式操作系统(Embedded Operating System,简称:EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前在嵌入式领域广泛使用的操作系统有:嵌入式实时操作系统µC/OS-II、嵌入式Linux、Windows Embedded、VxWorks等,以及应用在智能手机和平板电脑的Android、iOS等。
信息
外文名
Embedded Operating System
简    称
EOS
类    型
系统软件
中文名
嵌入式操作系统
应用领域
工业控制和国防系统
嵌入式操作系统历史
事实上,在很早以前,嵌入式这个概念就已经存在了。在通信方面,嵌入式系统在20世纪60年代就用于对电子机械电话交换的控制,当时被称为“存储式程序控制系统”(Stored Program Control)。嵌入式计算机的真正发展是在微处理器问世之后。1971年11月,Intel公司成功地把算术运算器和控制器电路集成在一起,推出了第一款微处理器Intel 4004,其后各厂家陆续推出了许多8位、16位的微处理器,包括Intel 8080/8085、8086,Motorola 的6800、68000,以及Zilog的Z80、Z8000等。以这些微处理器作为核心所构成的系统,广泛地应用于仪器仪表、医疗设备、机器人、家用电器等领域。微处理器的广泛应用形成了一个广阔的嵌入式应用市场,计算机厂家开始大量地以插件方式向用户提供OEM产品,再由用户根据自己的需要选择一套适合的CPU板、存储器板以及各式I/O插件板,从而构成专用的嵌入式计算机系统,并将其嵌入到自己的系统设备中。为灵活兼容考虑,出现了系列化、模块化的单板机。流行的单板计算机有Intel公司的iSBC系列、Zilog公司的MCB等。后来人们可以不必从选择芯片开始来设计一台专用的嵌入式计算机,而是只要选择各功能模块,就能够组建一台专用计算机系统。用户和开发者都希望从不同的厂家选购最适合的OEM产品,插入外购或自制的机箱中就形成新的系统,这样就希望插件是互相兼容的,也就导致了工业控制微机系统总线的诞生。1976年Intel公司推出Multibus,1983年扩展为带宽达40MB/s的MultibusⅡ。1978年由Prolog设计的简单STD总线广泛应用于小型嵌入式系统。20世纪80年代可以说是各种总线层出不穷、群雄并起的时代。随着微电子工艺水平的提高,集成电路制造商开始把嵌入式应用中所需要的微处理器、I/O接口、A/D、D/A转换、串行接口以及RAM、ROM等部件统统集成到一个VLSI中,从而制造出面向I/O设计的微控制器,也就是我们俗称的单片机,成为嵌入式计算机系统异军突起的一支新秀。其后发展的DSP产品则进一步提升了嵌入式计算机系统的技术水平,并迅速地渗入到消费电子、医用电子、智能控制、通信电子、仪器仪表、交通运输等各种领域。20世纪90年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步加速发展。面向实时信号处理算法的DSP产品向着高速、高精度、低功耗发展。Texas推出的第三代DSP芯片TMS320C30,引导着微控制器向32位高速智能化发展。在应用方面,掌上电脑、手持PC机、机顶盒技术相对成熟,发展也较为迅速。特别是掌上电脑,1997年在美国市场上掌上电脑不过四五个品牌,而1998年底,各式各样的掌上电脑如雨后春笋般纷纷涌现出来。此外,Nokia推出了智能电话,西门子推出了机顶盒,Wyse推出了智能终端,NS推出了WebPAD。装载在汽车上的小型电脑,不但可以控制汽车内的各种设备(如音响等),还可以与GPS连接,从而自动操控汽车。21世纪无疑是一个网络的时代,使嵌入式计算机系统应用到各类网络中去也必然是嵌入式系统发展的重要方向。
收起全文
精华内容
参与话题
问答
  • 嵌入式操作系统

    千次阅读 2019-10-06 21:18:36
    在嵌入式系统中工作的操作系统被称为EOS(Embedded Operating System,嵌入式操作系统),EOS的基本功能主要是: 构建一个易于编程的虚拟平台; 系统资源的管理者。 2、嵌入式操作系统的分类 1. 按系统类型分 ...

    参考:

    [1] 《嵌入式系统软件及操作系统》


    1、嵌入式操作系统的功能

    在嵌入式系统中工作的操作系统被称为EOS(Embedded Operating System,嵌入式操作系统),EOS的基本功能主要是:

    • 构建一个易于编程的虚拟平台;
    • 系统资源的管理者。

    2、嵌入式操作系统的分类

    1. 按系统类型分

    • 商业化系统
    • 专用系统
    • 开放源代码系统

    2. 按相应时间分

    按照系统对响应时间的敏感程度,EOS可以分为实时操作系统(RTOS)和非实时操作系统两大类。

    RTOS对响应时间有非常严格的要求。但某个外部时间或请求发生时,相应的任务必须在规定的时间内完成相应的处理。RTOS可以分为硬实时和软实时两种情形。

    • 硬实时系统   硬实时系统对响应时间有严格的要求,如果响应时间不能满足,可能会引起系统的奔溃或致命错误。
    • 软实时系统   软实时系统对响应的时间也有要求,如果响应的时间不能满足,将需要支付能够接收的额外代价。

    非实时系统对响应时间没有严格要求,各个进程分享处理器,以获得各自所需的运行时间。

    3. 按软件结构分

    按照软件结构化分,EOS可以分为单体结构、分层结构和微内核结构3大类。

    单体结构:

    嵌入式Linux操作系统、Jbed RTOS、\mu C/OS-II和PDOS都属于单体内核结构。

    在单体结构的操作系统中,中间件和设备驱动程序通常集成在系统内核当中,整个系统通常只有一个可执行文件,里面包含了所有的功能组件。

    单体结构的操作系统由一组功能模块组成,系统各个模块之间可以相互调用,通信开销比较小,系统高度集成和相互关联,系统裁剪、修改、调试和维护不便。

    分层结构:

    采用分层结构的操作系统内部分为若干层次(0~N),各个层次之间的调用关系是单向的,即某一层次上的代码只能调用比它低层的代码。分层结构要求在每层次上都要提供一组API接口,增加了系统的额外开销,单系统的开发和维护较为简单。典型代表有MS-DOS,其结构就是一个有代表性的、组织良好的分层结构。

    微内核结构:

    微内核(microkernel)结构把操作系统的大部分功能都剥离出去,在内核中保留最核心的功能单元(如进程管理和存储管理),大部分的系统功能都位于内核之外,例如,将所有的设备驱动程序都置于内核之外。

    3、常见的嵌入式操作系统

    1. VxWorks

    采用微内核结构体系。整个系统由四百多个相对独立,短小精炼的目标模块组成,用户可以根据自己的需要选择适当的模块,进行裁剪和配置。

    2. 嵌入式Linux

    嵌入式Linux是指对标准Linux进行裁剪处理之后,可固化在存储器或单片机中,适合于特定的嵌入式应用场合的专用Linux操作系统。

    3. Windows CE

    Windows CE是一个基于优先级的多任务嵌入式操作系统,提供256个优先级别,基本内核需要200KB的ROM,支持win32 API子集,支持多种用户界面硬件,支持多种串行和网络技术。Windows CE不是一个硬实时系统。

    4. \mu C/OS-II

    \mu C/OS-II是一个免费、开放源代码、结构小巧,基于可抢占优先级调度的实时操作系统,其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。

    \mu C/OS-II内核在2~10KB数量级,具有执行效率高,占用时间小,实时性能优良和可扩展等特点,主要面向中小型嵌入式系统。

    \mu C/OS-II内核提供最基本的系统服务,例如信号箱、邮箱、消息队列、内存管理、中断管理等,

    \mu C/OS-II本身不支持文件系统,但它具有良好的扩展性,可根据需要自行加入。


     

    展开全文
  • 各种嵌入式操作系统介绍

    千次阅读 2017-03-16 09:39:56
    一,各种嵌入式操作系统介绍 1.uC/OS-II u C / OS 是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。  μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse ...

    一,各种嵌入式操作系统介绍

    1.uC/OS-II

    u C / OS 是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。 
    μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在《嵌入式系统编程》杂志的5月和6月刊上刊登的文章连载,并把μC/OS 的源码发布在该杂志的BBS上。 
    μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的, 绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌人到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小内核可编译至 2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 
    严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。 没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。 
    uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。

    任务管理

    uC/OS-II 中最多可以支持64 个任务,分别对应优先级0~63,其中0 为最高优先级。63为最低级,系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个。 
    uC/OS-II提供了任务管理的各种函数调用,包括创建任务,删除任务,改变任务的优先级,任务挂起和恢复等。 
    系统初始化时会自动产生两个任务:一个是空闲任务,它的优先级最低,该任务仅给一个整形变量做累加运算;另一个是系统任务,它的优先级为次低,该任务负责统计当前cpu的利用率。 
    时间管理 
    uC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次,时间频率取决于用户对硬件系统的定时器编程来实现。中断发生的时间间隔是固定不变的,该中断也成为一个时钟节拍。 
    uC/OS-II要求用户在定时中断的服务程序中,调用系统提供的与时钟节拍相关的系统函数,例如中断级的任务切换函数,系统时间函数。 
    内存管理 
    在ANSI C中是使用malloc和free两个函数来动态分配和释放内存。但在嵌入式实时系统中,多次这样的错作会导致内存碎片,且由于内存管理算法的原因,malloc和free的执行时间也是不确定。 
    uC/OS -II中把连续的大快内存按分区管理。每个分区中包含整数个大小相同的内存块,但不同分区之间的内存快大小可以不同。用户需要动态分配内存时,系统选择一个适当的分区,按块来分配内存。释放内存时将该块放回它以前所属的分区,这样能有效解决碎片问题,同时执行时间也是固定的。

    任务间通信与同步

    对一个多任务的操作系统来说,任务间的通信和同步是必不可少的。uC/OS-II中提供了4中同步对象,分别是信号量,邮箱,消息队列和事件。所有这些同步对象都有创建,等待,发送,查询的接口用于实现进程间的通信和同步。 
    任务调度 
    uC/OS-II 采用的是可剥夺型实时多任务内核。可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。 
    uC/os-II的任务调度是完全基于任务优先级的抢占式调度,也就是最高优先级的任务一旦处于就绪状态,则立即抢占正在运行的低优先级任务的处理器资源。为了简化系统设计,uC/OS-II规定所有任务的优先级不同,因为任务的优先级也同时唯一标志了该任务本身。 
    任务调度将在以下情况下发生: 
    1) 高优先级的任务因为需要某种临界资源,主动请求挂起,让出处理器,此时将调度就绪状态的低优先级任务获得执行,这种调度也称为任务级的上下文切换。 
    2) 高优先级的任务因为时钟节拍到来,在时钟中断的处理程序中,内核发现高优先级任务获得了执行条件(如休眠的时钟到时),则在中断态直接切换到高优先级任务执行。这种调度也称为中断级的上下文切换。 
    这两种调度方式在uC/OS-II的执行过程中非常普遍,一般来说前者发生在系统服务中,后者发生在时钟中断的服务程序中。 
    调度工作的内容可以分为两部分:最高优先级任务的寻找和任务切换。其最高优先级任务的寻找是通过建立就绪任务表来实现的。u C / O S 中的每一个任务都有独立的堆栈空间,并有一个称为任务控制块TCB(Task Control Block)的数据结构,其中第一个成员变量就是保存的任务堆栈指针。任务调度模块首先用变量OSTCBHighRdy 记录当前最高级就绪任务的TCB 地址,然后调用OS_TASK_SW()函数来进行任务切换。

    μ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等系统指针,所以通常用汇编语言编写。主要包括中断级任务切换的底层实现、任务级任务切换的底层实现、时钟节拍的产生和处理、中断的相关处理部分等内容.

    2.Nucleus

    NucleusPLUS嵌入式操作系统是目前最受欢迎的操作系统之一。NucleusPLUS是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其 95%的代码是用ANSI C写成的,因此非常便于移植并能够支持大多数类型的处理器。从实现角度来看,NucleusPLUS是一组C函数库,应用程序代码与核心函数库连接在一起,生成一个目标代码,下载到目标板的RAM中或直接烧录到目标板的ROM中执行。在典型的目标环境中,NucleusPLUS核心代码区一般不超过20K字节大小。NucleusPLUS采用了软件组件的方法,每个组件具有单一而明确的目的,通常由几个C及汇编语言模块构成,提供清晰的外部接口,对组件的引用就是通过这些接口完成的。除了少数一些特殊情况外,不允许从外部对组件内的全局进行访问。由于采用了软件组件的方法,NucleusPLUS各个组件非常易于替换和复用。NucleusPLUS的组件包括任务控制、内存管理、任务间通信、任务的同步与互斥、中断管理、定时器及I/O驱动等。 
    Nucleus具有如下特点 
    1、提供源代码。NucleusPLUS提供注释严格的C源级代码给每一个用户。这样,用户能够深入地了解底层内核的运作方式,并可根据自己的特殊要求删减或改动系统软件,这对软件的规范化管理及系统软件的测试都有极大的帮助。另外,由于提供了RTOS的源级代码,用户不但可以进行RTOS的学习和研究,而且产品在量产时也不必支付License,可以省去大量的费用。对于军方来说,由于提供了源代码,用户完全可以控制内核而不必担心操作系统中可能会存在异常任务导致系统崩溃。 
    2、性价比高。NucleusPLUS由于采用了先进的微内核(Micro- kernel)技术,因而在优先级安排,任务调度,任务切换等各个方面都有相当大的优势。另外,对C++语言的全面支持又使得NucleusPLUS的 Kernel成为名副其实的面向对象的实时操作系统内核。然而,其价格却比较合理。所以,容易被广大的研发单位接受。 
    3、易学易用。NucleusPLUS 能够结合Paradigm,SDS以及ATI自己的多任务调试器组成功能强大的集成开发环境,配合相应的编译器和动态联结库以及各类底层驱动软件,用户可以轻松地进行RTOS的开发和调试。另外,由于这些集成开发环境(IDE)为所有的开发工程师所熟悉,因而,容易学习和使用。 
    4、功能模块丰富。NucleusPLUS除提供功能强大的内核操作系统外,还提供种类丰富的功能模块。例如用于通讯系统的局域和广域网络模块,支持图形应用的实时化 Windows模块,支持Internet网的WEB产品模块,工控机实时BIOS模块,图形化用户接口以及应用软件性能分析模块等。用户可以根据自己的应用来选择不同的应用模块。

    NucleusPLUS的多种支持

    NucleusPLUS的RTOS内核可支持如下类型的CPU: x86,68xxx,68HCxx,NECV25, oldFire,29K,i960,MIPS,SPARClite,TIDSP,ARM6/7,StrongARM, H8/300H,SH1/2/3,owerPC,V8xx,Tricore,Mcore,PanasonicMN10200,Tricore,Mcore 等。可以说NUCLEUS+是支持CPU类型最丰富的实时多任务操作系统。针对各种嵌入式应用,NucleusPLUS还提供相应的网络协议(如 TCP/IP,SNMP等),以满足用户对通讯系统的开发要求。 
    另外,可重入的文件系统、可重入的C函数库以及图形化界面等也给开发者提供了方便。针对不同的CPU类型,Nucleus还提供编译器、动态连接库、多任务调试器等相应的工具来配置用户的开发环境。值得提出的是ATI公司最近还发表了基于 Microsoft Developers Studio的嵌入式集成开发环境-NUCLEUSEDE。从而率先将嵌入式开发工具与Microsoft的强大开发环境结合起来,提供给工程师们强大的开发手段。 
    三、源代码带来的优势众所周知,Nucleus实时多任务操作系统提供给用户源代码。这除商务上给用户带来巨大益处(免交Royalty)外,还在技术方面给用户极大的方便,即无需编写和调试BSP,从而达到易学易用的目的,加速产品上市。对RTOS有一定知识的工程师一定清楚,使用RTOS最大的障碍在于编写和调试BSP。大家知道,在调试目标系统的软件之前,必须将目标与主机连接起来并建立通讯。为此,我们可以编写一段监控程序(Monitor)。然而,如果要调试基于RTOS内核的程序,主机上的调试器(Debugger)除要与目标建立通讯外,更重要的是必须识别RTOS的任务,这样才能进行任务级调试(Task-awareDebugger)。因此,只有Monitor是不够的。如果我们选用的RTOS不提供源代码,那么,主机上的调试器(Debugger)就只有通过用户编写的BSP来了解Kernel在现有硬件平台上对各个任务进行调度的情况。显然,编写BSP必须对CPU目标系统的硬件以及应用软件等有全面而深入的了解。一般说来,对于一个有一定硬件开发经验的工程师来说,编写一个新的 BSP要花的平均时间为两个月左右。这对于一个新手来说可是比较困难的。对于编写BSP的工程师来说,另外一个更大的挑战就是如何调试BSP,即如何验证所编写的BSP是否正确。通常刚刚焊接安装好的PCB板中,硬件或软件的故障(Bugs)是比较多的。甚至更常见的是CPU部分都没有运作正常。有时时序错误和总线错误都还存在。在您把写好的BSP烧入EPROM(或FLASH)中试图将目标与主机建立联系时,您几乎100%地会发现根本无法通讯,眼前一团漆黑,不知是软件有错误还是硬件不运转。BSP在正常运行吗?不得而知。在焦急和摸索中您可能发现几个月已悄然而过。对于早期的实时操作系统来说, BSP是必由之路。然而,新一代的RTOS-NucleusPLUS则避免了BSP带来的痛苦过程。因为Nucleus的调试是基于全新的动态连接库(DLL)。用户只须通过监控程序(Monitor)或者BDM调试口(或者JTAG调试口)建立目标系统(Target)与主机(Host)之间的通讯,并给主机上的Debugger初始化特性中加入Nucleus的动态连接库(DLLs),这时,调试器就能够自动地去识别运行在目标系统中的 Nucleus内核和各个应用任务,从而完成任务级调试。上述的动态连接库(DLLs)是由RTOS厂商和Debugger厂商合作完成的,用户无须自行编写。因此,Nucleus的用户只需要将精力放在基于Nucleus的编程工作中。对于一个新手,往往经过一天到两天的学习和培训,就可以投入到应用程序编制工作中去,无需花大量的时间去研究CPU,特定的硬件等。另外,由于有了源程序,用户在调试程序时可以清楚地通过STEPINTO命令,追踪到 RTOS的内层中去,观看和学习Kernel对任务的管理和调度机制。对于有志研究RTOS深层技术的工程师来说极为方便。对于Motorola68K和 PowerPC,用户可以利用GreenHill公司的Mutil调试器或TRACE-ICD来完成NucleusPLUS的调试;对于ARM和 StrongARM,用户可以利用ARM公司的SDT251调试器或TRACE-ICD来完成NucleusPLUS的调试;对于Intelx86实模式,用户可以利用Paradigm公司的调试器及其DLL来进行任务级调试;对于Intelx86保护模式则可以利用SSI公司Softprobe调试器和SSIDLL来调试;对于i960,SH3/4,ARM6/7,MIPS等芯片,则可以使用ATI公司自己的UDB调试器来进行任务的调试。结论:动态连接库(DLL)是在RTOS工具中新出现的应用趋势,通过这种方式,用户可以免去BSP带来的麻烦,灵活方便地进行开发和调试,大大加速开发进度。 Nucleus实时操作系统提供源代码,支持丰富的CPU种类,配合各类DLL动态连接库,为使用和研究RTOS技术的工程带来极大的利益。

    3.ThreadX

    ThreadX是优秀的硬实时操作系统(RTOS),适用于深嵌入式应用中,具有规模小、实时性强、可靠性高、无产品版权费、易于使用等特点,并且支持大量的处理器和SoC,包括ARM、PowerPC、SH 4、MIPS、ADI DSP、TI DPS、Nios II等,因此广泛应用于消费电子、汽车电子、工业自动化、网络解决方案、军事与航空航天等领域中。 
    下面是ThreadX的应用实例: 
    2005年7月4日,美国国家航空航天局(NASA)成功实施了“深度撞击”飞船对坦普尔1号彗星的准确撞击,其中,ThreadX在其中发挥了关键作用,控制其中全部三套彗星成像仪的运行; 
    惠普公司的多款数码相机中应用了ThreadX RTOS和配套的FileX文件系统组件,同时,惠普公司也在全系列打印机产品中使用了ThreadX RTOS; 
    ThreadX成功应用于Panasonic公司的11Mbs无线网卡; 
    在Konica-Minolta、Toshiba、Ricoh、Samsung等公司的数码产品中,ThreadX得到了广泛的应用; 
    据CMP统计表明,ThreadX RTOS已经占有全球第三大硬实时操作系统市场份额; 
    TreadX 支持的CPU有:PowerPC,680x0/683xx,ColdFile,ARM7,ARM/Thumb ,MCORE, ARC, TriCore, X86,StrongARM,MIPS,SH,I960,V8xx,SPARC,Xscale, H8/300H, TMS320C.

    4.uClinux

    Linux是一种很受欢迎的操作系统,它与UNIX系统兼容,开放源代码。它原本被设计为桌面系统,现在广泛应用于服务器领域。而更大的影响在于它正逐渐地应用于嵌入式设备。uClinux正是在这种氛围下产生的。在uClinux这个英文单词中u表示Micro,小的意思,C表示Control,控制的意思,所以uClinux就是Micro-Control-Linux,字面上的理解就是”针对微控制领域而设计的Linux系统”。

    4.1 uClinux的小型化方法

    标准Linux可能采用的小型化方法 
    1. 重新编译内核 
    Linux内核采用模块化的设计,即很多功能块可以独立的加上或卸下,开发人员在设计内核时把这些内核模块作为可选的选项,可以在编译系统内核时指定。因 此一种较通用的做法是对Linux内核重新编译,在编译时仔细的选择嵌入式设备所需要的功能支持模块,同时删除不需要的功能。通过对内核的重新配置,可以 使系统运行所需要的内核显著减小,从而缩减资源使用量。 
    2. 制作root文件系统映象 
    Linux系统在启动时必须加载根(root)文件系统,因此剪裁系统同时包括root file system的剪裁。在x86系统下,Linux可以在Dos下,使用Loadlin文件加载启动。 
    uClinux采用的小型化方法 
    1.uClinux的内核加载方式 
    uClinux的内核有两种可选的运行方式:可以在flash上直接运行,也可以加载到内存中运行。这种做法可以减少内存需要。 
    Flash运行方式:把内核的可执行映象烧写到flash上,系统启动时从flash的某个地址开始逐句执行。这种方法实际上是很多嵌入式系统采用的方法。 
    内核加载方式:把内核的压缩文件存放在flash上,系统启动时读取压缩文件在内存里解压,然后开始执行,这种方式相对复杂一些,但是运行速度可能更快(ram的存取速率要比flash高)。同时这也是标准Linux系统采用的启动方式。 
    2.uClinux的根(root)文件系统 
    uClinux系统采用romfs文件系统,这种文件系统相对于一般的ext2文件系统要求更少的空间。空间的节约来自于两个方面,首先内核支持 romfs文件系统比支持ext2文件系统需要更少的代码,其次romfs文件系统相对简单,在建立文件系统超级块(superblock)需要更少的存储空间。Romfs文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟ram盘的方法进行处理(ram盘将采用ext2文件系统)。 
    3.uClinux的应用程序库 
    uClinux小型化的另一个做法是重写了应用程序库,相对于越来越大且越来越全的glibc库,uClibc对libc做了精简。 
    uClinux对用户程序采用静态连接的形式,这种做法会使应用程序变大,但是基于内存管理的问题,不得不这样做(这将在下文对uClinux内存管理展开分析时进行说明),同时这种做法也更接近于通常嵌入式系统的做法。

    4.2 uClinux的开发环境

    GNU开发套件

    Gnu开发套件作为通用的Linux开放套件,包括一系列的开发调试工具。主要组件: 
    Gcc: 编译器,可以做成交叉编译的形式,即在宿主机上开发编译目标上可运行的二进制文件。 
    Binutils:一些辅助工具,包括objdump(可以反编译二进制文件),as(汇编编译器),ld(连接器)等等。 
    Gdb:调试器,可使用多种交叉调试方式,gdb-bdm(背景调试工具),gdbserver(使用以太网络调试)。 
    uClinux的打印终端 
    通常情况下,uClinux的默认终端是串口,内核在启动时所有的信息都打印到串口终端(使用printk函数打印),同时也可以通过串口终端与系统交互。 
    uClinux在启动时启动了telnetd(远程登录服务),操作者可以远程登录上系统,从而控制系统的运行。至于是否允许远程登录可以通过烧写romfs文件系统时有用户决定是否启动远程登录服务。 
    交叉编译调试工具 
    支持一种新的处理器,必须具备一些编译,汇编工具,使用这些工具可以形成可运行于这种处理器的二进制文件。对于内核使用的编译工具同应用程序使用的有所不同。在解释不同点之前,需要对gcc连接做一些说明: 
    .ld(link description)文件:ld文件是指出连接时内存映象格式的文件。 
    crt0.S:应用程序编译连接时需要的启动文件,主要是初始化应用程序栈。 
    pic:position independence code ,与位置无关的二进制格式文件,在程序段中必须包括reloc段,从而使的代码加载时可以进行重新定位。 
    内核编译连接时,使用ucsimm.ld文件,形成可执行文件映象,所形成的代码段既可以使用间接寻址方式(即使用reloc段进行寻址),也可以使用绝对寻址方式。这样可以给编译器更多的优化空间。因为内核可能使用绝对寻址,所以内核加载到的内存地址空间必须与ld文件中给定的内存空间完全相同。 
    应用程序的连接与内核连接方式不同。应用程序由内核加载(可执行文件加载器将在后面讨论),由于应用程序的ld文件给出的内存空间与应用程序实际被加载的 内存位置可能不同,这样在应用程序加载的过程中需要一个重新地位的过程,即对reloc段进行修正,使得程序进行间接寻址时不至于出错。(这个问题在 i386等高级处理器上方法有所不同,本文将在后面进一步分析)。 
    由上述讨论,至少需要两套编译连接工具。在讨论过uClinux的内存管理后本文将给出整个系统的工作流程以及系统在flash和ram中的空间分布。 
    可执行文件格式 
    先对一些名词作一些说明: 
    coff(common object file format):一种通用的对象文件格式 
    elf(excutive linked file):一种为Linux系统所采用的通用文件格式,支持动态连接 
    flat:elf格式有很大的文件头,flat文件对文件头和一些段信息做了简化 
    uClinux系统使用flat可执行文件格式,gcc的编译器不能直接形成这种文件格式,但是可以形成coff或elf格式的可执行文件,这两种文件需要coff2flt或elf2flt工具进行格式转化,形成flat文件。 
    当用户执行一个应用时,内核的执行文件加载器将对flat文件进行进一步处理,主要是对reloc段进行修正(可执行文件加载器的详见fs/binfmt_flat.c)。以下对reloc段进一步讨论 
    需要reloc段的根本原因是,程序在连接时连接器所假定的程序运行空间与实际程序加载到的内存空间不同。假如有这样一条指令: 
    jsr app_start; 
    这一条指令采用直接寻址,跳转到app_start地址处执行,连接程序将在编译完成是计算出app_start的实际地址(设若实际地址为 0x10000),这个实际地址是根据ld文件计算出来(因为连接器假定该程序将被加载到由ld文件指明的内存空间)。但实际上由于内存分配的关系,操作 系统在加载时无法保证程序将按ld文件加载。这时如果程序仍然跳转到绝对地址0x10000处执行,通常情况这是不正确的。一个解决办法是增加一个存储空 间,用于存储app_start的实际地址,设若使用变量addr表示这个存储空间。则以上这句程序将改为: 
    movl addr, a0; 
    jsr (a0); 
    增加的变量addr将在数据段中占用一个4字节的空间,连接器将app_start的绝对地址存储到该变量。在可执行文件加载时,可执行文件加载器根据程 序将要加载的内存空间计算出app_start在内存中的实际位置,写入addr变量。系统在实际处理是不需要知道这个变量的确切存储位置(也不可能知 道),系统只要对整个reloc段进行处理就可以了(reloc段有标识,系统可以读出来)。处理很简单只需要对reloc段中存储的值统一加上一个偏置 (如果加载的空间比预想的要靠前,实际上是减去一个偏移量)。偏置由实际的物理地址起始值同ld文件指定的地址起始值相减计算出。 
    这种reloc的方式部分是由uClinux的内存分配问题引起的,这一点将在uClinux内存管理分析时说明。 
    针对实时性的解决方案 
    uClinux本身并没有关注实时问题,它并不是为了Linux的实时性而提出的。另外有一种Linux–Rt-linux关注实时问题。Rt- linux执行管理器把普通Linux的内核当成一个任务运行,同时还管理了实时进程。而非实时进程则交给普通Linux内核处理。这种方法已经应用于很 多的操作系统用于增强操作系统的实时性,包括一些商用版UNIX系统,Windows NT等等。这种方法优点之一是实现简单,且实时性能容易检验。优点之二是由于非实时进程运行于标准Linux系统,同其它Linux商用版本之间保持了很 大的兼容性。优点之三是可以支持硬实时时钟的应用。uClinux可以使用Rt-linux的patch,从而增强uClinux的实时性,使得 uClinux可以应用于工业控制、进程控制等一些实时要求较高的应用。 
    uClinux的内存管理 
    应该说uClinux同标准Linux的最大区别就在于内存管理,同时也由于uClinux的内存管理引发了一些标准Linux所不会出现的问题。本文将把uClinux内存管理同标准Linux的那内存管理部分进行比较分析。 
    标准Linux使用的虚拟存储器技术 
    标准Linux使用虚拟存储器技术,这种技术用于提供比计算机系统中实际使用的物理内存大得多的内存空间。使用者将感觉到好像程序可以使用非常大的内存空间,从而使得编程人员在写程序时不用考虑计算机中的物理内存的实际容量。 
    为了支持虚拟存储管理器的管理,Linux系统采用分页(paging)的方式来载入进程。所谓分页既是把实际的存储器分割为相同大小的段,例如每个段1024个字节,这样1024个字节大小的段便称为一个页面(page)。 
    虚拟存储器由存储器管理机制及一个大容量的快速硬盘存储器支持。它的实现基于局部性原理,当一个程序在运行之前,没有必要全部装入内存,而是仅将那些当前 要运行的那些部分页面或段装入内存运行(copy-on-write),其余暂时留在硬盘上程序运行时如果它所要访问的页(段)已存在,则程序继续运行, 如果发现不存在的页(段),操作系统将产生一个页错误(page fault),这个错误导致操作系统把需要运行的部分加载到内存中。必要时操作系统还可以把不需要的内存页(段)交换到磁盘上。利用这样的方式管理存储 器,便可把一个进程所需要用到的存储器以化整为零的方式,视需求分批载入,而核心程序则凭借属于每个页面的页码来完成寻址各个存储器区段的工作。 
    标准Linux是针对有内存管理单元的处理器设计的。在这种处理器上,虚拟地址被送到内存管理单元(MMU),把虚拟地址映射为物理地址。 
    通过赋予每个任务不同的虚拟–物理地址转换映射,支持不同任务之间的保护。地址转换函数在每一个任务中定义,在一个任务中的虚拟地址空间映射到物理内存 的一个部分,而另一个任务的虚拟地址空间映射到物理存储器中的另外区域。计算机的存储管理单元(MMU)一般有一组寄存器来标识当前运行的进程的转换表。 在当前进程将CPU放弃给另一个进程时(一次上下文切换),内核通过指向新进程地址转换表的指针加载这些寄存器。MMU寄存器是有特权的,只能在内核态才 能访问。这就保证了一个进程只能访问自己用户空间内的地址,而不会访问和修改其它进程的空间。当可执行文件被加载时,加载器根据缺省的ld文件,把程序加 载到虚拟内存的一个空间,因为这个原因实际上很多程序的虚拟地址空间是相同的,但是由于转换函数不同,所以实际所处的内存区域也不同。而对于多进程管理当 处理器进行进程切换并执行一个新任务时,一个重要部分就是为新任务切换任务转换表。我们可以看到Linux系统的内存管理至少实现了以下功能: 
    运行比内存还要大的程序。理想情况下应该可以运行任意大小的程序 
    ◇可以运行只加载了部分的程序,缩短了程序启动的时间 
    ◇可以使多个程序同时驻留在内存中提高CPU的利用率 
    ◇可以运行重定位程序。即程序可以方于内存中的任何一处,而且可以在执行过程中移动。 
    ◇写机器无关的代码。程序不必事先约定机器的配置情况。 
    ◇减轻程序员分配和管理内存资源的负担。 
    ◇可以进行共享–例如,如果两个进程运行同一个程序,它们应该可以共享程序代码的同一个副本。 
    ◇提供内存保护,进程不能以非授权方式访问或修改页面,内核保护单个进程的数据和代码以防止其它进程修改它们。否则,用户程序可能会偶然(或恶意)的破坏内核或其它用户程序。 
    虚存系统并不是没有代价的。内存管理需要地址转换表和其他一些数据结构,留给程序的内存减少了。地址转换增加了每一条指令的执行时间,而对于有额外内存操 作的指令会更严重。当进程访问不在内存的页面时,系统发生失效。系统处理该失效,并将页面加载到内存中,这需要极耗时间的磁盘I/O操作。总之内存管理活 动占用了相当一部分cpu时间(在较忙的系统中大约占10%)。 
    uClinux针对NOMMU的特殊处理 
    对于uClinux来说,其设计针对没有MMU的处理器,即uClinux不能使用处理器的虚拟内存管理技术(应该说这种不带有MMU的处理器在嵌入式设 备中相当普偏)。uClinux仍然采用存储器的分页管理,系统在启动时把实际存储器进行分页。在加载应用程序时程序分页加载。但是由于没有MMU管理, 所以实际上uClinux采用实存储器管理策略(real memeory management)。这一点影响了系统工作的很多方面。 
    uClinux系统对于内存的访问是直接的,(它对地址的访问不需要经过MMU,而是直接送到地址线上输出),所有程序中访问的地址都是实际的物理地址。 操作系统对内存空间没有保护(这实际上是很多嵌入式系统的特点),各个进程实际上共享一个运行空间(没有独立的地址转换表)。 
    一个进程在执行前,系统必须为进程分配足够的连续地址空间,然后全部载入主存储器的连续空间中。与之相对应的是标准Linux系统在分配内存时没有必要保 证实际物理存储空间是连续的,而只要保证虚存地址空间连续就可以了。另外一个方面程序加载地址与预期(ld文件中指出的)通常都不相同,这样 relocation过程就是必须的。此外磁盘交换空间也是无法使用的,系统执行时如果缺少内存将无法通过磁盘交换来得到改善。 
    uClinux对内存的管理减少同时就给开发人员提出了更高的要求。如果从易用性这一点来说,uClinux的内存管理是一种倒退,退回了到了UNIX早 期或是Dos系统时代。开发人员不得不参与系统的内存管理。从编译内核开始,开发人员必须告诉系统这块开发板到底拥有多少的内存(假如你欺骗了系统,那将 在后面运行程序时受到惩罚),从而系统将在启动的初始化阶段对内存进行分页,并且标记已使用的和未使用的内存。系统将在运行应用时使用这些分页内存。 
    由于应用程序加载时必须分配连续的地址空间,而针对不同硬件平台的可一次成块(连续地址)分配内存大小限制是不同(目前针对ez328处理器的 uClinux是128k,而针对coldfire处理器的系统内存则无此限制),所以开发人员在开发应用程序时必须考虑内存的分配情况并关注应用程序需 要运行空间的大小。另外由于采用实存储器管理策略,用户程序同内核以及其它用户程序在一个地址空间,程序开发时要保证不侵犯其它程序的地址空间,以使得程 序不至于破坏系统的正常工作,或导致其它程序的运行异常。 
    从内存的访问角度来看,开发人员的权利增大了(开发人员在编程时可以访问任意的地址空间),但与此同时系统的安全性也大为下降。此外,系统对多进程的管理将有很大的变化,这一点将在uClinux的多进程管理中说明。 
    虽然uClinux的内存管理与标准Linux系统相比功能相差很多,但应该说这是嵌入式设备的选择。在嵌入式设备中,由于成本等敏感因素的影响,普偏的 采用不带有MMU的处理器,这决定了系统没有足够的硬件支持实现虚拟存储管理技术。从嵌入式设备实现的功能来看,嵌入式设备通常在某一特定的环境下运行, 只要实现特定的功能,其功能相对简单,内存管理的要求完全可以由开发人员考虑。 
    标准Linux系统的进程、线程 
    进程:进程是一个运行程序并为其提供执行环境的实体,它包括一个地址空间和至少一个控制点,进程在这个地址空间上执行单一指令序列。进程地址空间包括可以访问或引用的内存单元的集合,进程控制点通过一个一般称为程序计数器(program counter,PC)的硬件寄存器控制和跟踪进程指令序列。 
    fork:由于进程为执行程序的环境,因此在执行程序前必须先建立这个能”跑”程序的环境。Linux系统提供系统调用拷贝现行进程的内容,以产生新的进 程,调用fork的进程称为父进程;而所产生的新进程则称为子进程。子进程会承袭父进程的一切特性,但是它有自己的数据段,也就是说,尽管子进程改变了所 属的变量,却不会影响到父进程的变量值。 
    父进程和子进程共享一个程序段,但是各自拥有自己的堆栈、数据段、用户空间以及进程控制块。换言之,两个进程执行的程序代码是一样的,但是各有各的程序计数器与自己的私人数据。 
    当内核收到fork请求时,它会先查核三件事:首先检查存储器是不是足够;其次是进程表是否仍有空缺;最后则是看看用户是否建立了太多的子进程。如果上述 说三个条件满足,那么操作系统会给子进程一个进程识别码,并且设定cpu时间,接着设定与父进程共享的段,同时将父进程的inode拷贝一份给子进程运 用,最终子进程会返回数值0以表示它是子进程,至于父进程,它可能等待子进程的执行结束,或与子进程各做个的。 
    exec系统调用:该系统调用提供一个进程去执行另一个进程的能力,exec系统调用是采用覆盖旧有进程存储器内容的方式,所以原来程序的堆栈、数据段与程序段都会被修改,只有用户区维持不变。 
    vfork系统调用:由于在使用fork时,内核会将父进程拷贝一份给子进程,但是这样的做法相当浪费时间,因为大多数的情形都是程序在调用fork后就 立即调用exec,这样刚拷贝来的进程区域又立即被新的数据覆盖掉。因此Linux系统提供一个系统调用vfork,vfork假定系统在调用完成 vfork后会马上执行exec,因此vfork不拷贝父进程的页面,只是初始化私有的数据结构与准备足够的分页表。这样实际在vfork调用完成后父子 进程事实上共享同一块存储器(在子进程调用exec或是exit之前),因此子进程可以更改父进程的数据及堆栈信息,因此vfork系统调用完成后,父进 程进入睡眠,直到子进程执行exec。当子进程执行exec时,由于exec要使用被执行程序的数据,代码覆盖子进程的存储区域,这样将产生写保护错误 (do_wp_page)(这个时候子进程写的实际上是父进程的存储区域), 
    这个错误导致内核为子进程重新分配存储空间。当子进程正确开始执行后,将唤醒父进程,使得父进程继续往后执行。 
    uClinux的多进程处理 
    uClinux没有mmu管理存储器,在实现多个进程时(fork调用生成子进程)需要实现数据保护。 
    uClinux的fork和vfork:uClinux的fork等于vfork。实际上uClinux的多进程管理通过vfork来实现。这意味着 uClinux系统fork调用完程后,要么子进程代替父进程执行(此时父进程已经sleep)直到子进程调用exit退出,要么调用exec执行一个新 的进程,这个时候将产生可执行文件的加载,即使这个进程只是父进程的拷贝,这个过程也不能避免。当子进程执行exit或exec后,子进程使用 wakeup把父进程唤醒,父进程继续往下执行。 
    uClinux的这种多进程实现机制同它的内存管理紧密相关。uClinux针对nommu处理器开发,所以被迫使用一种flat方式的内存管理模式,启 动新的应用程序时系统必须为应用程序分配存储空间,并立即把应用程序加载到内存。缺少了MMU的内存重映射机制,uClinux必须在可执行文件加载阶段 对可执行文件reloc处理,使得程序执行时能够直接使用物理内存。

    5.Windows CE

    Windows CE是一个嵌入式操作系统。它是一个抢先式多任务并具有强大通信能力的Win32嵌入式操作系统,是微软专门为信息设备、移动应用、消费类电子产品、嵌入式应用等非PC领域而从头设计的战略性操作系统产品。 其中CE中的C代表袖珍(Compact)、消费(Consume)、通讯能力(Connectivity)和伴侣(Companion);E代表电子产品(Electronics)。 
       与Windows 95/98、Windows NT不同的是,Windows CE是所有源代码全部由微软自行开发的嵌入式新型操作系统,其操作界面虽来源于Windows 95/98,但Windows CE是基于WIN32 API重新开发、新型的信息设备的平台。Windows CE具有模块化、结构化和基于Win32应用程序接口和与处理器无关等特点。Windows CE不仅继承了传统的Windows图形界面,并且在Windows CE平台上可以使用Windows 95/98上的编程工具(如Visual Basic、Visual C++等)、使用同样的函数、使用同样的界面风格,使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。
        不知你是否注意到,在我们的日常生活中,人们开始普遍使用手机、PDA、手持和掌上电脑等信息电器来储存和处理各种重要信息,这一切都似乎是在预示着一场新的革命。这场革命就是,计算机占领了桌面之后,继续其小型化和分散化的趋势,更广泛地进入人们工作、生活和娱乐的各个方面。这场革命又被近年来 Internet的迅猛普及所推动,一个网上世界已经出现,人们随时、随地获取所需信息并保持与他人接触的需求愈发强烈。    
    早在微软创办之初,比尔·盖茨就曾梦想“每人桌上一台PC,每台PC中运行微软的软件”,这就是后来著名的“信息随手可得”的梦想,而这个梦想在今天 已经变成了现实。微软为PC提供了出色的操作系统平台(Windows 9x/NT)、高效率的软件开发工具和功能强大而易用的通用软件(Microsoft Office等),使许多人的工作和生活从计算机技术中受益无穷。   
      但是PC的价格、使用的复杂性仍使得许多人与之无缘。PC文化仍不是彻底的“庶民文化”,目前PC的复杂性对于更为普遍的大众来说仍是一种“精英工具”。PC已成为人们进入网上世界的最后一道门坎,例如中国已在Internet干线、接入、内容提供等诸方面投入巨资,但就因为这一“最后一公里”难题,中国的Internet产业迟迟不能起飞。   
    IBM在80年代初犯下的错误:当年IBM固守“主机文化”,抱残守缺,错失了电脑向桌面这一新疆域拓展的良机,成为自己引发的PC革命的旁观者。所 以微软在向个人桌面和企业管理领域提供了两个方便易用且功能强大的操作系统之后,又从头设计了Windows CE,以面向更为广大的移动计算、信息家电等被微软称之为“非PC”的应用领域。微软希望在这一新的应用领域仍然能够扮演操作系统平台、开发工具和通用软 件供应商的传统角色。   
    若把CE看作是电脑启蒙(Computer Evangelism),就更能充分反映微软从头设计一个全新的操作系统的意义。   
    嵌入式操作系统是一种用途广泛的系统软件。工业控制是它的传统应用领域,在这一领域里已有一些存在了多年的比较成功的嵌入式操作系统。但近年来随着家 电信息化成为愈来愈明显的趋势,对嵌入式操作系统提出了许多新的要求,例如熟悉和友好的用户界面、统一的编程界面、强大的通讯功能等等都已变得日趋重要。 
    而恰好从一开始,微软就以其操作系统产品而闻名。从MS DOS到Windows 9x/NT、以及现在的Windows CE,微软公司最强大的软件产品往往是那些最终用户看不见的产品。Windows操作系统包含用户可见部分以及用于与计算机交互的用户界面部分,但还有许多更强大的功能是“冰山隐藏在水面之下的部分”,例如与其他计算机通讯的能力、 多媒体等等。Windows CE就是具备这些强大功能的、微软的操作系统家族中的最新成员。 
    Windows CE的设计目标    
    Windows CE的设计目标是:模块化及可伸缩性、实时性能好,通信能力强大,支持多种CPU。 
    从操作系统内核的角度看,Windows CE具有灵活的电源管理功能,包括睡眠/唤醒模式。在Windows CE中,还使用了对象存储(Object Store)技术,包括文件系统、注册表及数据库。它还具有很多高性能、高效率的操作系统特性,包括按需换页、共享存储、交叉处理同步、支持大容量堆 (Heap)等。 
    Windows CE拥有良好的通信能力。它广泛支持各种通信硬件,亦支持直接的局域网连接以及拨号连接,并提供与PC、内部网以及Internet的连接,包括用于应用 级数据传输的设备至设备间的连接。在提供各种基本的通信基础结构的同时,Windows CE还提供与Windows 9x/NT的最佳集成和通信。    
    Windows CE的图形用户界面相当出色。它拥有基于Microsoft Internet Explorer的Internet浏览器,此外,还支持TrueType字体。开发人员可以利用丰富灵活的控件库在Windows CE环境下为嵌入式应用建立各种专门的图形用户界面。Windows CE甚至还能支持如手写体和声音识别、动态影像、3D图形等特殊应用。

    Windows CE 常见误解纠正

    误解一:Windows CE等于手持电脑。   
    Windows CE是模块化、结构化的操作系统,也是许多截然不同的设备的基础,而不仅支持手持电脑。    
    误解二:Windows CE是Windows 95或NT的简化版。   
    Windows CE是基于Win32 API而从头开发的,是新型的信息设备的平台。    
    误解三:掌上电脑是手持电脑的一种。    
    掌上电脑 (Palm PC)的操作系统内核与手持电脑(Handheld PC)一样,但各自有其独特的用户界面和应用程序。 
    Windows CE作业系统是Windows家族中的成员,专门设计给掌上型电脑(HPCs)所使用的电脑环境。这样的作业系统可使完整的可携式技术与现有的 Windows桌面技术整合工作。Windows Mobile 2003 for Smartphone操作系统与Windows Mobile 2003 for Pocket PC操作系统一样,都是基于Windows CE架构的。

    二.嵌入式操作系统选择原则和对比

    下面介绍了选择嵌入式操作系统应遵循的六条原则,并比较了目前几种嵌入式操作系统VxWorks、WindowsCE、嵌入式Linux、μC/OS-Ⅱ等各自的优缺点。 
    嵌入式系统是以应用为中心,软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。

    一、嵌入式操作系统的发展

    作为嵌入式系统(包括硬、软件系统)极为重要的组成部分的嵌入式操作系统,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。

    嵌入式操作系统伴随着嵌入式系统的发展经历了四个比较明显的阶段:

    第一阶段:无操作系统的嵌入算法阶段,以单芯片为核心的可编程控制器形式的系统,具有与监测、伺服、指示设备相配合的功能。应用于一些专业性极强的工业控制系统中,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。系统结构和功能都相对单一,处理效率较低,存储容量较小,几乎没有用户接口。

    第二阶段:以嵌人式CPU为基础、简单操作系统为核心的嵌入式系统。CPU种类繁多,通用性比较差;系统开销小,效率高;一般配备系统仿真器,操作系统具有一定的兼容性和扩展性;应用软件较专业,用户界面不够友好;系统主要用来控制系统负载以及监控应用程序运行。

    第三阶段:通用的嵌人式实时操作系统阶段,以嵌入式操作系统为核心的嵌入式系统。能运行于各种类型的微处理器上,兼容性好;内核精小、效率高,具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口(APl);嵌入式应用软件丰富。

    第四阶段:以基于Internet为标志的嵌入式系统。这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Intemet的结合将代表着嵌入式技术的真正未来。

    二、使用实时操作系统的必要性

    嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。

    1.嵌人式实时操作系统提高了系统的可靠性。在控制系统中,出于安全方面的考虑,要求系统起码不能崩溃,而且还要有自愈能力。不仅要求在硬件设计方面提高系统的可靠性和抗干扰性,而且也应在软件设计方面提高系统的抗干扰性,尽可能地减少安全漏洞和不可靠的隐患。长期以来的前后台系统软件设计在遇到强干扰时,使得运行的程序产生异常、出错、跑飞,甚至死循环,造成了系统的崩溃。而实时操作系统管理的系统,这种干扰可能只是引起若干进程中的一个被破坏,可以通过系统运行的系统监控进程对其进行修复。通常情况下,这个系统监视进程用来监视各进程运行状况,遇到异常情况时采取一些利于系统稳定可靠的措施,如把有问题的任务清除掉。

    2.提高了开发效率,缩短了开发周期。在嵌入式实时操作系统环境下,开发一个复杂的应用程序,通常可以按照软件工程中的解耦原则将整个程序分解为多个任务模块。每个任务模块的调试、修改几乎不影响其他模块。商业软件一般都提供了良好的多任务调试环境。

    3.嵌入式实时操作系统充分发挥了32位CPU的多任务潜力。32位CPU比8、16位CPU快,另外它本来是为运行多用户、多任务操作系统而设计的,特别适于运行多任务实时系统。32位CPU采用利于提高系统可靠性和稳定性的设计,使其更容易做到不崩溃。例如,CPU运行状态分为系统态和用户态。将系统堆栈和用户堆栈分开,以及实时地给出CPU的运行状态等,允许用户在系统设计中从硬件和软件两方面对实时内核的运行实施保护。如果还是采用以前的前后台方式,则无法发挥32位CPU的优势。从某种意义上说,没有操作系统的计算机(裸机)是没有用的。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。

    三、嵌入式操作系统选型

    当我们在设计信息电器、数字医疗设备等嵌入式产品时,嵌入式操作系统的选择至关重要。一般而言,在选择嵌入式操作系统时,可以遵循以下原则。总的来说,就是“做加法还是做减法”的问题。 
    (一)市场进入时间

    制定产品时间表与选择操作系统有关系,实际产品和一般演示是不同的。目前是Windows程序员可能是人力资源最丰富的。现成资源最多的也就可能是 WinCE。使用WinCE能够很快进入市场。因为WinCE+X86做产品实际上是在做减法,去掉你不要的功能,能很快出产品,但伴随的可能是成本高,核心竞争力差。而某些高效的操作系统可能由于编程人员缺乏,或由于这方面的技术积累不够,影响开发进度。

    (二)可移植性

    操作系统相关性。当进行嵌入式软件开发时,可移植性是要重点考虑的问题。良好的软件移植性应该比较好,可以在不同平台、不同系统上运行,跟操作系统无关。软件的通用性和软件的性能通常是矛盾的。即通用以损失某些特定情况下的优化性能为代价。很难设想开发一个嵌入式浏览器而仅能在某一特定环境下应用。反过来说,当产品与平台和操作系统紧密结合时,往往你的产品的特色就蕴含其中。

    (三)可利用资源

    产品开发不同于学术课题研究,它是以快速、低成本、高质量的推出适合用户需求的产品为目的的。集中精力研发出产品的特色,其他功能尽量由操作系统附加或采用第三方产品,因此操作系统的可利用资源对于选型是一个重要参考条件。Linux和WinCE都有大量的资源可以利用,这是他们被看好的重要原因。其他有些实时操作系统由于比较封闭,开发时可以利用的资源比较少,因此多数功能需要自己独立开发。从而影响开发进度。近来的市场需求显示,越来越多的嵌入式系统,均要求提供全功能的Web浏览器。而这要求有一个高性能、高可靠的GUI的支持。

    (四)系统定制能力 
    信息产品不同于传统PC的Wintel结构的单纯性,用户的需求是千差万别的,硬件平台也都不一样,所以对系统的定制能力提出了要求。要分析产品是否对系统底层有改动的需求,这种改动是否伴随着产品特色?Linux由于其源代码开放的天生魅力,在定制能力方面具有优势。随着WinCE3.0原码的开放,以及微软在嵌入式领域力度的加强,其定制能力会有所提升。

    (五)成本

    成本是所有产品不得不考虑的问题。操作系统的选择会对成本有什么影响呢?Linux免费,WinCE等商业系统需要支付许可证使用费,但这都不是问题的答案。成本是需要综合权衡以后进行考虑的——选择某一系统可能会对其他一系列的因素产生影响,如对硬件设备的选型、人员投入、以及公司管理和与其他合作伙伴的共同开发之间的沟通等许多方面的影响。

    (六)中文内核支持

    国内产品需要对中文的支持。由于操作系统多数是采用西文方式,是否支持双字节编码方式,是否遵循GBK,GBl8030等各种国家标准,是否支持中文输入与处理,是否提供第三方中文输入接口是针对国内用户的嵌入式产品的必需考虑的重要因素。

    上面提到用WinCE+x86出产品是减法,这实际上就是所谓PC家电化;另外一种做法是加法,利用家电行业的硬件解决方案(绝大部分是非x86的)加以改进,加上嵌入式操作系统,再加上应用软件。这是所谓家电PC化的做法,这种加法的优势是成本低,特色突出,缺点是产品研发周期长,难度大(需要深入了解硬件和操作系统)。如果选择这种做法,Linux是一个好选择,它让你能够深入到系统底层,如果你愿意并且有能力。

    四、几种代表性嵌入式操作系统比较

    (一)VxWorks

    VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是Tornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。

    VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。

    然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的硬件数量有限。

    (二)Windows CE

    Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操作系统。为建立针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,并且通常适用于那些对内存占用空间具有一定限制的设备。它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200KB的ROM。由于嵌入式产品的体积、成本等方面有较严格的要求,所以处理器部分占用空间应尽可能的小。系统的可用内存和外存数量也要受限制,而嵌入式操作系统就运行在有限的内存(一般在ROM或快闪存储器)中,因此就对操作系统的规模、效率等提出了较高的要求。从技术角度上讲,Windows CE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的定制;在效率、功耗方面的表现并不出色,而且和Windows一样占用过的系统内存,运用程序庞大;版权许可费也是厂商不得不考虑的因素。

    (三)嵌入式Linux

    这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,在近一年多以来成为研究热点,据IDG预测嵌入式Linux将占未来两年的嵌入式操作系统份额的50%。

    由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。遵从GPL,无须为每例应用交纳许可证费。有大量的应用软件可用。其中大部分都遵从GPL,是开放源代码和免费的。可以稍加修改后应用于用户自己的系统。有大量的免费的优秀的开发工具,且都遵从GPL,是开放源代码的。有庞大的开发人员群体。无需专门的人才,只要懂Unix/Linux和C语言即可。随着 Linux在中国的普及,这类人才越来越多。所以软件的开发和维护成本很低。优秀的网络功能,这在Internet时代尤其重要。稳定——这是Linux 本身具备的一个很大优点。内核精悍,运行所需资源少,十分适合嵌入式应用。

    支持的硬件数量庞大。嵌入式Linux和普通Linux并无本质区别,PC上用到的硬件嵌入式Linux几乎都支持。而且各种硬件的驱动程序源代码都可以得到,为用户编写自己专有硬件的驱动程序带来很大方便。

    在嵌入式系统上运行Linux的一个缺点是Linux体系提供实时性能需要添加实时软件模块。而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部分。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点。

    (四)μC/OS一Ⅱ

    μC/OS一Ⅱ是著名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于8位,16位和32位单片机或数字信号处理器(DSP)。它是在原版本 μC/OS的基础上做了重大改进与升级,并有了近十年的使用实践,有许多成功应用该实时内核的实例。它的主要特点如下:

    * 公开源代码,容易就能把操作系统移植到各个不同的硬件平台上;
    * 可移植性,绝大部分源代码是用C语言写的,便于移植到其他微处理器上;
    * 可固化;
    * 可裁剪性,有选择的使用需要的系统服务,以减少斗所需的存储空间;
    * 占先式,完全是占先式的实时内核,即总是运行就绪条件下优先级最高的任务;
    * 多任务,可管理64个任务,任务的优先级必须是不同的,不支持时间片轮转调度法;
    * 可确定性,函数调用与服务的执行时间具有其可确定性,不依赖于任务的多少;
    * 实用性和可靠性,成功应用该实时内核的实例,是其实用性和可靠性的最好证据。
    
    由于μC/OS一Ⅱ仅是一个实时内核,这就意味着它不像其他实时存在系统那样提供给用户的只是一些API函数接口,还有很多工作需要用户自己去完成。
    

    ##五、结束语

    在嵌入式应用中,使用实时操作系统(RTOS)是当前嵌入式应用的一个特点,一种趋势,也是单片机应用从低水平向高水平的一个进步。在实际的应用中,根据不同的要求和条件选择合适的操作系统,使开发工作更容易,设计出更完美的嵌入式系统。

    展开全文
  • 聊一聊嵌入式中常用的实时操作系统(RTOS)

    万次阅读 多人点赞 2018-09-19 21:09:10
    一提到嵌入式操作系统,自然绕不开嵌入式Linux操作系统嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行。它性能优异,软件移植容易,代码开放,有许多应用软件支持,...

    嵌入式Linux系统 VS RTOS

    一提到嵌入式的操作系统,自然绕不开嵌入式Linux操作系统。嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行。它性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,所以在不同行业,尤其是消费类电子产品中广泛使用。

      然而即便如此,嵌入式Linux操作系统也有其难以弥补的缺陷:

    - Linux操作系统有庞大的内核,对任何中断指令的响应都需要一个复杂的处理过程,对一些需要快速响应的场合显得有些力不从心。

    - 软硬件成本较高,需要功能强劲的MCU和外部资源,不适用于低成本的产品

    - 相对而言,配备嵌入式Linux会导致功耗较高,不适用于功耗要求严格应用场合

     

    因为上述提及的一些缺陷,所以在对实时性要求比较高,成本控制比较严格或者低功耗应用等场合,常常会使用实时操作系统RTOS。(注:原生Linux系统是分时操作系统,一些衍生的嵌入式Linux进行了优化和改进,也能做到很高的实时性,也可以认为是RTOS)。

    简单来说,实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系 统作出快速响应,并控制所有实时任务协调一致运行的操作系统。主要特点如下:

    1)高精度计时系统

    计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。

    2)多级中断机制

    一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。

    3)实时调度机制

    实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。

     

    RTOS使用现状

    一起来看一份某调查机构关于嵌入式操作系统的调研结果。(摘自2015全球嵌入式市场分析报告)

    调查用户分布

     

    操作系统占有率

     

    下一年度考虑使用的操作系统比例

    从调查结果可以看到市场占用率前两名分别为uc/OS(II + III 27%)和FreeRTOS(22%)。这两款RTOS即便在国内用的比较多。除此之外,从我了解的情况来说,国内也有不少人士使用Keil RTX,TI的DSP/BIOS。另外由国内人士自己开发的RT-Thread近几年也越来越多人使用。

     

    uc/OS

    俗话说得好,早起的鸟儿有虫吃。uc/OS能够在国内普及的很大一个原因是因为uc/OS比较早被介绍到中国,早在七八年前小编上大学期间,就有uc/OS的课程,教材用的是邵贝贝教授翻译的《嵌入式实时操作系统uC/OS-II》。这本书也让许多行业人士入了RTOS的门。另外uc/OS教材案例丰富,官网也有提供基于不同嵌入式芯片移植好的demo,交流论坛也有不少,大大降低了使用门槛。详细介绍就不贴上,相信大家再熟悉不过了。然而商业上使用uc/OS是需要付版权费的,而且费用不菲。所以虽然国内用的人很少,但是真正向Micrium公司购买版权的公司全中国估计不超过10个(至少2012年的时候,只有两家公司有购买版权)。官网链接: 

    https://www.micrium.com/

     

    FreeRTOS

    FreeRTOS欧美用得比较多,以前的公司有个与欧美同事合作项目,人家点名要求使用FreeRTOS。国内目前用得并不算太多,但是发展趋势不错。

    同uc/OS类似,FreeRTOS也是一个轻量级的实时操作系统内核,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。官网的移植demo和教程现在也非常全面了,基本上的嵌入式芯片都已经覆盖,可以前往官网下载。相比uc/OS,FreeRTOS的主要优势在于:

    - 内核文件占用RAM,ROM的要求少一些(其实差异不大,但是对于片内资源较少的MCU也算是一种优势)

    - 支持协程,可以共享stack,进一步降低RAM的消耗

    - 支持有同等优先级的任务,可以使用时间片轮转的方式进行调度

    - 当然,最终要的是商业使用是免费的

     

    TI DSP/BIOS

    DSP/BIOS是TI公司特别为其TMS320C6000TM,TMS320C5000TM和TMS320C28xTM系列DSP平台(貌似现在已经支持更多TI的芯片)所设计开发的一个尺寸可裁剪的实时多任务操作系统内核,具有实时操作系统的诸多功能,如任务的调度管理、任务间的同步和通信、内存管理、实时时钟管理、中断服务管理、外设驱动程序管理等。如果你有使用上述DSP芯片,建议你使用这款RTOS。之前使用过一段时间,我觉得它最大的优势在于TI已经将DSP/BIOS集成到了CCS开发环境中了,你可以通过可视化界面去配置任务,中断,时钟,资源分配等,简单易上手。

     

    RT-Thread

    RT-Thread是一款来自中国的开源嵌入式实时操作系统,由国内一些专业开发人员从2006年开始开发、维护,除了类似FreeRTOS和UCOS的实时操作系统内核外,也包括一系列应用组件和驱动框架,如TCP/IP协议栈,虚拟文件系统,POSIX接口,图形用户界面,FreeModbus主从协议栈,CAN框架,动态模块等,因为系统稳定,功能丰富的特性被广泛用于新能源,电网,风机等高可靠性行业和设备上,已经被验证是一款高可靠的实时操作系统。

            RT-Thread实时操作系统遵循GPLv2+许可证,实时操作系统内核及所有开源组件可以免费在商业产品中使用,不需要公布应用源码,没有任何潜在商业风险。这款RTOS只在若干年前关注过,一直没亲自体验过,希望这款国人自己开发的RTOS能越走越远,真正开启下一代操作系统演化。官网链接:http://www.rt-thread.org/

     

    本期就这样了。觉得写得不错的话,欢迎关注本公众号。

     

    展开全文
  • 嵌入式操作系统? 标准:可移植:X86,ARM,DSP,PowerPC(可以运行在不同CPU体系结构上的机器) 错误:认为嵌入式操作系统为开源 嵌入式操作系统(主流): Vxworks:美国宇航局:航空、军事、工业(实时性:在...
    • 嵌入式操作系统?

    标准:可移植:X86,ARM,DSP,PowerPC(可以运行在不同CPU体系结构上的机器)

    错误:认为嵌入式操作系统为开源

    嵌入式操作系统(主流):

    1. Vxworks:美国宇航局:航空、军事、工业(实时性:在规定时间完成完成规定动作)缺点:不开源、付费
    2. winCE:微软出品、不开源(出租车、POS机):金融
    3. ucosii:小型实时操作系统(5000+行);8,16;51+ucosii stm32 + ucosii
    4. Linux:开源、无实时性 安卓内核是Linux内核

    (了解iOS、安卓、鸿蒙(方舟编译器)


    • Linux简介

    1. 开源运动:

    GPL协议 : 开源社区协议

    Unix(商业软件)之父==C语言之父 :丹尼斯里奇(贝尔实验室)

    POSIX标准 :可移植操作系统接口(达到兼容目的)

    GNU计划 :GNU is not unix

    Githup(世界最大开源社区)


    • Linux的安装

    1. 安装系统:双系统;虚拟机+Linux;

             后者好处:1、Windows/Linux之间切换更容易;2、容易修复

             虚拟机:通过软件的方法模拟一台PC机;(VMware、virtulBox、virtulPC)

    1. 虚拟机的作用:用软件的方法模拟一台PC机
    2. 虚拟机种类:Vmware(Windows环境)、virtualBox(Windows、Linux、MACos)、virtualPC(微软)
    3. Redhat(企业版本、个人版本、CentOS)、Ubuntu(19.04;14.10;16.04; 16.10) 

    ·Linux的使用(命令):

    1. Linux和Windows定位:(开发人员、普通用户)  (命令的效率比鼠标高)
    2. Linux命令:用户管理、文件操作、进程管理、网络管理、设备管理、系统管理
    3. Ctrl+空格切换中英文
    4. 向日葵:远程登陆电脑(windows)/  SSH (xshell)
    5. linux一点哲学:一切皆为文件

    文件分类: - 普通文件、d目录文件、c/d设备文件、l链接文件(ls;-l)

    p:管道文件s:  共享文件;  f: 堆栈文件


    r 可读   w可写   x可执行

    rwx当前用户对文件访问权限 

    cd / 根目录

    bin:命令 (普通用户)

    dev:设备文件

    etc:配置文件

    lib:系统运行时所需要的库文件

    usr:程序安装的路径

    home:普通用户的工作目录

    root:超级用户的工作目录

    shell:命令解析器 ./a.out

     

    proc:虚拟文件系统(通过更改其中某些文件改变内核运行状态

    sys:文件系统管理设备

    mnt:自动挂载目录


    绝对路径(从根目录开始)    可唯一确定文件  pwd

    相对路径(从当前目录开始)

    展开全文
  • 五种常见的嵌入式操作系统

    万次阅读 2018-10-09 14:21:29
    同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存...
  • 几种常见嵌入式操作系统之比较
  • 嵌入式操作系统--linux基础 学习内容: 提示:这里可以添加要学的内容 例如: 1、 搭建 Java 开发环境 2、 掌握 Java 基本语法 3、 掌握条件语句 4、 掌握循环语句 学习时间: 1、操作系统 2、操作系统的主要组成 ...
  • 11种基于ARM的嵌入式操作系统

    万次阅读 2018-06-05 15:22:40
    来源于:...Android 作为一个完全开源的操作系统,是由操作系统Linux、中间件以及核心应用程序组成的软件栈。通过 android SDK 提供的 API 以及相应的开发工具, 程序员可以很方便的开发...
  • 常用嵌入式操作系统介绍

    千次阅读 2017-03-11 12:42:45
    VxWorks操作系统是WinRiver(美国风河系统)公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它具有良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域牢牢地占据着...
  • 很多朋友都喜欢嵌入式操作系统的内容,但是如何实现和仿真这样一个系统一直是困扰我们的难题。现在郑重推荐一下raw-os系统,在我们的博客当中也多次提到了这个代码,希望大家可以多多阅读,不断加深对os的认识。如果...
  • 文全刚主编的《嵌入式Linux操作系统原理与应用(第3版普通高校十三五规划教材)》主要内容分成3个部分:**部分介绍嵌入式操作系统基础,包括第1章和第2章;第二部分介绍基于嵌入式Linux软件的开发,包括BootLoader、...
  • 1 通过对Linux 操作系统的定制安装,建立对Linux操作系统的初步认识,为后续实验的进行提供基础平台。 2 掌握Linux操作系统的虚拟机定制安装。 3 熟悉Linux文件目录结构 二、实验内容和原理 实验内容:利用虚拟机...
  • 三种嵌入式操作系统比较

    千次阅读 2011-01-11 12:51:00
    <br />1 嵌入式系统与嵌入式操作系统  <br /> 1.1 嵌入式系统  <br /> 嵌入式系统是以嵌入式计算机为技术核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、成本、...
  • 除了智能数字终端领域以外,Linux在移动计算平台、智能... RT-Linux 这是由美国墨西哥理工学院开发的嵌入式Linux操作系统。到目前为止,RT-Linux已 经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图
  • 武汉深之度科技有限公司(以下简称深度科技)成立于 2011 年,是专注基于 Linux 的国产操作系统研发与服务的商业公司。 作为国内顶尖的操作系统研发团队,深度科技以提供安全可靠、美观易用的
  • 七款嵌入式Linux操作系统简介

    千次阅读 2005-03-26 09:21:00
    七款嵌入式Linux操作系统简介2005-01-13 10:44:56 来自:linux先生除了智能数字终端领域以外,Linux在移动计算平台、智能工业控制、金融业终端系统,甚至军事领域都有着广泛的应用前景。这些Linux被统称为“嵌入式...
  • 2. 怎么学习嵌入式Linux操作系统 本文假设您是零基础,以实用为主,用最快的时间让你入门;后面也会附上想深入学习时可以参考的资料。 在实际工作中,我们从事的是“操作系统”周边的开发,并不会太深入学习、修改...
  • 浅谈嵌入式LINUX操作系统的概念和特点 作者:魏 民 来源:自动化博览 发布时间:2005.01.24
  • 嵌入式Linux操作系统简介

    千次阅读 2015-12-27 21:04:09
    嵌入式Linux操作系统介绍  嵌入式Linux操作系统,是个与生俱来的网络操作系统且成熟稳定。其为开源软件且源代码开放,不存在黑箱技术,按照GPL公约任何人都可以对它进行修改添加新的功能形成自己的产品。可以对...
  • 嵌入式系统凭借着其优质的软硬件平台优势在工程机械和电气自动化控制领域得到了广泛应用,它能使控制系统更加方便、科学。本文通过阐述嵌入式系统在电气自动化控制系统中的应用实现,研究论述了嵌入式系统的实用价值...
  • 韦东山嵌入式Linux第一期视频

    万人学习 2014-11-29 12:20:18
    掌握常用的硬件部件的操作,比如GPIO,UART,I2C,LCD,触摸屏; 深入理解ARM体系统架构,可以写出具备中断功能的裸板程序,对程序现场的保存、恢复有所了解,这些原理适用于任何架构CPU,适用于内核及应用程序; ...
  • 国产嵌入式操作系统发展思考

    千次阅读 2020-09-18 12:53:20
    点击上方“大鱼机器人”,选择“置顶/星标公众号”福利干货,第一时间送达!作者 | 何小庆责编 | 屠敏出品 | CSDN(ID:CSDNnews)嵌入式操作系统历史悠久、门类繁多、用途广...
  • 主攻嵌入式Linux操作系统及其上应用软件开发目标: (1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3) ...
  • 近段时间在学数据库,因为自身需求,所以注重研究了点嵌入式sqlite数据库,SQLite,是一款轻型的数据库,是遵守ACID...它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP
  • FlyThings OS 是深圳市中科世为科技有限公司基于Linux深度裁剪定制开发的一套小型嵌入式操作系统。系统以Linux为基础自主开发了一个应用开发框架,实现了一套物联网等领域下的一套带人机界面的操作系统。替代传统...
  • 一、 Linux嵌入式系统操作系统是一种在计算机上运行的软件,它的主要任务是管理计算机上的系统资源,为用户提供使用计算机及其外部设备的接口。它存在的目的是为了管理所有硬件资源,并且提供应用软件一个合适的操作...
  • Palm OS是一种32位的嵌入式操作系统。Palm提供了串行通信接口和红外线传输接口;利用它可以方便地与其它外部设备通信、传输数据;拥有开放的OS应用程序接口,开发商可根据需要自行开发所需的应用程序。Palm OS是...
  • Linux嵌入式实时操作系统开发与设计(一)

    万次阅读 热门讨论 2004-06-28 21:04:00
    这是杨立峰的Blog,主要介绍嵌入式实时Linux方面的内容.本人毕业于重庆工学院(现在叫重庆理工大学),专业是自动化.目前在Linux下进行开发工作,对嵌入式方面感兴趣,希望有共同爱好的大家一起来交流学习.这篇文章是我的...
  • 嵌入式linux操作系统虚拟机nfs配置

    千次阅读 2012-05-03 15:01:52
    在做嵌入式系统开发时,会碰到开发板上的flash资源会出现短缺的情况,例如在友善的mini2440上移植Qtopia4.3.5时,板载资源不够, 我的开发板的flash是64M,一个完整Qtopia的lib文件就有24M左右,这样板载的资源就远...
  • 嵌入式操作系统LINUX):

空空如也

1 2 3 4 5 ... 20
收藏数 4,255,874
精华内容 1,702,349
关键字:

嵌入式操作系统