ARM微处理器体系结构_第1页
ARM微处理器体系结构_第2页
ARM微处理器体系结构_第3页
ARM微处理器体系结构_第4页
ARM微处理器体系结构_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2.2 ARM微处理器体系结构2.2.1 数据类型2.2.2 ARM微处理器的工作状态2.2.3 ARM体系结构的存储器格式2.2.4 理器模式2.2.5 寄存器组织 1.ARM状态下的寄存器组织 2.Thumb状态下的寄存器组织2.2.6 异常2.2 ARM微处理器体系结构 2.2.1 数据类型 ARM处理器支持以下数据类型:字(Word):字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位,请注意区分。半字(Half-Word):半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。字节(Byte):各种处理器体系结构中,字节的长度均为8位。 2.2.2 A

2、RM微处理器的工作状态 从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:ARM状态,此时处理器执行32位的字对齐的ARM指令; Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。ARM处理器在两种工作状态之间可以切换:进入Thumb状态。当操作数寄存器的状态位(位0)为1时,执行BX指令进入Thumb状态。如果处理器在Thumb状态进入异常,则当异常处理(IRQ、FIQ、Undef、Abort 和 SWI)返回时,自动转换到Thumb状态。进入ARM状态。当操作数寄存器的状态位(位0)为0时,执行BX指令进入ARM状态。处理器进行异常处理(IRQ、F

3、IQ、Reset、Undef、Abort 和 SWI ARM状态执行)。在此情况下,把PC 放人异常模式链接寄存器中。从异常向量地址开始执行也可以进入ARM状态。2.2.3 ARM体系结构的存储器格式 ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB。ARM体系结构可以用两种方法存储字数据,称为大端格式和小端格式,具体说明如下。 大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 字地址高地址低地址以

4、大端格式存储字数据 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。以小端格式存储字数据高地址低地址字地址2.2.4 理器模式 ARM微处理器支持7种运行模式,分别为: 用户模式(usr):ARM处理器正常的程序执行状态。快速中断模式(fiq):用于高速数据传输或通道处理。 外部中断模式(irq):用于通用的中断处理。 管理模式(svc):操作系统使用的保护模式,系统复位后的缺省模式。1.指令终止模式(abt):指令预取终止时进入该模式。 2.数据访问终止模式(abt):当数据访问终止时进入该 模式,可用于虚拟存储及存储保护。 指令

5、未定义模式(und):支持硬件协处理器指令的软件 仿真系统模式(sys):运行具有特权的操作系统任务。 ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。除用户模式以外,其余的所有6种模式称为非用户模式或特权模式(Privileged Modes);其中除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。处理器启动时的模式转换图超级模式(Supervisor)多种特权模式变化用户程序的

6、运行模式复位后的缺省模式主要完成各模式的堆栈设置,注意不要进入用户模式一般为用户模式User处理器模式2.2.5 寄存器组织如图 2-4 所示,ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决于微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R0R14、程序计数器PC、一个或两个状态寄存器都是可访问的。 1. ARM状态下的寄存器组织(1) 通用寄存器 (2) 寄存器R16 (1) 通用寄存器通用寄存器包括R0R15,可以分为3类:未分组寄存器R0R7分组寄存器R8R14程序计数器PC(

7、R15) 未分组寄存器R0R7在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,它们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。 分组寄存器R8R14对于分组寄存器,它们每一次所访问的物理寄存器与处理器当前的运行模式有关。对于R8R12,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiqR12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usrR12_usr。对于R13、R14,每个寄存器对应6个不同的物理寄存器

8、,其中一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式。采用以下记号来区分不同的物理寄存器:R13_R14_其中,mode为以下几种模式之一:usr、fiq、irq、svc、abt、und。寄存器R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。由于处理器的每种运行模式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种模式下的R13,使其指向该运行模式的栈空间.这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13

9、所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行。R14也称做子程序连接寄存器(Subroutine Link Register)或连接寄存器LR。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。寄存器R14常用于如下的情况:在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值复制给R

10、14,执行完子程序后,又将R14的值复制回PC,即可完成子程序的调用返回。以上的描述可用指令完成:执行以下任意一条指令: MOV PC,LR 或 BX LR在子程序入口处使用以下指令将R14存 入堆栈: STMFD SP! ,LR对应的,使用以下指令可以完成子程序返回:LDMFD SP! ,PC R14也可作为通用寄存器。 程序计数器PC(R15)寄存器R15用作程序计数器(PC)。在ARM状态下,位1:0为0,位31:2用于保存PC;在Thumb状态下,位0为0,位31:1用于保存PC。虽然可以用作通用寄存器,但是有一些指令在使用R15时有一些特殊限制,若不注意,执行的结果将是不可预料的。在

11、ARM状态下,PC的0和1位是0,在Thumb状态下,PC的0位是0。 R15虽然也可用作通用寄存器,但一般不这么使用,因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。由于ARM体系结构采用多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加八个字节。在ARM状态下,任一时刻可以访问以上所讨论的16个通用寄存器和12个状态寄存器。在非用户模式(特权模式) 下,则可访问到特定模式分组寄存器,图2-4说明在每一种运行模式下,哪一些寄存器是可以访问的。 (2) 寄存器R16 寄存器R16用作CPSR(Curren

12、t Program Status Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。 每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR (Saved Program Status Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。由于用户模式和系统模式不属于异常模式,它们没有SPSR,当在这两种模式下访问SPSR时,结果是未知的。程序状态字参见后面说明。 2. Thumb状态下的寄存器组织Thu

13、mb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。同时,在每一种特权模式下都有一组SP、LR和SPSR。图2-4表明Thumb状态下的寄存器组织。 (1) Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系Thumb状态下和ARM状态下的R0R7是相同的Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的Thumb状态下的SP对应于ARM状态下的R13Thumb状态下的LR对应于ARM状态下的R14Thumb状态下的程序计数器对应于ARM状态下的R15以上的

14、对应关系如图2-5所示。 (2) 访问THUMB状态下的高位寄存器(Hi-registers) 在Thumb状态下,高位寄存器R8R15并不是标准寄存器集的一部分,但可使用汇编语言程序有限制地访问这些寄存器,将其用作快速的暂存器.使用带特殊变量的 MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送,高位寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的值。 (3) 程序状态寄存器 ARM体系结构包含一个当前程序状态寄存器(CPSR)和5个备份的程序状态寄存器 (SPSRs)。备份的程序状态寄存器用来进行异常处理,其功能包括:保存ALU中的当前操作信息。控制允许和禁止中断。设

15、置处理器的运行模式。程序状态寄存器每一位的安排如图2-6所示. 条件码标志(Condition Code Flags)N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下仅有分支指令是有条件执行的。条件码标志各位的具体含义如表2-1所示。 控制位PSR的低8位(包括I、F、T和M4:0)称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。中断禁止位I、FI1 禁止IRQ中断F1 禁止FIQ中断T标志位:该位反映处理器的运行状态。 对于AR

16、M体系结构v5及以上版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。对于ARM体系结构v5及以上版本的非T系列处理器,当该位为1时,执行下一条指令以引起未定义的指令异常;当该位为0时,表示运行于ARM状态。运行模式位M4:0:M0、M1 、 M2、M3、M4是模式位。这些位决定了处理器的运行模式。具体含义如表2-2所示。由表2-2可知,并不是所有的运行模式位的组合都是有效的,其他的组合结果会导致处理器进入一个不可恢复的状态。 保留位PSR中的其余位为保留位,当改变PSR中的条件码标志位或者控制位时,保留位不要改变,在程序中也不要使用保留位来存储数据。保留位将用

17、于ARM版本的扩展。 2.2.6 异常异常(exception)由内部或外部源产生以引起处理器处理一个事件。例如,外部中断或试图执行未定义指令都会引起异常。在处理异常之前,处理器状态必须保留,以便在异常处理程序完成后,原来的程序能够重新执行。同一时刻可能出现多个异常。 ARM支持7种类型的异常。表2-3列出了异常的类型以及处理这些异常的处理器模式。异常出现后,强制从异常类型对应的固定存储器地址开始执行程序。这些固定的地址称为异常向量(Exception Vectors)。 当异常出现时,异常模式分组的R14和SPSR用于保存状态,即R14_ = return linkSPSR_ = CPSRC

18、PSR4:0 = exception mode numberCPSR5= 0 *在ARM状态执行*if = Reset or FIQ then CPSR6 = 1 *禁止快速中断* *否则CPSR6不变*CPSR7 = 1 *禁止正常中断*/PC = exception vector address当处理异常返回时,将SPSR传送到CPSR,R14传送到PC。这可用两种方法自动完成,即使用带S位的数据处理指令,将PC作为目的寄存器;使用带恢复CPSR的多加载指令。 复 位 处理器上一旦有复位输入,ARM处理器立刻停止执行当前指令。复位完成下列操作R14_svc=UNPREDICTABLE va

19、lueSPSR_svc=UNPREDICTABLE valueCPSR4:0=0b10011 /*进入管理模式*/CPSR50 /*在ARM状态下执行*/CPSR61 /*禁止快速中断*/CPSR71 /*禁止正常中断*/If high vectors configured thenPC=0 xFFFF0000ElsePC=0 x00000000复位后,ARM处理器在禁止中断的管理模式下,从地址0 x00000000或OxFFFF0000开始执行指令。 未定义指令异常 当ARM处理器执行协处理器指令时,它必须等待任一外部协处理器应答后,才能真正执行这条指令。若协处理器没有响应,就会出现未定义指

20、令异常。若试图执行未定义的指令,也会出现未定义指令异常。未定义指令异常可用于没有物理协处理器(硬件)的系统上,对协处理器进行软件仿真,或在软件仿真时进行指令集扩展。当未定义指令异常出现时,执行下列操作: R14_und=address of next instruction after the undefined instructionSPSR_und=CPSRCPSR4:0=0b11011 /*进入未定义模式*/CPSR5=0 /*在ARM状态执行*/*CPSR6不变*/CPSR7=1 /*禁止正常中断*/If high vectors configured thenPC=0 xFFFF00

21、04ElsePC=0 x00000004在仿真未定义指令后,使用下列指令返回,即MOVS PC,R14上面的指令恢复PC(从R14_und)和CPSR(从SPSR_und),并返回到未定义指令后的下一条指令。3软件中断异常软件中断指令SWI(SoftWare Interrupt lnstruction)进入管理模式,以请求特定的管理(操作系统)函数。当执行SWI时,完成下列操作:R14_svc=address of next instruction after the SWI instructionSPSR_svc=CPSRCPSR4:0=0b10011 /*进入管理模式*/CPSR5=0 /

22、*在ARM状态执行*/*CPSR6不变*/CPSR7=1 /*禁止正常中断*/If high vectors configured thenPC=0 xFFFF0008ElesPC=0 x00000008完成SWI操作后,使用下列指令恢复PC(从R14_svc)和CPSR(从SPSR_svc),并返回到SWI指令后的下一条指令,即MOVS PC,R144. 预取中止(取指令存储器中止) 存储器系统发出存储器中止(abort)信号。响应取指激活的中止标记所取的指令无效。若处理器试图执行无效指令,则产生预取中止异常。若指令未执行(例如,指令在流水线中发生了转移),则不发生预取中止。在ARMv5及以

23、上版本中,执行BKPT指令也会产生预取中止异常。当试图执行一条中止的指令时,将执行下列操作:R14_abt=address of the aborted instruction + 4SPSR_abt=CPSRCPSR4:0=0b10111 /*进入中止模式*/CPSR5=0 /*在ARM状态执行*/* CPSR 6不变*/CPSR7=1 /*禁止正常中断*/If high vectors configured thenPC=0 xFFFF000CElse PC=0 x0000000C确定中止原因后,使用下面指令从中止模式返回,即SUBS PC,R14,#4上面的指令恢复PC(从R14_abt

24、)和CPSR(从SPSR_abt),并返回到中止的指令。数据中止(数据访问存储器中止)存储器系统发出存储器中止信号。响应数据访问(加载或存储)激活的中止标记数据为无效。在下面的任何指令或异常改变CPU状态之前,数据中止异常发生。执行下列操作:R14_abt=address of the aborted instruction + 8SPSR_abt=CPSRCPSR4:0=0b10111 /*进入中止模式*/CPSR5=0 /*在ARM状态执行*/* CPSR 6不变*/CPSR7=1 /*禁止正常中断*/If high vectors configured thenPC=0 xFFFF001

25、0Else PC=0 x00000010确定中止原因后,使用下列指令从中止模式返回,即SUBS PC,R14,#8上面的指令恢复PC(从R14_abt)和CPSR (从SPSR_abt),并返回重新执行中止的指令。若中止的指令不需要重新执行,则使用下面的指令:SUBS PC,R14,#4. 中断请求(IRQ)异常通过处理器上的IRQ输入引脚,由外部产生IRQ异常。IRQ异常的优先级比FIQ异常的低。当进入FIQ处理时,会屏蔽掉IRQ异常。若CPSR的I位置为1,则禁止IRQ中断。若I位清零,则ARM在指令执行完之前检查IRQ输入。只能在特权模式下改变I位,当检测到IRQ时,执行下列操作:R14

26、_irq=address of the aborted instruction + 4SPSR_irq=CPSRCPSR4:0=0b10010 /*进入IRQ模式*/CPSR5=0 /*在ARM状态执行*/* CPSR 6不变*/CPSR7=1 /*禁止正常中断*/If high vectors configured thenPC=0 xFFFF0018Else PC=0 x00000018使用下面的指令从中断服务返回,即SUBS PC,R14,#4上面的指令恢复PC(从R14_irq)和CPSR(从SPSR_irq),并继续执行被中断的程序。快速中断请求(FIQ)异常通过处理器上的FIQ输入

27、引脚,由外部产生FIQ异常。FIQ被设计成支持数据传送和通道处理,并有足够的私有(private)寄存器,从而在这样的应用中可避免对寄存器保存的需求,减少了上下文切换的总开销。当CPSR的F位置1时,禁止快速中断。若F位清零,则ARM在执行指令时检查FIQ输入。只能在特权模式下改变F位,当检测到FIQ时,执行下列操作,即R14_fiq=address of the aborted instruction + 4SPSR_fiq=CPSRCPSR4:0=0b10001 /*进入FIQ模式*/CPSR5=0 /*在ARM状态执行*/CPSR6=1 /*禁止快速中断*/CPSR7=1 /*禁止正常中

28、断*/If high vectors configured thenPC=0 xFFFF001CElsePC=0 x0000001C 使用下面的指令从中断服务返回,即SUBS PC,R14,#4上面的指令恢复PC(从R14_fiq)和CPSR(从SPSR_fiq),并继续执行被中断的程序。FIQ向量放在最后,允许FIQ异常处理程序直接放在地址0 x0000001C或0 xFFFF001C开始的位置,而不需要由向量的分支指令执行跳转到异常处理程序。8. 异常优先级异常的优先级如表2-4所列。 优先级异常优先级异常1(最高)复位4IRQ2数据中止5预取中止3FIQ6(最低)未定义指信、SWI9.

29、高端向量一些ARM实现允许异常向量的定位由32位地址空间低端的正常地址范围Ox00000000Ox000000lC,移到接近于地址空间高端的另一地址范围0 xFFFF00000 xFFFF00lC。这些改变后的地址位置称为高端向量。由IMPLEMENTATION DEFINED决定是否支持高端向量。如果支持,则在输入硬件配置时,选择是使用正常向量还是高端向量。10. 异常的进入和退出只要正常的程序流程被暂时停止,则异常发生,例如服务外部的中断。在异常被处理之前,必须保存当前的处理器状态,以便当处理程序完成后,原来的程序能重新开始。如果几种异常同时发生,则对它们按固定的次序处理,可参考异常优先级

30、(1) 进入异常的操作处理一个异常时,ARM7TDMI用于:将下一条指令的地址保存在相应的LR寄存器中。如果异常是从ARM状态进入,则保存在LR寄存器中的是下一条指令的地址(当前PC+4或PC+8,取决于异常,见表2-5)。 如果异常是从Thumb状态进入,则保存在LR寄存器中的是当前PC的偏移值。它能使程序在异常处理返回后从正确的位置重新开始。这就意味异常处不需要确定异常是从何种状态进入的。例如在软件中断(SWI)情况下,“MOVS PC,R14_svc”,总是返回到下一条指令,而与SWI是在ARM还是Thumb状态下执行的无关。将CPSR复制到相应的SPSR中。迫使CPSR模式位设置成取决

31、于异常的值。迫使PC从相关的异常向量中取下一条指令。也可以设置中断禁止位来阻止其它无法处理的异常嵌套。如果在异常发生时处理器是在Thumb状态下,那么当用中断异常向量地址加载PC时,自动切换进入ARM状态。(2) 退出异常的操作在完成异常处理后:将LR寄存器的值减去相应的偏移量(偏移量根据异常不同而不同),送到PC中;将SPSR复制回CPSR中;清除中断禁止位标志。另外,不需要显式切换回Thumb状态,因为从SPSR中将CPSR T位自动设置为异常前的原值。(3) 进入和退出异常小结表2-5中总结了进入异常处理时保存在相应的R14寄存器中的PC值,以及在退出异常处理时推荐使用的指令。PC是具有

32、预取中止的BL/SWI/未定义指令所取的地址;PC是从FIQ或IRQ取得优先权后不能执行的指令的地址;PC是产生数据中止的加载或存储指令的地址;复位时保存在R14_svc中的值是不可预知的。R0R0R0R0R0R0R1R1R1R1R1R1R2R2R2R2R2R2R3R3R3R3R3R3R4R4R4R4R4R4R5R5R5R5R5R5R6R6R6R6R6R6R7R7R7R7R7R7R8R8-fiqR8R8R8R8R9R9-fiqR9R9R9R9R10R10-fiqR10R10R10R10R11R11-fiqR11R11R11R11R12R12-fiqR12R12R12R12R13R13-fiq1

33、3-svc13-adt13-itq13-undR14R14-fiq14-svc14-adt14-itq14-undR15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)Systerm&User FIQ Supervister About IRG UndefinedARM状态下的积存器组织CPSRCPSRCPSRCPSRCPSRCPSRSPSR-foqSPSR-svcSPSR-abtSPSR-inqSPSR-und返回图 2-5 Thumb 状态下的寄存器组织 R0 R1 R2 R3 R4 R5 R6 R7Stack Point (SP)Link Register

34、(LR)Program Counter (PC) CPSR SPSR RO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12Stack Point (R13)Link Register (R14)Program Counter (R15) CPSR SPSRThumb状态ARM状态返回返回标志位含义N当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零ZZ=1表示运算的结果为零;Z=0表示运算的结果为非零C可以有4种方法设置C的值;加法运算(包括比较指令CMP);当运算结果产生了进位时(无符号数溢出),C=1,否则C=0;

35、减法运算(包括比较指令CMP);当运算时产生了借位(无符号数溢出),C=0,否则C=1;对于包含移位操作的非加/减运算指令,C为移出值的最后一位;对于其它的非加/减运算指令,C的值通常不改变条件码的具体含义N当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零ZZ=1表示运算的结果为零;Z=0表示运算的结果为非零C可以有4种方法设置C的值;加法运算(包括比较指令CMP);当运算结果产生了进位时(无符号数溢出),C=1,否则C=0;减法运算(包括比较指令CMP);当运算时产生了借位(无符号数溢出),C=0,否则C=1;对于包含移位操作的非加/减运算指令,C为移出值的最后一位;对于其它的非加/减运算指令,C的值通常不改变返回M4:0处理器模式可访问的寄存器0b10000用户模式PC,CPSR,R0R140b10001FIQ模式PC,CPSR,SPSR_fiq,R14_fiqR8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论