嵌入式操作系统_C_OS_研究
- 格式:pdf
- 大小:357.78 KB
- 文档页数:2
C语言嵌入式操作系统裸机和RTOS C语言嵌入式操作系统裸机与RTOS嵌入式操作系统(Embedded Operating System,简称EOS)是一种专为嵌入式设备设计的操作系统,它具有小巧、高效、实时等特点。
而裸机编程是指在嵌入式系统中,直接与硬件进行交互编程的方式,不依赖于任何操作系统。
RTOS(Real-time Operating System,实时操作系统)是一种提供实时响应的操作系统,针对嵌入式系统而设计。
本文将介绍C语言嵌入式操作系统裸机编程和RTOS编程的基础知识和技巧。
一、裸机编程入门在进行裸机编程之前,我们需要了解硬件平台的相关信息,包括处理器型号、寄存器、外设等。
然后,我们可以通过配置寄存器来初始化硬件设备,设置中断服务程序,并编写具体的功能代码。
在裸机编程中,我们需要注意时间分片、中断处理和资源管理等问题。
二、裸机编程与RTOS的区别1. 复杂性:裸机编程相对简单,因为我们可以直接访问硬件资源。
而RTOS编程需要考虑任务调度、资源互斥、消息传递等复杂的操作系统特性。
2. 实时性:RTOS可以提供更好的实时性能,可以用于要求较高实时响应的应用场景。
而裸机编程的实时性取决于程序的具体实现。
3. 可移植性:裸机编程通常与特定的硬件平台绑定,不具备通用的可移植性。
而RTOS提供了抽象层,可以将应用程序与底层硬件解耦,提高了可移植性。
三、RTOS编程基础1. 任务管理:RTOS允许将应用程序划分为多个任务,并通过任务调度器进行管理。
每个任务执行特定的功能,实现任务之间的并发执行。
2. 中断处理:RTOS提供了中断处理机制,可以对不同的中断进行响应和处理。
中断处理程序可以与任务同时运行,保证了系统的实时性。
3. 时间管理:RTOS提供了时间管理功能,可以进行时间片轮转调度、优先级调度等,确保任务按照预定的时间顺序执行。
4. 同步与互斥:RTOS提供了信号量、互斥锁等机制,用于管理共享资源的访问。
嵌入式系统中的操作系统选择在现代的嵌入式系统设计中,选择一个合适的操作系统对于系统的稳定性、性能和适应性都起着至关重要的作用。
基于不同的应用需求,嵌入式系统开发人员可以选择不同的操作系统,在设计阶段就将系统的功能需求和性能需求分别考虑进去,以便完成一个高质量和可靠可控的嵌入式系统。
一般来说,嵌入式系统可以分为实时嵌入式系统和非实时嵌入式系统两类。
实时嵌入式系统对于响应时间、延迟时间和中断处理速度等都有高要求,因此需要选择一种采用实时调度算法的操作系统来满足需求。
而非实时嵌入式系统往往需要处理网络通信、数据管理和多媒体等,需要选择一种非实时操作系统来满足需求。
以下将介绍常用的嵌入式操作系统及其特点。
1. 常见的实时操作系统(1)FreeRTOSFreeRTOS是一种基于内核抢占的实时操作系统,通常用于小型嵌入式系统。
它提供了小巧、可移植、高效的内核,并包含了许多功能实现的细节,使得它成为程序员和工程师的首选。
它适用于单一应用程序和多任务应用程序,并且可以方便地配置和扩展。
(2)VxWorksVxWorks是一种实时多任务操作系统,广泛应用于航天、军事、网络、机器人和医疗等领域。
它支持多种处理器架构、网络协议、文件系统和通信协议,并且具有高度可靠性和可扩展性。
它还支持多种开发环境和调试工具,使得开发和测试嵌入式系统变得非常方便。
(3)μC/OSμC/OS是一种小型实时操作系统,适用于单片机和其他小型处理器。
它提供了可定制的底层接口和一组高效的内核,可支持多任务、多线程、多进程和中断处理。
它具有小巧、高效、可移植和可扩展等特点,被广泛应用于汽车控制、仪器仪表、家电应用等领域。
2. 常见的非实时操作系统(1)LinuxLinux是一种开源的普通操作系统,它的内核是非实时的,可以应用于各种嵌入式系统。
它拥有强大的网络功能、通用文件系统和各种可用的驱动程序、应用程序等。
由于它是开源的,因此在开发过程中可以得到广泛的技术支持和文档资料,具有良好的可扩展性和稳定性。
嵌入式操作系统有哪些?下面介绍国外和国内常用的实时操作系统。
1.国外著名的实时操作系统国外实时操作系统已经从简单走向成熟,有代表性的产品主要有VxWorks,QNX,Palm OS,Windows CE等,占据了机顶盒、PDA等的绝大部分市场。
其实,实时操作系统并不是一个新生的事物,从20世纪80年代起,国际上就有一些IT组织、公司开始进行商用嵌入式系统和专用操作系统的研发。
(1)VxWorksVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种实时操作系统。
VxWorks 拥有良好的持续发展能力、高性能的内核以及良好的用户开发环境,在实时操作系统领域内占据一席之地。
它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、导弹制导、飞机导航等。
在美国的F-16、FA-18战斗机,B-2隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用了VxWorks。
它是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。
它支持多种处理器,如x86,i960,Sun Sparc,Moto--rola MC68xxx,MIPS RX000,Power PC,ARM,StrongARM等。
大多数的VxW---orksAPI是专有的。
(2)QNXQNX是一个实时的、可扩充的操作系统;它部分遵循POSIX相关标准,如POSIX.1b实时扩展;它提供了一个很小的微内核以及一些可选的配合进程。
其内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间中运行。
所有其他操作系统服务都实现为协作的用户进程,因此QNX内核非常小巧(QNX4.x大约为12KB),而且运行速度极快。
这个灵活的结构可以使用户根据实际的需求,将系统配置成微小的嵌入式操作系统或包括几百个处理器的超级虚拟机操作系统。
单片机嵌入式操作系统选择指南适合你的系统在嵌入式系统领域,单片机是一种重要的组成部分,而选择合适的操作系统对于单片机的功能和性能起着决定性的作用。
本文将介绍一些常见的单片机嵌入式操作系统,并针对不同应用场景提供一些建议,以帮助选择适合你的系统。
一、嵌入式操作系统的重要性嵌入式系统通常用于控制和管理各种设备,如智能家居、医疗设备、交通工具等。
选择合适的嵌入式操作系统可以提升系统的稳定性、安全性和性能。
以下是一些常见的嵌入式操作系统。
二、常见的嵌入式操作系统1. 实时操作系统(RTOS)实时操作系统(RTOS)是一种专门设计用于处理实时任务的操作系统。
它具有以下特点:高度可靠、响应时间短、实时性强。
常见的RTOS有嵌入式Linux、FreeRTOS、uC/OS等。
2. 裸机编程裸机编程是指直接在单片机上编写程序,不依赖于操作系统。
这种方式效率高,资源占用少,但对开发者的要求较高。
3. 嵌入式Linux嵌入式Linux是一种基于Linux内核的操作系统,具有强大的功能和广泛的应用领域。
它支持多线程、网络连接、文件系统等特性,适用于对功能要求较高的嵌入式系统。
4. uC/OSuC/OS是一种采用优先级调度算法的实时操作系统,具有较小的内存占用和快速的响应时间。
它适用于对实时性要求较高的系统,如工业自动化和航空航天。
5. FreeRTOSFreeRTOS是一种开源的实时操作系统,具有小巧、高效、可靠的特点。
它适用于资源受限、对实时性要求较高的系统,如传感器节点和嵌入式设备。
三、选择适合的操作系统在选择嵌入式操作系统时,需要考虑以下几个因素:1. 功能需求首先需要明确系统的功能需求,包括任务调度、网络连接、文件系统等。
根据需求选择适合的操作系统。
2. 系统的资源限制考虑系统的处理能力、内存大小等资源限制。
对于资源受限的系统,选择轻量级的操作系统或裸机编程可能更为合适。
3. 开发人员的经验和技术开发人员的经验和技术能力对选择操作系统也起着关键的作用。
嵌入式系统一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材。
它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。
简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。
嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。
嵌入式系统几乎包括了生活中的所有电器设备,如掌上PDA、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等。
嵌入式系统的硬件部分,包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。
嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用EPROM、EEPROM或闪存(Flash Memory)作为存储介质。
软件部分包括操作系统软件(要求实时和多任务操作)和应用程序编程。
应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
一、嵌入式系统概述嵌入式系统是指以应用为目的,嵌入于各种设备及应用产品内部的计算机系统。
简单地说就是系统的应用软件与硬件一体化。
这种系统具有软件代码小,高度智能化,响应速度快等特点,特别适合于要求实时的和多任务的体系。
嵌入式系统一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材。
它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。
一般情况下,嵌入式操作系统可以分为两类,一类是面向控制、通信等领域的实时操作系统,如WindRiver公司的VxWorks、ISI的pSOS、QNX 系统软件公司的QNX、ATI的Nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书、WebPhone等。
嵌入式系统的核心构件以及其历史和未来的发展趋势。
嵌入式系统是一个软硬件结合的系统,微处理器和嵌入式操作系统是嵌入式系统的核心,构成了嵌入式系统发展和应用的主线。
从过去的8位微控制器发展到现在的32位微控制器,从简单的无限循环结构发展到现在的多任务多线程的实时操作系统阶段,嵌入式领域已经发生了深刻的变革。
这些变革是出于日益复杂的应用需要,这也预示着嵌入式系统将面临更多复杂的应用需要,也预示着嵌入式领域更加美好的未来。
二、嵌入式操作系统概述嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。
与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。
嵌入式实时系统中采用的操作系统称为嵌入式实时操作系统,它既是嵌入式操作系统,又是实时操作系统。
作为一种嵌入式操作系统,它具有嵌入式软件共有的可裁剪、低资源、占用、低功耗等特点;而作为一种实时操作系统,它与通用操作系统(如Windows、Unix、Linux等)相比有很大的差别,下面我们通过比较这两种操作系统之间的差距来描述实时操作系统的主要特点。
嵌入式操作系统是嵌入式技术软件的核心,嵌入式系统之上各种丰富的应用无不需要依赖一个强大的操作系统的支持。
嵌入式操作系统与普通的通用操作系统间最关键的区别在于其对实时性的要求。
由于嵌入式系统很多将要用于对时间响应要求非常苛刻的系统中,所以操作系统各个操作必须要有清晰的时间限制,实时性在嵌入式操作系统设计的各个功能中都必须得以充分的重视。
嵌入式操作系统领域现在处于百花齐放的阶段,由于嵌入式系统本身要求多样化的特点,而且有很多东西还没有成熟和规范,故各种嵌入式操作系统有着各自侧重的应用领域,各种新的应用层出不穷。
三、嵌入式操作系统μC/OS-II体系结构分析在对μC/OS-II性能改进之前,必须了解它的内核和存在的问题,这样才能有效的对其进行修改,由于嵌入式操作系统μC/OS-II本身也是一种实时操作系统,因此它的很多设计原理都是遵循实时操作系统理论。
μC/OS-II的内核可以分为:与内核加载运行相关的模块、任务管理模块、时间管理模块、事件控制块模块和内存管理模块。
任务状态分析μC/OS-II控制以下的任务状态转换图,如图所示。
任务的状态转化在任一给定的时刻,任务的状态定是处于以下几种状态之一。
睡眠态,任务驻留在程序空间之中,还没有一交给μC/OS-II管理。
把任务交给μC/OS-II是通过调用下述两个函数之一:OSTaskCreate()或OS-TaskCreateExtO。
一个任务可以通过调用OSTaskDelp返回到睡眠态,或通过调用该函数让另一个任务进入睡眠态。
就绪态,任务一旦建立,这个任务就进入了就绪态,准备运行。
任务的建立可以是在多任务运行开始之前,也可以是动态地被一个运行着的任务建立。
如果一个任务是被另一个任务建立的,而这个任务的优先级高于建立它的那个任务,则这个刚刚建立的任务将立即得到CPU的控制权。
运行态,调用OSStart()可以启动多任务。
OSStart()函数运行进入就绪态的优先级最高的任务。
任何时候只能有一个任务处于运行态。
正在运行的任务可以通过调用OSTimeDly()或OSTimeDIyHMSM()两个函数之一将自身延迟一段时间,从而这个任务进入等待状态,这样下一个优先级最高的、并进入了就绪态的任务立刻被赋予了CPU的控制权。
当等待的时间过去之后,系统服务函数OSTimeTick()使被延迟的任务进入就绪态。
正在运行的任务期待某一事件的发生时也要等待,通过调用OSSemPend()或OSM-boxPend(),或OSQPend()3个函数之一。
调用后,任务进入了等待状态。
当任务因等待事件被挂起,下一个优先级最高的任务立即得到了CPU 的控制权。
当事件发生了,被挂起的任务进入就绪态。
事件发生的消息可能来自另一个任务,也可能来自中断服务子程序。
正在运行的任务是可以被中断的,CPU就进入了中断服务态(ISR)。
响应中断时,正在执行的任务被挂起,ISR控制了CPU的使用权。
嵌入式操作系统μC/OS-II研究南华大学三力高科技开发公司贺艳松[摘要]随着网络技术和计算机技术的高速发展,嵌入式产业迅速崛起,嵌入式系统已经越来越多地应用在各个领域之中。
嵌入式操作系统作为嵌入式系统的重要组成部分,发挥着越来越重要的作用。
本文主要讨论为满足嵌入式应用领域的需要,uC/OS-II操作系统的实时性研究。
[关键词]嵌入式操作系统μC/OS-II实时性调度:优先级反转(下转第225页)222——中断服务子程序可能会报告一个或多个事件的发生,而使一个或多个任务进入就绪态。
在这种情况下,从中断服务子程序返回之前,μC/OS-II 要判定是否有更高任务进入就绪态。
如果是,则新进入就绪态的这个优先级更高的任务将得以运行,否则原来被中断了的任务继续运行。
当所有的任务都在等待事件发生或等待延迟时间结束,μC/OS-II 执行空闲任务(idle task ),执行OSTaskIdle()函数。
四、μC/OS-II 的任务调度的研究与改进μC/OS-II 内核采用了基于优先级的抢占式任务调度机制,任务分为64个优先级。
优先级最高的任务首先得到CPU 的使用权,只有等它交出使用权后,比如在设定延时,等待事件时,其他任务才可以被执行。
采用这样的任务调度机制可以保证重要的任务优先占有CPU ,满足实时系统的要求。
在实际应用当中,有许多系统要实现多任务并行处理,比如多点的温度或者气压数据采集,Internet 多点应用服务,若不能理解为一个分时系统,就不是一个好的逻辑设计,并且需要更多地考虑如何去实现不同任务的调度。
本文对μC/OS-II 的任务调度机制提出了一种改进方法,在原有的实时任务调度机制的基础上增加分时任务调度机制,使μC/OS-II 更适合于不同的应用系统。
五、优先级反转问题嵌入式实时操作系统一般都是可剥夺型内核,以保证最重要的进程(往往是优先级最高的进程)能够及时得到运行。
但是如果用传统的信号量等机制对共享资源进行互斥操作,在某些不特定的时间里会出现高优先级的进程被低优先级的进程堵塞的现象。
这种现象称为优先级反转。
参考文献[1]Jean brosse 著.嵌入式实时操作系统μC/OS-II [M ].邵贝贝等译.北京航空航天大学出版社,2002[2]彭良清.uC/OS-II 任务栈处理的一种改进方法[J ].单片机及嵌入式系统应用,2003[3]陆松年.操作系统教程[M ].北京:电子工业出版社,2000(上接第222页)图2教学评价数据流图3.4教学评价系统的体系结构设计系统我们可以设计为表示层,业务逻辑层,可持久化层和数据库层(如图3),各层任务如下:图3教学评价系统的体系结构●表示层:可以用传统的Web 开发技术HTML,ASP 和JSP 等和富客户开发技术(RIA )相结合。
●业务逻辑层:是系统架构中的核心部分。
它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计。
●持久化层:为了把数据访问细节和业务逻辑分开,把数据访问作为单独的持久化层。
持久化层封装了数据访问细节,为业务逻辑层提供了面向对象的API 。
●数据库层:主要提供对数据库进行各种操作的方法。
由于系统采用四层结构,业务逻辑层对表示层来说几乎是透明的,我们只需要在表示层为用户开发两套用户界面,就可以满足各种用户的需要,并且业务逻辑层,持久化层和数据库层不需要修改。
参考文献[1]胡章平.基于模糊综合评判的教师教学质量评估系统的设计与实现.重庆大学硕士学位论文,2006年6月3日.[2]胡建平,魏建,杨宗栋,周洁.模糊综合评判法在教师教学质量评估中的应用.上海工程技术大学学报,2005,Vo1.19No.l,71-75.[3]张涵俘.模糊诊断原理及应用.西安交通大学出版社,1992.[4]拓守恒.基于Flex 与J2EE 多层架构的R IA 智能网络考试系统的设计与实现[J ].电脑开发与应用,2010,(03):62-64,67.[5]拓守恒.基于Flex+Spring+Hibernate 框架技术的R IA 教学测评系统的设计与实现[J ].电脑开发与应用,2009,(09).(上接第223页)何节点。