




已阅读5页,还剩89页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第4章ARM体系结构,本章主要介绍以下内容:ARM存储器组织ARM的异常中断,2,4.6ARM存储器组织,介绍以下内容:数据类型和存储格式ARM的存储体系片上存储器的用法协处理器CP15存储器管理单元MMU保护单元快速上下文切换扩展写缓存器(WriteBuffer)ARM的异常中断向量表和异常中断处理与返回,3,4.6.1数据类型和存储格式,ARM存储器中的数据类型有6种有符号数8位(字节)、16位(半字)、32位(字)无符号数8位(字节)、16位(半字)、32位(字)缺省端序设置为小端序,2008年6月21日,4,4.6.2ARM的存储体系,参看下图,抽象成一个呈金字塔型的存储结构注重研究第2层,2008年6月21日,5,4.6.3片上存储器的用法,多数ARM处理器芯片内部集成了存储器它们统称为片上存储器用途有:片上Cache、片上SRAM、紧耦合存储器(TCM)、写缓存片上存储器的存储空间可以通过指令进行配置,定义成片上Cache,或者片上SRAM,或者一部分片上Cache加一部分片上SRAM。紧耦合存储器和写缓存均需要编程使能或者硬件接线使能按照具体应用情况决定片上存储器配置方法,2008年6月21日,6,片上存储器用作紧耦合存储器,紧耦合存储器的英文原文如下:TightlyCoupledMemory,TCM弥补Cache访问的不确定性而增加的片上存储器。除了片上紧耦合存储器外,还有紧耦合存储器接口,它能够提供低延时的外存储器访问。有的处理器含有分立的指令TCM和数据TCM。TCM包含在存储器地址映射空间中,可以作为快速存储器来访问。除了不得包含读敏感地址之外,对TCM接口上连接的存储器类型没有其他限制。TCM使用物理地址,对TCM的写访问受到MMU内部保护信息的控制。,2008年6月21日,7,TCM在ARMv6处理器核的位置,ARMv6处理器包括:ARM1136J-S、ARM1156T2,2008年6月21日,8,片内TCM存储器举例,ARM926EJ-S核心内置32KB指令缓存、16KB数字缓存和8KB数据-TCM和8KB指令-TCM;,2008年6月21日,9,Cortex-R4F方框图含TCM接口,注意图的右侧含有一个TCM仲裁和接口模块,2008年6月21日,10,ARM1136的TCM支持DMA传输,参看ARM1136的方框图,2008年6月21日,11,ARM966E-S核的TCM地址映射,2008年6月21日,12,ARM966E-S的TCM别名地址空间,物理存储块可以通过TCM接口映射在片内的TCM存储区,2008年6月21日,13,ARM966E-S的TCM特点,TheARM966E-SprocessorsupportsbothinstructionanddataTCMs.YoucanusetheDTCMandITCMtostorereal-timeandperformance-criticalcode.TheTCMsareinstantiatedexternallytotheARM966E-Smacrocellprovidingforflexibilityinthedesignofthememorysubsystem.Thesystemdesignercanselectmemorytypeandoptimizethememorysubsystemforpowerorspeed.,2008年6月21日,14,ARM966E-S的TCM接口特点(续1),ThefeaturesoftheTCMinterfaceinclude:independentITCMandDTCMsizesof0KBor1KB-64MBinpower-of-twoincrementssoftwarevisibilityandprogrammabilityofTCMsizeandenablebootcontrolforITCMdataaccesstotheITCMforliteralpoolaccessesincodesimpleSRAM-styleinterfacesupportingbothreadsandwritesvariableTCMwaitstatecontrolforITCMandDTCMabilitytoindicatesequentialandnonsequentialaccesses.,2008年6月21日,15,ARM966E-S的TCM特点接口(续2),TheARM966E-SprocessorcontainsaTCMcontrollerthat:schedulesrequeststotheTCMinterfacehandshakeswiththeARM966E-SmemorysystemcontrollertoacknowledgewhenrequestshavebeenservicedreturnsTCMreaddatabacktotheARM9E-Score.TheTCMsarelocatedintheTCMaddressspace.,2008年6月21日,16,AT91SAM9261处理器的TCM,AT91SAM9261的独立指令和数据缓存能支持WinCE和Linux操作系统。而其基于TCM构架的SRAM区块则是“确定过程式”实时操作系统的理想安排。另一方面,160K字节的片上SRAM可划分成多个16K字节的区块,作为“指令TCM”、“数据TCM”或片上外设的缓冲,从而让编程人员灵活地优化系统的性能和功耗。,2008年6月21日,17,TCM的使能操作,通过二种方式进行TCM的使能操作使用处理器芯片的INITRAM引脚使用CP15的c1控制寄存器,2008年6月21日,18,S3C44B0X和S3C4510B的三种片上存储器的配置用法,S3C44B0X和S3C4510B都有8KB的片上存储器它们有三种配置用法8KB的SRAM8KB的Cache4KB的SRAM加上4KB的Cache较多采用片内RAM配置而非片内Cache配置。,2008年6月21日,19,ARM920T的片内存储器,注意:ARM920T核的内部没有TCM,2008年6月21日,20,ARM720T的片内存储器,8KByteunifiedcacheMemoryManagementUnit(MMU)writebufferUnified32-bitAHBbusinterfacecarriesbothinstructionsanddataEmbeddedTraceMacrocell(ETM)interface,2008年6月21日,21,4.6.4协处理器CP15,CP15即所谓的系统控制协处理器SystemControlCoprocessor在基于ARM的嵌入式系统中,诸如MMU、Cache配置、紧耦合处理器、写缓存配置之类的存储系统管理工作由协处理器CP15完成。CP15可以包含16个32位寄存器编号为CP0CP15。实际运用中写为C0C15。,2008年6月21日,22,CP15寄存器的访问,用户只能够在特权模式下使用MRC和MCR指令来访问CP15寄存器。,2008年6月21日,23,4.6.5存储器管理单元MMU,ARM的MMU部件的用途:完成虚拟存储空间到物理存储空间的映射。管理方式:页式虚拟存储器。页的大小有两种:粗粒度和细粒度。存储器访问权限的控制。设置虚拟存储空间的缓冲特性。,2008年6月21日,24,4.6.6保护单元,保护单元PU,ProtectionUnit也称为:MPU,MemoryProtectionUnit为了消除术语的二义性,我们统一使用术语PU保护单元提供了一个相当简单的替代MMU的方法来管理存储器。对于不需要PU的嵌入式系统而言,PU简化了硬件和软件,主要表现在不使用转换表,这样免去了硬件遍历转换表和软件建立与维护转换表。,2008年6月21日,25,保护单元的工作原理和作用,ARM核的PU使用区域(region)来管理系统保护。区域是一个存储空间相关联的一组属性,处理器核将这些属性保存在协处理器CP15的一些寄存器里,并用0-7的号码标识每一个区域(它也是一个具有特定属性的逻辑存储空间)。区域的存储边界通过两个属性进行配置:起始地址和大小。区域的大小可以是4KB4MB的任何2的乘幂。,2008年6月21日,26,受保护区域的属性,操作系统可以为受保护区域分配更多的属性,包括:访问权限、Cache和写缓存器策略访问权限可以是:读/写、只读和不可访问基于处理器模式的权限管理模式、用户模式等Cache写策略写直达Cache操作、无Cache操作、无写缓存器操作。,2008年6月21日,27,含PU的ARM处理器主存访问过程,当处理器访问主存的一个区域时,PU比较该区域的访问权限属性和当时的处理器模式。如果请求符合区域访问标准,则PU允许内核读/写主存;如果存储器请求导致存储器访问违例,则PU产生一个异常信号。异常信号被传到处理器核,处理器核判断是出异常是预取指令中止还是数据中止,然后跳转到对应的异常处理例程。,2008年6月21日,28,区域属性,有关区域的属性如下:区域可以相互重叠每一个区域有一个优先级,该优先级与分配给区域的权限无关当区域重叠时,具有最高优先权的区域的属性可以覆盖其他区域的属性,优先权仅作用于重叠部分的地址。区域的起始地址必须是其大小的倍数。区域的大小是2的乘幂,2的12次方到32次方。,2008年6月21日,29,访问受保护区域时产生的异常,访问所定义区域外的存储器将产生异常。如果是内核预取指令,则PU产生一个预取指令中止异常。如果是存储器数据请求,则PU产生数据中止异常。,2008年6月21日,30,带PU的ARM核概要,以下给出了四种带PU的ARM核概要属性,2008年6月21日,31,在带PU的ARM系统中创建区域,要实现一个受PU控制主存的嵌入式系统,需要对主存中的不同块定义若干区域。一个区域可以被创建一次,然后一直用到嵌入式系统运行结束;也可以临时创建一个区域来满足一个特殊操作的需要,用完之后就加以删除。,2008年6月21日,32,含有PU的ARM核,含有8个受保护区域的ARM核ARM740TARM946E-SARM1026EJ-S含有16个受保护区域的ARM核ARM940T,2008年6月21日,33,初始化PU、Cache和写缓冲器,为了初始化PU、Cache和写缓冲器,控制系统必须定义在操作目标平台时所需要的保护区域。,2008年6月21日,34,带保护单元和MMU的系统框图,2008年6月21日,35,4.6.7ARM处理器的Cache,ARM处理器均带有Cache或者可以将片上存储器配置成Cache。当然,在不需要时也可以通过配置操作关闭Cache。ARM处理器的Cache地址映射均采用组相联映射。,2008年6月21日,36,4.6.8快速上下文切换扩展,快速上下文切换扩展FCSE,FastContextSwitchExtensionFCSE是ARM存储系统的修正机构。它修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成的虚拟地址到物理地址的重映射,从而提高系统的性能。为了理解ARM处理器的FCSE功能,我们首先考察当虚拟存储器中任务切换时,主存中页表和物理存储器的随动切换。,2008年6月21日,37,ARM虚拟存储器用户任务上下文切换示例-1,任务1正在执行,2008年6月21日,38,ARM虚拟存储器用户任务上下文切换示例-2,任务2正在执行,2008年6月21日,39,ARM虚拟存储器用户任务上下文切换示例-3,任务3正在执行,2008年6月21日,40,3个任务的多任务环境中快速上下文切换扩展的举例:,切换前任务1正在运行,2008年6月21日,41,3个任务的多任务环境中快速上下文切换扩展的举例:(续),切换后任务2正在运行,2008年6月21日,42,4.6.9写缓存器(WriteBuffer),写缓存器是一个容量很小的片内的先进先出(FIFO)存储器,位于处理器核与主存之间。写缓存器的主要用途是:当CPU输出数据时,总线恰好被占用而无法输出,此时,CPU可以把输出数据写入到写缓存器。当总线上没有比写缓存区优先级更高的掌控者时,写缓存区可以通过总线将数据写入内存。CPU由于不需要等待写操作的完成而增强了性能。写缓存区中的FIFO存储器在存储层次中与L1Cache处于相同的层次。,2008年6月21日,43,S3C44B0X处理器的写缓存区,由4个写缓存寄存器构成。每一个写缓存寄存器包括一个32位数据字段,一个28位地址字段和一个2位状态字段。可以通过指令对控制寄存器SYSCFG的WE位置1或者置0来使能或者禁能写缓存器。参看下图。,2008年6月21日,44,4.7ARM的异常中断,ARM异常与中断不做严格意义上的区别ARM的中断向量表内存放的是响应异常和中断的转移指令而不是中断向量地址。在ARM处理器中,当异常发生时,完成当前指令后跳转到相应的异常中断处理程序入口执行异常中断处理。异常处理完毕后返回原来的程序断点继续执行原来的程序。,ARM异常和中断处理,课程安排,ARM体系结构知识回顾ARM异常的响应ARM异常的处理ARM异常的返回ARM中断的产生、初始化和响应处理流程,异常,简介,只要正常的程序流被暂时中止,处理器就进入异常模式。例如响应一个来自外设的中断。在处理异常之前,ARM内核保存当前的处理器状态,这样当处理程序结束时可以恢复执行原来的程序。如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常,详见“异常优先级”部分。,异常入口/出口汇总,异常,异常的入口和出口处理,如果异常处理程序已经把返回地址拷贝到堆栈,那么可以使用一条多寄存器传送指令来恢复用户寄存器并实现返回。,SUBLR,LR,#4;计算返回地址STMFDSP!,R0-R3,LR;保存使用到的寄存器.LDMFDSP!,R0-R3,PC;中断返回,中断处理代码的开始部分和退出部分,如果异常处理程序已经把返回地址拷贝到堆栈,那么可以使用一条多寄存器传送指令来恢复用户寄存器并实现返回。,中断处理代码的开始部分和退出部分,异常,异常的入口和出口处理,SUBLR,LR,#4;计算返回地址STMFDSP!,R0-R3,LR;保存使用到的寄存器.LDMFDSP!,R0-R3,PC;中断返回,注意:中断返回指令的寄存器列表(其中必须包括PC)后的“”符号表示这是一条特殊形式的指令。这条指令在从存储器中装载PC的同时(PC是最后恢复的),CPSR也得到恢复。这里使用的堆栈指针SP(R13)是属于异常模式的寄存器,每个异常模式有自己的堆栈指针。这个堆栈指针应必须在系统启动时初始化。,异常,进入异常,在异常发生后,ARM内核会作以下工作:,1.在适当的LR中保存下一条指令的地址,当异常入口来自:ARM状态,那么ARM将当前指令地址加4或加8复制(取决于异常的类型)到LR中;为Thumb状态,那么ARM将当前指令地址加4或加8(取决于异常的类型)复制到LR中;异常处理器程序不必确定状态。,异常,进入异常,在异常发生后,ARM内核会作以下工作:,2.将CPSR复制到适当的SPSR中;3.将CPSR模式位强制设置为与异常类型相对应的值;4.强制PC从相关的异常向量处取指。,ARM内核在中断异常时置位中断禁止标志,这样可以防止不受控制的异常嵌套。注:异常总是在ARM状态中进行处理。当处理器处于Thumb状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM状态。,异常,进入异常,当异常结束时,异常处理程序必须:1.将LR中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;2.将SPSR的值复制回CPSR;3.清零在入口置位的中断禁止标志。注:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。,异常,退出异常,图示进入异常过程,1.程序在系统模式下运行用户程序,假定当前处理器状态为Thumb状态、允许IRQ中断;,2.用户程序运行时发生IRQ中断,硬件完成以下动作:,置位I位(禁止IRQ中断)清零T位(进入ARM状态)设置MOD位,切换处理器模式至IRQ模式,将下一条指令的地址存入IRQ模式的LR寄存器,将CPSR寄存器内容存入IRQ模式的SPSR寄存器,将跳转地址存入PC,实现跳转,BackAddr,JumpAddr,“?”表示对该位不关心,在异常处理结束后,异常处理程序完成以下动作:,图示退出异常过程,将SPSR寄存器的值复制回CPSR寄存器;,将LR寄存的值减去一个常量后复制到PC寄存器,跳转到被中断的用户程序。,BackAddr,JumpAddr,return,BackAddr-4,“?”表示对该位不关心,快速中断请求(FIQ)适用于对一个突发事件的快速响应,这得益于在ARM状态中,快中断模式有8个专用的寄存器可用来满足寄存器保护的需要(这可以加速上下文切换的速度)。不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回:SUBSPC,R14_fiq,#4在一个特权模式中,可以通过置位CPSR中的F位来禁止FIQ异常。,异常,快速中断请求,中断请求(IRQ)异常是一个由nIRQ输入端的低电平所产生的正常中断(在具体的芯片中,nIRQ由片内外设拉低,nIRQ是内核的一个信号,对用户不可见)。IRQ的优先级低于FIQ。对于FIQ序列它是被屏蔽的。任何时候在一个特权模式下,都可通过置位CPSR中的I位来禁止IRQ。不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回:SUBSPC,R14_fiq,#4,异常,中断请求,中止发生在对存储器的访问不能完成时,中止包含两种类型:预取中止发生在指令预取过程中数据中止发生在对数据访问时,异常,中止,当发生预取中止时,ARM内核将预取的指令标记为无效,但在指令到达流水线的执行阶段时才进入异常。如果指令在流水线中因为发生分支而没有被执行,中止将不会发生。在处理中止的原因之后,不管处于哪种处理器操作状态,处理程序都会执行下面的指令恢复PC和CPSR并重试被中止的指令:SUBSPC,R14_abt,#4,异常,中止预取指中止,当发生数据中止后,根据产生数据中止的指令类型作出不同的处理:,异常,中止数据中止,数据转移指令(LDR、STR)回写到被修改的基址寄存器。中止处理程序必须注意这一点;交换指令(SWP)中止好像没有被执行过一样(中止必须发生在SWP指令进行读访问时);,块数据转移指令(LDM,STM)完成。当回写被设置时,基址寄存器被更新。在指示出现中止后,ARM内核防止所有寄存器被覆盖。这意味着ARM内核总是会保护被中止的LDM指令中的R15(总是最后一个被转移的寄存器)。,异常,中止数据中止,当发生数据中止后,根据产生数据中止的指令类型作出不同的处理:,在修复产生中止的原因后,不管处于哪种处理器操作状态,处理程序都必须执行下面的返回指令:SUBSPC,R14_abt,#8,异常,中止数据中止,使用软件中断(SWI)指令可以进入管理模式,通常用于请求一个特定的管理函数。SWI处理程序通过执行下面的指令返回:MOVSPC,R14_svc这个动作恢复了PC和CPSR并返回到SWI之后的指令。SWI处理程序读取操作码以提取SWI函数编号。,异常,软件中断指令,当ARM处理器遇到一条自己和系统内任何协处理器都无法处理的指令时,ARM内核执行未定义指令陷阱。软件可使用这一机制通过模拟未定义的协处理器指令来扩展ARM指令集。注:ARM处理器完全遵循ARM结构v4T,可以捕获所有分类未被定义的指令位格式。,异常,未定义的指令,在模拟处理了失败的指令后,陷阱程序执行下面的指令:MOVSPC,R14_svc这个动作恢复了PC和CPSR并返回到未定义指令之后的指令。,异常,未定义的指令,异常向量,注:表中的I和F表示不对该位有影响,保留原来的值。,当多个异常同时发生时,一个固定的优先级系统决定它们被处理的顺序:,异常,异常优先级,注意:未定义的指令和SWI异常互斥。因为同一条指令不能既是未定义的,又能产生有效的软件中断;当FIQ使能,并且FIQ和数据中止异常同时发生时,ARM内核首先进入数据中止处理程序,然后立即跳转到FIQ向量。在FIQ处理结束后返回到数据中止处理程序。数据中止的优先级必须高于FIQ以确保数据转移错误不会被漏过。,异常,异常优先级,复位,复位,当nRESET信号被拉低时(一般外部复位引脚电平的变化和芯片的其它复位源会改变这个内核信号),ARM处理器放弃正在执行的指令。在复位后,除PC和CPSR之外的所有寄存器的值都不确定。,复位,复位,当nRESET信号再次变为高电平时,ARM处理器执行下列操作:1.强制M4:0变为b10011(管理模式);2.置位CPSR中的I和F位;3.清零CPSR中的T位;4.强制PC从地址0 x00开始对下一条指令进行取指;5.返回到ARM状态并恢复执行。,什么是异常?,当正常的程序执行流程发生暂时的停止时,称之为异常,例如一个外部的中断请求。在处理异常之前,当前处理器的状态必须保存,这样当异常处理完成后,恢复之前保存的处理器现场,当前程序可以继续执行。处理器的状态保存和恢复通常是和体系结构密切相关的,特别是处理器内部的寄存器。,哪些处理器的状态需要保存?,发生异常前的模式下的通用寄存器R0R12需要保存如果是FIQ异常,则可以只保存R0R7CPSR和PC由硬件自动存入SPSR_irq和lr_irq中,保存与否取决于在中断处理程序中是否会改变。R13(sp)和R14(lr)不需要保存从异常模式返回所需要的寄存器返回的地址保存在lr_irq中返回的模式保存在spsr_irq中这些寄存器保存到哪里?保存在异常模式下的堆栈中,sp_irq作为堆栈指针,异常处理时内存映像图示,主程序(通常是无限循环),异常处理程序,保存处理器现场程序,恢复处理器现场程序,主程序内存C语言编写通常是无限循环异常处理程序C语言编写通常是设置标志位,快速处理保存和恢复处理器现场程序汇编语言编写通常是将寄存器压栈和弹栈,异常向量表分析,异常向量表从0地址开始,共有8个表项其中7个表项用作异常发生后入口,1个保留不用一般每个表项内的指令都是一条跳转指令Bxxxx相对跳转指令跳转地址范围有限LDRpc,pc,#xx直接对PC赋值可以实现到任意地址的跳转,几个异常如果同时发生,它们的优先级如下1、复位2、数据异常中止3、FIQ4、IRQ5、预取指令6、SWI和未定义指令,异常的优先级,引入异常向量表后的内存映像,内存,主程序(通常是无限循环),异常处理程序,保存处理器现场程序,恢复处理器现场程序,主程序异常处理程序保存和恢复处理器现场程序异常向量表通常是放置一条跳转语句从主程序到异常向量表的跳转是硬件自动完成的,异常向量表入口,2异常响应,当一个异常出现以后,ARM微处理器硬件会自动完成以下几步操作:1、将下一条指令的地址存入该异常对应的工作模式下的连接寄存器LR(r14_irq),以便程序在处理异常返回时能从正确的位置重新开始执行。讨论:为什么是r14_irq而不是r14_svc?,2、将CPSR复制到相应的SPSR_irq中。3、根据异常类型,强制设置CPSR的运行模式位。4、禁止IRQ中断;进入FIQ模式时禁止FIQ中断。5、映射相应模式的寄存器6、强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。,异常响应(续),3异常处理,异常处理包括两部分保存处理器现场STMFDsp!,r0-r12,lr;执行中断服务子程序BLdo_irq;,4异常返回,异常处理完毕之后,软件需要执行以下几步操作从异常返回:1、将链接寄存器LR的值减去相应的偏移量后送到PC中。2、同时将SPSR复制回CPSR中。可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。,未定义指令异常返回,未定义指令异常是由当前执行的指令自身产生的,程序计数器PC的值还未更新,指向当前指令后面第2条指令。处理器将PC-4保存到寄存器LR_und中。返回操作可通过如下指令实现MOVSPC,LRSTMFDSP!,R0-R12,LR;LDMFDSP!,R0-R12,PC,SWIimm,SWI异常返回,SWI异常通常是提供程序员使用,程序员可以让处理器进入SVC模式下执行特定函数来完成某种功能。我们可以用如下一条指令进入SWI异常:,SWI异常也是由当前执行的指令自身产生的,返回操作同未定义指令异常。,IRQ中断返回,IRQ异常属于正常的中断请求,可通过对处理器的nIRQ引脚输入低电平产生。若将CPSR的I位置为1,则会禁止IRQ中断(注意只有在特权模式下才能改变I位的状态)。若将CPSR的I位清零,处理器会在指令执行完之后检查IRQ的输入。因此,IRQ中断产生时程序计数器PC的值已经更新,指向当前指令后面第3条指令。,IRQ中断返回(续),IRQ中断返回操作可通过如下指令实现SUBSPC,R14_irq,#4SUBSLR,LR,#4STMFDSP!,R0-R12,LR;LDMFDSP!,R0-R12,PC,FIQ中断返回,快速中断异常是为了支持一些快速的中断处理的一种异常模式。FIQ有r8-12作为私有寄存器,在模式切换的时候不用进行太多的寄存器保存和恢复,从而节省了模式切
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司环境与安全培训课件
- 行政人事转正工作总结
- 卤菜店铺转让合同6篇
- 新农村建设工作总结
- 《祖国在我心中》课件
- 2025建筑施工租赁合同范本
- 解读义务教育均衡发展
- 第二季度护理工作总结
- 广东省肇庆市德庆县2022-2023学年高三上学期期中考试地理题库及答案
- 广东省汕头市金平区2023-2024学年高二上学期第二次月考思想政治试题及答案
- (2025年标准)教师定岗协议书
- 8 回忆鲁迅先生(课件)语文统编版2024八年级上册
- 2025年蜀道投资集团有限责任公司招聘笔试备考题库附答案详解(达标题)
- 美术基础 课件 第1、2章 美术简介;素描
- 2025年廉价航空行业研究报告及未来发展趋势预测
- 新能源企业盈利能力分析-以比亚迪股份有限公司为例
- 国家奖学金申请答辩汇报
- 2025年“学宪法讲宪法”知识竞赛题库含答案
- 2024年辽宁省地矿集团招聘真题
- 2025年绿化工技师试题及答案
- 【《基于哈佛分析框架的爱尔眼科公司财务分析(数据图表论文)》13000字】
评论
0/150
提交评论