版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式操作系统北京电子科技学院汪永好教材及参考资料罗蕾主编.嵌入式实时操作系统及应用开发(第2版).北京航空航天大学出版社.JeanJ.Labrosse著,邵贝贝等译.嵌入式实时操作系统uC/OS-II(第2版).北京航空航天大学出版社.蓝枫叶编著.嵌入式操作系统设计与实现.电子工业出版社.(美)WayneWolf.嵌入式计算系统设计原理,ComputersasComponents:PrinciplesofEmbeddedComputingSystemDesign.一、嵌入式操作系统概述二、嵌入式操作系统基本概念三、嵌入式实时操作系统C/OS第一章嵌入式操作系统概述一、嵌入式操作系统概述概述嵌入式操作系统的演变嵌入式操作系统的分类嵌入式操作系统的体系结构嵌入式操作系统的组成嵌入式操作系统的关键设计因素概述(1/2) 嵌入式操作系统可以统称为应用在嵌入式系统的操作系统,它具有一般操作系统的功能,同时具有嵌入式软件的特点,主要有:可固化可配置、可剪裁独立的板级支持包,可修改不同的CPU有不同的版本应用的开发需要有集成的交叉开发工具近十年来,嵌入式操作系统得到飞速的发展从支持8位微处理器到16位、32位甚至64位微处理器;从支持单一品种的微处理器芯片到支持多品种微处理器芯片;从只有内核到除了内核外还提供其他功能模块,如文件系统,TCP/IP网络系统,窗口图形系统等。随着嵌入式系统应用领域的扩展,目前嵌入式操作系统的市场在不断细分,出现了针对不同领域的产品,这些产品按领域的要求和标准提供特定的功能。概述(2/2)嵌入式操作系统的演变(1/7)*PercentoftotalsoftwaresuppliedbyRTOSvendorinatypicalembeddeddevice
10%*Kernel30%*KernelNetworkingFileSystem75%*KernelNetworkingFileSystemMultiprocessingMemoryManagementNetworkingUtilityWindowsAPIApplicationApplicationApplication
Application90%*KernelNetworkingFileSystemMultiprocessingFaultToleranceDistributedObjectsAdvancedNetworkingAdvancedInterconnectJavaBrowser/GUI 在嵌入式系统的发展过程中,从操作系统的角度来看,大致经历了以下及几个阶段:无操作系统阶段简单操作系统阶段实时操作系统阶段面向Internet的阶段嵌入式操作系统的演变(2/7)无操作系统阶段嵌入式系统最初的应用是基于单片机的,大多以可编程控制器的形式出现,具有监测、伺服、设备指示等功能,通常应用于各类工业控制和飞机、导弹等武器装备中,一般没有操作系统的支持,只能通过汇编语言对系统进行直接控制,运行结束后再清除内存。这些装置虽然已经初步具备了嵌入式的应用特点,但仅仅只是使用8位的CPU芯片来执行一些单线程的程序,因此严格地说还谈不上"系统"的概念。这一阶段嵌入式系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简便、价格低廉,因而曾经在工业控制领域中得到了非常广泛的应用,但却无法满足现今对执行效率、存储容量都有较高要求的信息家电等场合的需要。嵌入式操作系统的演变(3/7)简单操作系统阶段
20世纪80年代,随着微电子工艺水平的提高,IC制造商开始把嵌入式应用中所需要的微处理器、I/O接口、串行接口以及RAM、ROM等部件统统集成到一片VLSI中,制造出面向I/O设计的微控制器,并一举成为嵌入式系统领域中异军突起的新秀。与此同时,嵌入式系统的程序员也开始基于一些简单的"操作系统"开发嵌入式应用软件,大大缩短了开发周期、提高了开发效率。这一阶段嵌入式系统的主要特点是:出现了大量高可靠、低功耗的嵌入式CPU(如PowerPC等),各种简单的嵌入式操作系统开始出现并得到迅速发展。此时的嵌入式操作系统虽然还比较简单,但已经初步具有了一定的兼容性和扩展性,内核精巧且效率高,主要用来控制系统负载以及监控应用程序的运行。嵌入式操作系统的演变(4/7)实时操作系统阶段
20世纪90年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步飞速发展,而面向实时信号处理算法的DSP产品则向着高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。这一阶段嵌入式系统的主要特点是:操作系统的实时性得到了很大改善,已经能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。此时的嵌入式操作系统已经具备了文件和目录管理、设备管理、多任务、网络、图形用户界面(GUI)等功能,并提供了大量的应用程序接口(API),从而使得应用软件的开发变得更加简单。嵌入式操作系统的演变(5/7)面向Internet的阶段
21世纪无疑将是一个网络的时代,将嵌入式系统应用到各种网络环境中去的呼声自然也越来越高。目前大多数嵌入式系统还孤立于Internet之外,随着Internet的进一步发展,以及Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与Internet的结合才是嵌入式技术的真正未来。信息时代和数字时代的到来,为嵌入式系统的发展带来了巨大的机遇,同时也对嵌入式系统厂商提出了新的挑战。嵌入式操作系统的演变(6/7)各类嵌入式Linux操作系统迅速发展,由于具有源代码开放、系统内核小、执行效率高、网络结构完整等特点,很适合信息家电等嵌入式系统的需要,目前已经形成了能与WindowsCE、Symbian等嵌入式操作系统进行有力竞争的局面。网络化、信息化的要求随着Internet技术的成熟和带宽的提高而日益突出,以往功能单一的设备如电话、手机、冰箱、微波炉等功能不再单一,结构变得更加复杂,网络互联成为必然趋势。精简系统内核,优化关键算法,降低软硬件成本和功耗。提供更加友好的多媒体人机交互界面。嵌入式操作系统的演变(7/7)从应用领域来分:面向信息家电的嵌入式操作系统面向智能手机的嵌入式操作系统,如SymbianOS、MSMobileOS、PalmOS、EmbeddedLinux等面向汽车电子的嵌入式操作系统面向工业控制的嵌入式操作系统……….嵌入式操作系统的分类(1/3)从实时性的角度来看,嵌入式操作系统可分为嵌入式实时操作系统:具有强实时特点,如VxWorks、QNX、Nuclear、OSE、DeltaOS、各种ITRONOS等。非实时嵌入式操作系统:一般只具有弱实时特点,如WinCE、版本众多的嵌入式Linux、PalmOS等。嵌入式操作系统的分类(2/3)从嵌入式系统的商业模式来分类,可以分为商用型和开源型。商用型:功能稳定、可靠,有完善的技术支持和售后服务,开发费用+版税。开源型:开放源码,只收服务费,没有版税。如Embeddedlinux,RTEMS,eCOS。嵌入式操作系统的分类(3/3)体系结构是操作系统的基础,它定义了硬件与软件的界限、内核与操作系统其它组件(文件、网络、GUI等)的组织关系、系统与应用的接口。体系结构是确保系统的性能、可靠性、灵活性、可移植性、可扩展性的关键,就好比房子的梁架,只有梁架搭牢固了才提得上房子的质量,再做一些锦上添花的工作才有意义。目前操作系统的体系结构可分为:单块结构、层次结构和客户/服务器(微内核)结构。嵌入式操作系统体系结构(1/7)硬件系统服务用户态核心态应用程序应用程序…单块结构嵌入式操作系统体系结构(2/7)层次结构嵌入式操作系统体系结构(3/7)应用程序硬件硬件抽象层应用编程接口硬件无关层硬件进程服务用户态核心态应用程序客户内存服务微内核文件服务网络服务显示服务发送应答客户/服务器结构(微内核结构)嵌入式操作系统体系结构(4/7)目前嵌入式操作系统主要采用分层和模块化相结合的结构或微内核结构。分层和模块化结合的结构将操作系统分为硬件无关层、硬件抽象层和硬件相关层,每层再划分功能模块。这样移植工作便集中在硬件相关层,与其余两层无关,功能的伸缩则集中在模块上,从而确保其具有良好的可移植性和可伸缩性。而采用微内核结构,则可利用其可伸缩的特点适应硬件的发展,便于扩展。嵌入式操作系统体系结构(5/7)应用程序任务管理硬件用户扩展处理调度管理硬件抽象层应用编程接口内存管理中断管理时钟/定时器管理
I/O管理出错处理同步、通信管理(消息队列,信号量,事件,异步信号))DeltaCORE的体系结构:层次+模块结构嵌入式操作系统体系结构(6/7)用户模式应用应用应用网络管理器图形管理器设备管理器文件系统管理器网络驱动图形驱动设备驱动文件系统驱动硬件内核模式内核(微内核)QNX4.25的体系结构:客户/服务器结构嵌入式操作系统体系结构(7/7)嵌入式操作系统一般由内核、嵌入式TCP/IP网络系统、嵌入式文件系统等组成。内核内核是嵌入式操作系统的基础,也是必备的部分。它提供任务管理、内存管理、通信、同步与互斥机制、中断管理、时间管理及任务扩展等功能。内核还提供特定的应用编程接口,但目前没有统一的标准。嵌入式操作系统的组成(1/12)任务管理内核的核心部分,具有任务调度、创建任务、删除任务、挂起任务、解挂任务、设置任务优先级等功能。通用计算机的操作系统追求的是最大的吞吐率,为了达到最佳整体性能,其调度原则是公平,采用Round-Robin或可变优先级调度算法,调度时机主要以时间片为主驱动。而嵌入式操作系统多采用基于静态优先级的可抢占的调度,任务优先级是在运行前通过某种策略静态分配好的,一旦有优先级更高的任务就绪就马上进行调度。内核(2/12)内存管理通用操作系统广泛使用了虚拟内存的技术,为用户提供一个功能强大的虚存管理机制。嵌入式操作系统的内存管理比较简单。通常不采用虚拟存储管理,而采用静态内存分配和动态内存分配(固定大小内存分配和可变大小内存分配)相结合的管理方式。有些内核利用MMU机制提供内存保护功能。内核(3/12)通信、同步和互斥机制这些机制提供任务间、任务与中断处理程序间的通信、同步和互斥功能。一般包括信号量、消息、事件、管道、异步信号和共享内存等功能。与通用操作系统不同的是,嵌入式操作系统需要解决在这些机制的使用中出现的优先级反转问题。内核(4/12)中断管理:一般具有以下功能:安装中断服务程序中断发生时,对中断现场进行保存,并且转到相应的服务程序上执行中断退出前,对中断现场进行恢复中断栈切换中断退出时的任务调度内核(5/12)时间管理提供高精度、应用可设置的系统时钟,该时钟是嵌入式系统的时基,可设置为十毫秒以下。提供日历时间,负责与时间相关的任务管理工作如任务对资源有限等待的计时、时间片轮转调度等,提供软定时器的管理功能等。通用操作系统的系统时钟的精度由操作系统确定,应用不可调,且一般是几十个毫秒。内核(6/12)任务扩展功能任务扩展功能就是在内核中设置一些Hook的调用点,在这些调用点上内核调用应用设置的、应用自己编写的扩展处理程序,以扩展内核的有关功能。Hook调用点有任务创建、任务切换、任务删除、出错处理等。内核(7/12)TCP/IP协议已经广泛地应用于嵌入式系统中嵌入式TCP/IP网络系统提供符合TCP/IP协议标准的协议栈,提供Socket编程接口。Socket接口UDP协议TCP协议IP协议ICMP/IGMP协议网络接口层
ARP/PPP协议以太网驱动异步串口驱动物理设备应用程序/应用协议嵌入式TCP/IP(8/12)嵌入式TCP/IP网络系统具有以下的特点:可剪裁能根据嵌入式系统的功能的要求选择所需的协议,对完整的TCP/IP协议簇进行剪裁,以满足用户的需要。采用“零拷贝”(ZeroCopy)技术,提高实时性所谓“零拷贝”技术,是指TCP/IP协议栈没有用于各层间数据传递的缓冲区,协议栈各层间传递的都是数据指针,只有当数据最终要被驱动程序发送出去或是被应用程序取走时,才进行真正的数据搬移。嵌入式TCP/IP(9/12)采用静态分配技术 在网络初始化时就静态分配通信缓冲区,设置了专门的发送和接收缓冲(其大小一般小于或等于物理网络上的MTU值),从而确保了每次发送或接收时处理的数据不会超过MTU值,也就避免了数据处理任务的阻塞等待。嵌入式TCP/IP(10/12)通用操作系统的文件系统通常具有以下功能:提供用户对文件操作的命令提供用户共享文件的机制管理文件的存储介质提供文件的存取控制机制,保障文件及文件系统的安全性提供文件及文件系统的备份和恢复功能提供对文件的加密和解密功能嵌入式文件系统(11/12)嵌入式文件系统相比之下较为简单,主要具有文件的存储、检索、更新等功能,一般不提供保护和加密等安全机制。它以系统调用和命令方式提供对文件的各种操作,主要有:设置和修改对文件和目录的存取权限提供建立、修改、改变、删除目录等服务提供创建、打开、读、写、关闭、撤消文件等服务嵌入式文件系统(12/12)实时性可移植性可剪裁、可配置性可靠性应用编程接口
嵌入式操作系统的关键设计问题(1/7)实时性是实时内核最重要的特性之一。实时系统的正确性不仅依赖于系统计算的逻辑结构,还依赖于产生这些结果的时间。从整体上考虑,一个系统的实时性能与硬件、操作系统及应用程序三方面都有关系,提高硬件能力可以在一定程度上提高实时性;但是当硬件条件确定之后,嵌入式系统的性能主要由操作系统来确定,其中实时内核起着关键的作用。实时性相关概念确定性响应性响应时间实时性(2/7)影响实时性的主要因素调度算法可抢占内核内核的关中断时间数据结构存储管理机制资源的有限时间等待优先级反转问题的解决中断处理浮点数的优化处理实时性(3/7)可移植性好的操作系统在支持多平台方面具有开发周期缩短、代码可重用度高和维护工作量小等显著优点,所以追求良好的可移植性是设计实时内核时需要重点考虑的目标之一。影响可移植性的主要因素编程语言体系结构代码实现的技巧可移植性(4/7)为了能满足不同复杂程度的应用需求,嵌入式操作系统应该具有良好的或剪裁性、可配置性。可配置与可剪裁是联系紧密,但又有区别的两种特性。可剪裁性表示系统在增加、卸装功能模块时仅需要做少量的修改或者根本不用修改。可配置性针对系统中未被卸装的模块,根据应用在数量、机制、工作空间和堆栈等方面的不同需求,决定系统的规模、功能以及内存分配等。内核的剪裁性取决于模块之间的耦合程度。耦合程度越小的系统,可剪裁的力度越大。可剪裁性与可配置性(5/7)可靠性对于实时系统来说通常比非实时系统更为重要。为保证应用系统运行的可靠性,嵌入式实时内核可以提供诸多机制供用户使用,包括异步信号、定时器、优先级继承、异常处理、用户扩展和内存保护等。嵌入式实时系统一般不具备通用的人机接口,运行时人不能干预其操作,因此系统的异常处理能力是其可靠性很关键的因素之一。可靠性(6/7)一个操作系统提供的系统调用(应用编程接口API)越多,功能越强,就越能对应用程序的开发提供高效的支持,同时也会减少应用程序的维护工作量。API也影响着应用参与系统控制的深浅程度。提供面向行业的接口标准是嵌入式实时操作系统的一个发展趋势。应用编程接口(7/7)二、嵌入式操作系统基本概念前台与后台多任务,任务优先级,调度非占先式与占先式,可重入型函数信号量,死锁,同步,事件标志任务间通信,消息邮箱,消息队列中断前后台系统(1/2)ISRISR后台前台ISR时间代码的临界区也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。在进入临界区之前要关中断,而临界区代码执行完以后要立即开中断(在任务切换时,地址、指令、数据等寄存器堆栈保护)。代码的临界区(2/2)多任务(1/6)CPU寄存器任务控制块1任务控制块2任务控制块n休眠、就绪、运行、挂起、被中断任务1任务2任务n……CPU寄存器任务的状态(2/6)系统内核与调度(3/6)多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通信。调度(Scheduler)是内核的主要职责之一,就是要决定该轮到哪个任务运行了。多数实时内核是基于优先级调度法的。每个任务根据其重要程度的不同被赋予一定的优先级。基于优先级的调度法指,CPU总是让处在就绪态的优先级最高的任务先运行。任务优先级(4/6)静态优先级应用程序执行过程中诸任务优先级不变,则称之为静态优先级。在静态优先级系统中,诸任务以及它们的时间约束在程序编译时是已知的。动态优先级应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。实时内核应当避免出现优先级反转问题。优先级反转(5/6)优先级反转的解决方法(6/6)非占先式与占先式(1/7)非占先式(non-preemptive)非占先式调度法也称作合作型多任务(cooperativemultitasking),各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。非占先式内核的一个优点是响应中断快;其另一个优点是几乎不需要使用信号量保护共享数据。运行着的任务占有CPU,而不必担心被别的任务抢占。非占先式内核的最大缺陷在于其响应高优先级的任务慢,任务已经进入就绪态,但还不能运行,也许要等很长时间,直到当前运行着的任务释放CPU。内核的任务级响应时间是不确定的,不知道什么时候最高优先级的任务才能拿到CPU的控制权,完全取决于应用程序什么时候释放CPU。非占先式(2/7)低优先级任务ISR高优先级任务(1)(2)(3)(4)(5)(6)(7)中断服务程序使高优先级任务就绪低优先级任务释放CPU使用权TIME当系统响应时间很重要时,要使用占先式(preemptive)内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。使用占先式内核时,应用程序不应直接使用不可重入型函数。如果调入可重入型函数时,低优先级的任务CPU的使用权被高优先级任务剥夺,不可重入型函数中的数据有可能被破坏。占先式(3/7)占先式(4/7)低优先级任务ISR高优先级任务(1)(2)(3)(4)(5)(6)中断服务程序使高优先级任务就绪高优先级任务得到CPU使用权TIME可以被一个以上的任务调用,而不必担心数据的破坏。可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数或者只使用局部变量,即变量保存在CPU寄存器中或堆栈中。一个不可重入型函数的例子intTemp;Voidswap(int*x,int*y){Temp=*x;*X=*Y;*y=Temp;}可重入型函数(5/7)可重入型函数例(6/7)一个可重入型函数的例子Voidswap(int*x,int*y){intTemp;Temp=*x;*X=*Y;*y=Temp;}可重入型函数(7/7)信号量(Semaphore)(1/3)信号量实际上是一种约定机制,在多任务内核中普遍使用。信号量就像一把钥匙,任务要运行下去,需先拿到这把钥匙。信号量用于:控制共享资源的使用权(满足互斥条件)标志某事件的发生使两个任务的行为同步信号与信号量在英文中都叫做Semaphore,并不加以区分,而说它有两种类型,二进制型(binary)和计数器型(counting)二进制信号量(2/3)计数式信号量(3/3)全程变量或共享内存邮箱或消息队列任务间的通讯(1/4)全程变量(2/4)用全程变量时,必须保证每个任务或中断服务程序独享该变量。中断服务中保证独享的唯一办法是关中断。如果两个任务共享某变量,各任务实现独享该变量的办法可以是关中断再开中断,或使用信号量消息邮箱(3/4)消息邮箱messagemailbox-通过内核一个任务或一个中断服务程序可以把一则消息(一个指针)放到邮箱中。-通过内核一个或多个任务可以通过内核接收这则消息。-每个邮箱有相应的等待消息的任务列表,如果邮箱为空,则等待消息的任务将被挂起。-每个邮箱也应该有相应的发送消息的任务列表,如果邮箱满,则发送消息的任务将被挂起。消息队列(4/4)消息队列messagequeue-消息队列实际上是邮箱阵列。-通过内核一个任务或一个中断服务程序可以把一则消息(一个指针)放到消息队列中。-通过内核一个或多个任务可以通过内核接收这则消息。-每个消息队列有相应的等待消息的任务列表,如果消息队列为空,则等待消息的任务将被挂起。-每个消息队列也应该有相应的发送消息的任务列表,如果消息队列满,则发送消息的任务将被挂起。中断(1/8)中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分(或全部)上下文(context),即部分或全部寄存器的值,跳转到专门的中断服务子程序ISR,进行中断处理。处理完毕后,程序回到:-对于非占先式内核而言,程序回到被中断了的任务。-对于占先式内核而言,让进入就绪态的优先级最高的任务开始运行。中断处理(2/8)中断处理流程-关闭中断-保存当前上下文-确定中断源-查询中断向量-打开中断-调用中断处理程序-恢复被中断的上下文-中断返回中断嵌套(3/8)中断的性能指标(4/8)中断延迟-中断关闭的时间长度。对于非占先式和占先式内核:中断延迟=关中断的最长时间+开始执行中断服务子程序的第一条指令的时间中断的性能指标(5/8)中断响应-从中断发生到开始执行用户的中断服务子程序的时间。对于非占先式内核-中断响应时间=中断延迟+保存CPU内部寄存器的时间对于占先式内核-中断响应时间=中断延迟+保存CPU内部寄存器的时间+内核进入中断服务函数的执行时间中断的性能指标(6/8)中断恢复时间-CPU返回到被中断了的程序代码所需要的时间。对于非占先式内核-中断恢复时间=恢复CPU内部寄存器值的时间+执行中断返回指令的时间对于占先式内核-中断恢复时间=判定是否有优先级更高的任务进入了就绪态+恢复那个优先级更高任务的CPU内部寄存器的时间+执行中断返回指令的时间非占先式内核中断的性能指标(7/8)占先式内核中断的性能指标(8/8)三、嵌入式实时操作系统C/OSC/OS简介内核结构任务间通信C/OS简介
1、C/OS——microOS,微控制器操作系统2、C/OS简介美国人JeanLabrosse1992年完成应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等1998年C/OS-II,目前的版本C/OS-IIV2.612000年,得到美国航空管理局(FAA)的认证,可以用于飞行器中网站www.ucos-II.com()公开源代码可移植性(Portable)
绝大部分
C/OS-II的源码是用移植性很强的ANSIC写的。和微处理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低限度,使得
C/OS-II便于移植到其他微处理器上。
C/OS-II可以在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处理器(DSP)上运行。可固化(ROMable)
C/OS-II是为嵌入式应用而设计的,这就意味着,只要读者有固化手段(C编译、连接、下载和固化),
C/OS-II可以嵌入到读者的产品中成为产品的一部分。可裁剪(Scalable)
可以只使用
C/OS-II中应用程序需要的那些系统服务。也就是说某产品可以只使用很少几个
C/OS-II调用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四年级数学下学期工作总结
- 金属材料工程课程设计
- 海外数字化营销课程设计
- 国有林场(苗圃)财务制度
- 特岗教师三年经历工作总结
- 视听语言课课程设计
- 课课程设计仿真与分析
- 森林草原防灭火工作的应急预案
- 跑马灯的课程设计plc
- 湖北理工学院《外贸函电》2022-2023学年期末试卷
- 空心六棱块护坡施工方案
- 一只窝囊的大老虎说课
- 《行政许可法》讲义课件
- 综采工作面及顺槽发生冒顶安全技术措施
- DB51T3085-2023川产道地药材生产技术规范 麦冬
- 三年级上册 《方向与位置》(说课稿)-三年级上册数学青岛版
- 地理信息安全在线培训考试系统题库
- GB/T 42779-2023海洋牧场基本术语
- 五年级上册英语冀教版课件The Story of Nian
- 大学生职业生涯规划完整全套教学课件
- 沟槽支护专项方案
评论
0/150
提交评论