版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统设计与实例开发ARM与C/OS-实时操作系统分析控制工程系火控教研室 嵌入式系统 什么是嵌入式系统 以应用为中心,以计算机技术为基础,软、硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 嵌入式系统本身是个外延极广的名词,凡是与产品结合在一起的具有嵌入式特点的控制系统都可以叫嵌入式系统。从硬件方面来讲,嵌入式系统的核心部件是嵌入式处理器。嵌入式微控制器(MCU)嵌入式DSP处理器(DSP)嵌入式微处理器(MPU)嵌入式片上系统(SOC)嵌入式系统的分类1、嵌入式系统的硬件嵌入式微处理器(MPU):是由计算机中的CPU演变而来的。它的特征是具有32位
2、以上的处理器,具有较高的性能。但与计算机处理器不同的是,在实际嵌入式应用中,它只保留与嵌入式应用紧密相关的功能硬件,去处其他的冗余功能部分,这样就以最低的功耗和资源实现了嵌入式应用的特殊要求,具有体积小、重量轻、成本低、可靠性高的优点。嵌入式处理器目前主要有ARM系列、 MIPS、 Power PC、 x86等。 嵌入式系统的分类2、嵌入式系统软件:由嵌入式操作系统和相应的各种应用程序构成。 操作系统:是连接计算机硬件和应用程序的系统程序,具有两个功能:使计算机硬件便于使用,高效组织和正确地使用计算机的资源。无操作系统-有操作系统区别?无操作系统CPUTaskInterface有操作系统Tas
3、k0Task1 InterfaceTask0Task1CPU无操作系统:1严格按所规定的顺序执行2程序执行的封闭性3独占资源,执行过程和结果不受其它程序的影响4 程序结果的可再现性(结果的确定性)5只要初始状态相同,程序多次重复运行,其结果与程序执行速度无关(连续或间断),结果都应相同。有操作系统:多任务系统可以充分的利用系统资源。嵌入式操作系统 嵌入式操作系统 微型化 可裁减性好 适时性 可靠性 易移植性 实时操作系统 分时操作系统嵌入式操作系统Embedded Operating SystemLinux,WinCE,VxWorks,OSE,Nucleus,uC/OS-II, eCos, u
4、TTRON 常见的嵌入式操作系统 实时嵌入式操作系统的种类繁多,大体上可分为两种:商用型和免费型。商用型的实操作系统功能稳定、可靠,有完善的技术支持和售后服务,但往往价格昂贵,如VxWorks、QNX、WinCE、Palm OS等。免费型的实时操作系统在价格方面具有优势,目前主要有Linux和C/OS,稳定性与服务性存在挑战。C/OS-是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。适合小型控制系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB。抢占式内核。U
5、Clinux则是继承标准Linux的优良特性,针对嵌入式处理器的特点设计的一种操作系统,具有内嵌网络协议、支持多种文件系统,开发者可利用标准Linux先验知识等优势。其编译后目标文件可控制在几百KB量级。无MMU,采用时间片轮番调度算法。免费且公开源码的:C/OS-和UClinuxC/OS简介1. C/OSMicro Controller O S,微控制器操作系统2. C/OS简介美国人Jean Labrosse 于1992年完成;应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等 ;1998年C/OS-II,目前的版本C/OS -II V2.61,
6、2.72;2000年,得到美国航空管理局(FAA)的认证,可用于飞行器中;网站www.ucos-II.com()。公开源代码可移植性(Portable) 绝大部分 C/OS-II的源码是用移植性很强的ANSI C写的。和微处理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低限度,使得 C/OS-II便于移植到其他微处理器上。 C/OS-II可以在绝大多数8位、16位、32位以至64位微处理器、微控制器 、数字信号处理器(DSP)上运行。可固化(ROMable) C/OS-II是为嵌入式应用而设计的,这就意味着,只要读者有固化手段(C编译、连接、下载和固化), C/OS-II可以
7、嵌入到读者的产品中成为产品的一部分。可裁剪(Scalable) 可以只使用 C/OS-II中应用程序需要的那些系统服务。也就是说某产品可以只使用很少几个 C/OS-II调用,而另一个产品则使用了几乎所有 C/OS-II的功能,这样可以减少产品中的 C/OS-II所需的存储器空间(RAM和ROM)。这种可剪裁性是靠条件编译实现的。C/OS的性能特点(一)占先式(Preemptive)多任务 C/OS-II可以管理64个任务,然而,目前这一版本保留8个给系统。应用程序最多可以有56个任务。可确定性 全部 C/OS-II的函数调用与服务的执行时间具有可确定性。任务栈 每个任务有自己单独的栈, C/O
8、S-II允许每个任务有不同的栈空间,以便压低应用程序对RAM的需求。系统服务 C/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存的申请与释放、时间相关函数等。中断管理 中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。稳定性与可靠性C/OS的性能特点(二)C/GUI and C/FSC/GUI嵌入式的用户界面;用ANSI C书写;支持任何8, 16, 32-bits CPU;彩色,灰度,等级或黑白显示;代码尺寸小。C/FS嵌入式的文件系统Written in ANSI C;用AN
9、SI C书写;支持任何8, 16, 32-bits CPU;支持SMC, MMC, SD, CF, IDE, Flash, RAM其他介质。C/OS-II图书描述了C/OS-II内部的工作原理;随书的CD中包含了源代码;工业界最清晰的源代码除英文版外,有中文和韩文版。ChineseKoreanEnglishISBN 1-57820-103-9美国CMP BOOK ISBN 7-81077-290-2北京航空航天大学出版社ISBN 89-951540-5-5C/OS-II的各种商业应用全世界有数百种产品在应用:AvionicsMedicalCell phonesRouters and switc
10、hesHigh-end audio equipmentWashing machines and dryersUPS (Uninterruptible Power Supplies)Industrial controllersGPS Navigation SystemsMicrowave RadiosInstrumentationPoint-of-sale terminals更多内容提要1324实时操作系统基本概念C/OS-内核结构C/OS-移植移植实例分析特点:可靠性实时性可裁减性要求:多任务抢占式调度任务的通讯与同步任务与中断之间的通讯RTOSRTOS在嵌入式系统中的位置嵌入式硬件平台BSP
11、KERNELFSTCP/IP设备驱动设备I/O调试工具其他组件应用RTOSC/C+实时系统基本概念前后台系统(Foreground/Background System) 应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为(background)。中断服务程序处理异步事件,这部分可以看成前台行为(foreground)。时间相关性很强的关键操作(Critical operation)一定是靠中断服务来保证的。因为中断服务提供的信息一直要等到后台程序走到该处理这个信息这一步时才能得到处理,这种系统在处理信息的及时性上,比实际可以做到的要差。 实时系统基本概念多任务
12、 多任务运行的实现实际上是靠CPU(中央处理单元)在许多任务之间转换、调度。CPU只有一个,轮番服务于一系列任务中的某一个。多任务运行很像前后台系统,但后台任务有多个。多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。在实时应用中,多任务化的最大特点是,开发人员可以将很复杂的应用程序层次化。使用多任务,应用程序将更容易设计与维护。实时系统基本概念任务 实时系统基本概念任务切换(Context Switch or Task Switch) Context Switch 在有的书中翻译成上下文切换,实际含义是任务切换,或CPU寄存器内容切换。当多任务内核决定运行另外的任务时,它保存正在
13、运行任务的当前状态(Context),即CPU寄存器中的全部内容。这些内容保存在任务的当前状况保存区(Tasks Context Storage area),也就是任务自己的栈区之中。入栈工作完成以后,就是把下一个将要运行的任务的当前状况从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行。这个过程叫做任务切换。 实时系统基本概念静态优先级应用程序执行过程中诸任务优先级不变,则称之为静态优先级。在静态优先级系统中,诸任务以及它们的时间约束在程序编译时是已知的。动态优先级应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。任务优先级 每个任务都有其优先级。任务越重要,赋予的优先
14、级应越高。实时系统基本概念 内核(Kernel) 多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。内核提供的基本服务是任务切换。之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。 内核本身也增加了应用程序的额外负荷,代码空间增加ROM的用量,内核本身的数据结构增加了RAM的用量。实时系统基本概念不可剥夺型内核(Non-Preemptive Kernel) 不可剥夺型内核要求每个任务自我放弃CPU的所有权。各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务可以使一个高优先级的
15、任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。实时系统基本概念可剥夺型内核 (非占先式内核)高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。 中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分
16、(或全部)现场(Context)即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到: 1在前后台系统中,程序回到后台程序 2对不可剥夺型内核而言,程序回到被中断了的任务 3对可剥夺型内核而言,让进入就绪态的优先级最高的任务开始运行 中断使得CPU可以在事件发生时才予以处理,而不必让微处理器连续不断地查询(Polling)是否有事件发生。通过两条特殊指令:关中断(Disable interrupt)和开中断(Enable interrupt)可以让微处理器不响应或响应中断。实时系统基本概念代码的临界段 代码的临界段也称为临界区
17、,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。为确保临界段代码的执行,在进入临界段之前要关中断,而临界段代码执行完以后要立即开中断。 实时系统基本概念在实时环境中,关中断的时间应尽量的短。关中断影响中断延迟时间(见2.26中断延迟)。关中断时间太长可能会引起中断丢失。微处理器一般允许中断嵌套,也就是说在中断服务期间,微处理器可以识别另一个更重要的中断,并服务于那个更重要的中断,如图2.19所示。实时系统基本概念中断响应中断响应定义为从中断发生到开始执行用户的中断服务子程序代码来处理这个中断的时间。中断响应时间包括开始处理这个中断前的全部开销。 对前后台系统,保存寄存器
18、以后立即执行用户代码 中断响应时间 = 中断延迟 + 保存CPU内部寄存器的时间实时系统基本概念 不可剥夺型内核,微处理器保存内部寄存器以后,用户的中断服务子程序代码全立即得到执行。 中断响应时间 = 中断延迟 + 保存CPU内部寄存器的时间 可剥夺型内核,则要先调用一个特定的函数,该函数通知内核即将进行中断服务,使得内核可以跟踪中断的嵌套。对于 C/OS-说来,这个函数是OSIntEnter(), 中断响应 中断延迟 + 保存CPU内部寄存器的时间 + 内核的进入中断服务函数的执行时间 中断恢复时间(Interrupt Recovery)中断恢复时间定义为微处理器返回到被中断了的程序代码所需
19、要的时间。前后台系统和不可剥夺型内核,中断恢复时间很简单,只包括恢复CPU内部寄存器值的时间和执行中断返回指令的时间。中断恢复时间 = 恢复CPU内部寄存器值的时间 + 执行中断返回指令的时间实时系统基本概念可剥夺型内核,中断的恢复要复杂一些。典型地,在中断服务子程序的末尾,要调用一个由实时内核提供的函数。在C/OS-中,这个函数叫做OSIntExit(),这个函数用于辨定中断是否脱离了所有的中断嵌套。如果脱离了嵌套(即已经可以返回到被中断了的任务级时),内核要辨定,由于中断服务子程序ISR的执行,是否使得一个优先级更高的任务进入了就绪态。如果是,则要让这个优先级更高的任务开始运行。在这种情况
20、下,被中断了的任务只有重新成为优先级最高的任务而进入就绪态时才能继续运行。中断恢复时间 = 判定是否有优先级更高的任务进入了就绪态的时间 + 恢复那个优先级更高任务的CPU内部寄存器的时间 + 执行中断返回指令的时间实时系统基本概念图 中断延迟、响应和恢复(可剥夺型内核)实时系统基本概念 时钟节拍(Clock Tick)实时系统基本概念 时钟节拍是特定的周期性中断。这个中断可以看作是系统心脏的脉动。中断之间的时间间隔取决于不同的应用,一般在10mS到200mS之间。时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。时钟节拍率越快,系统的额外
21、开销就越大。对存储器的需求实时系统基本概念 如果设计是前后台系统,对存储器容量的需求仅仅取决于应用程序代码。而使用多任务内核时的情况则很不一样。内核本身需要额外的代码空间(ROM)。 总代码量 = 应用程序代码 + 内核代码 因为每个任务都是独立运行的,必须给每个任务提供单独的栈空间(RAM)。 如果内核不支持单独的中断用栈RAM总需求 = 应用程序的RAM需求 + (任务栈需求 + 最大中断嵌套栈需求) * 任务数 如果内核支持中断用栈分离 RAM总需求 = 应用程序的RAM需求 + 内核数据区的RAM需求 + 各任务栈需求之总和 + 最多中断嵌套之栈需求互斥条件 实现任务间通讯最简便到办法是使用共享数据结构。特别是当所有到任务都在一个单一地址空间下,能使用全程变量、指针、缓冲区、链表、循环缓冲区等,使用共享数据结构通讯就更为容易。虽然共享数据区法简化了任务间的信息交换,但是必须保证每个任务在处理共享数据时的排它性,以避免竞争和数据的破坏。 与共享资源打交道时,使之满足互斥条件最一般的方法有: 1关中断 2使用测试并置位指令 3禁止做任务切换 4利用信号量实时系统基本概念死锁(或抱死)(Deadlock (or Deadly Embrace))实时系统基本概念 死锁也称作抱死,指两个任务无限期地互相等待对方控制着的资源。设任务
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 解密05 时态、语态与语法填空(讲义)-【高频考点解密】高考英语二轮复习讲义+分层训练(浙江专用)
- 莲的诗句古诗优美
- 湖北省枣阳市吴店镇第二中学2024-2025学年部编版八年级上学期期中测试历史试题(无答案)
- 福建省厦门市思明区槟榔中学2024-2025学年八年级上学期第三次英语测试卷(无答案)
- 高一 人教版 英语 第一单元《Unit 1 Teenage Life》课件
- 高一 人教A版 数学 第三章《单调性与最大(小)值(第1课时)》课件
- 2024年公司理论学习中心组学习情况总结
- PDCA医院品质管理-院感办职业暴露管理专项改善案例
- 浙江省湖州市2023-2024学年高三上学期语文期末调研测试试卷
- 2025届四川省绵阳市高三一诊考试英语试题
- 第六单元 除法(单元测试)(含答案)-2024-2025学年四年级上册数学北师大版
- 国开(河北)2024年秋《现代产权法律制度专题》形考作业1-4答案
- 《人力资源管理》全套教学课件
- 民用无人机操控员执照(CAAC)考试复习重点题库500题(含答案)
- 中国法律史-第一次平时作业-国开-参考资料
- 个人书面检查三篇
- 一年级数学上学期培优辅差记录表
- 标准化养羊场建设方案(附图纸)
- 全国社保行政区域划分代码
- 2022年上海初中生命科学学业考试卷
- 初中体育教案全集(完整版)
评论
0/150
提交评论