ARM7体系结构概述课件_第1页
ARM7体系结构概述课件_第2页
ARM7体系结构概述课件_第3页
ARM7体系结构概述课件_第4页
ARM7体系结构概述课件_第5页
已阅读5页,还剩181页未读 继续免费阅读

下载本文档

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

文档简介

2.1ARM简介ARM体系结构ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。它具有经典RISC的特点:寄存器:具有更多的通用寄存器;装载/保存结构:处理器操作只针对寄存器的内容,而不直接对存储器进行操作;流水线:将指令处理过程分为多步,提高效率;指令长度:统一长度的指令域,简化指令译码。2.1ARM简介ARM体系结构ARM处理12.1ARM简介ARM体系结构 ARM体系结构的特点,使其非常适用于嵌入式系统:低功耗:对于电池供电的设备,功耗无疑是重点;高代码密度:小的代码量可以减小存储成本;小面积:芯片内可以集成更多的外设,使系统硬件更紧凑简洁;方便的硬件调试技术:降低开发难度和成本。2.1ARM简介ARM体系结构 ARM体系结构的特点,使22.1ARM简介各ARM体系结构版本ARM体系结构从最初开发到现在有了巨大的改进,并仍在完善和发展。为了清楚的表达每个ARM应用实例所使用的指令集,ARM公司定义了6种主要的ARM指令集体系结构版本,以版本号V1~V6表示。其中V1~V3已经停止使用,常用的ARM7为V4版本。2.1ARM简介各ARM体系结构版本AR32.1ARM简介各ARM体系结构版本——V4

不在为了与以前的版本兼容而支持26位体系结构,并明确了哪些指令会引起未定义指令异常发生,它相对V3版本作了以下的改进:增加半字加载/存储指令;字节和半字的加载和符号扩展指令;具有可以转换到Thumb状态的指令;增加使用用户模式寄存器的系统模式。2.1ARM简介各ARM体系结构版本——V442.1ARM简介各ARM体系结构版本——V5

在V4版本的基础上,对现在指令的定义进行了必要的修正,对V4版本的体系结构进行了扩展并并增加了指令,具体如下:改进了ARM/Thumb状态之间的切换效率;允许非T变量和T变量一样,使用相同的代码生成技术;增加计数前导零指令和软件断点指令;对乘法指令如何设置标志作了严格的定义。2.1ARM简介各ARM体系结构版本——V552.1ARM简介ARM处理器核简介ARM公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,而ARM6核以及更早的系列已经很罕见了。目前应用比较广泛的系列是:ARM7ARM9ARM9EARM10Cortex-M3XscaleARM112.1ARM简介ARM处理器核简介ARM62.1ARM简介ARM处理器核简介——ARM7

该系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。该系列处理器提供Thumb16位压缩指令集和EmbededICE软件调试方式,适用于更大规模的SoC设计中。

ARM7系列广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。2.1ARM简介ARM处理器核简介——ARM772.1ARM简介ARM处理器核简介——ARM9

该系列包括ARM9TDMI、ARM920T、ARM926和带有高速缓存处理器宏单元的ARM940T。除了兼容ARM7系列,而且能够更加灵活的设计。

PHILIPS最近推出的LPC3180就是基于ARM926的微处理器,即将推出的开发套件SmartARM3180支持Linux2.4、WinCE4.2,还有PC104等工控机系列产品。

ARM9系列主要应用于引擎管理、仪器仪表、安全系统和机顶盒等领域。2.1ARM简介ARM处理器核简介——ARM982.1ARM简介ARM处理器核简介——Cortex-M3

该系列主要针对MCU市场,改进了代码密度,减少了中断延迟,并有更低的功耗,支持Thumb-2指令集。开发套件:KeilRealView(包含ULINK仿真器),支持ARM7、ARM9以及Cortex-M3,ADS将停止支持Cortex-M3,预计市场上第一颗基于Cortex-M3的MCU将于第四季度上市。2.1ARM简介ARM处理器核简介——Cortex-M39第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.中断延迟11.复位12.存储器及存储器映射I/O第2章目录1.简介7.内部寄存器102.2ARM7TDMI简介ARM7TDMI支持32位寻址范围,并弥补了ARM6不能在低于5V电源电压下工作的不足。ARM7TDMI的后缀意义为:支持高密度16位的Thumb指令集;支持片上调试;支持64位乘法;支持EmbededICE观察硬件;ARM7TDMI的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI一致;ARM7TDMI-S2.2ARM7TDMI简介ARM7TDM112.2ARM7TDMI三级流水线正在执行的指令正在译码的指令正在预取的指令内核流水线LDR R0,AddInstrSTR R0,NextInstrSUBR1,R1,#1...ADDR1,R1,#1(1)(2)(4)(3)源程序2.2ARM7TDMI三级流水线正在执行的指令正在译码的12第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.中断延迟11.复位12.存储器及存储器映射I/O第2章目录1.简介7.内部寄存器132.7内部寄存器R14寄存器与异常发生

异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。2.7内部寄存器R14寄存器与异常发生异14程序计数器R15(PC)

寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。程序计数器R15(PC)寄存器R15为程序计数152.7内部寄存器读R15的限制

正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。由于ARM指令总是以字为单位,所以R15寄存器的最低两位总是为0。内核流水线

取指

译码

执行MOVADD……源程序PC(R15)PCPC-4PC-82.7内部寄存器读R15的限制正常操作时16MOVR0,PC

ADDSUB…2.7内部寄存器读R15的限制内核流水线取指译码执行SUBADDMOV程序代码PC-8PC-4PC地址注意:执行一条PC读取指令时,读取的值并不是该行指令的地址值。MOVR0,PC2.7内部寄存器读R15的限制内核170x4000 ADDPC,PC,#40x4004 …0x4008 …0x400C …

思考与练习?

假设CPU正在运行以下的程序,并正在执0x4000处的指令(它的作用是将PC值加4后写入PC),请问指令执行后PC值是什么?正被执行正被译码PC指向指令执行结果PC=PC+40x4000 ADDPC,PC,#4思考182.7内部寄存器读R15的限制

当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存(将来可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。2.7内部寄存器读R15的限制当使用ST192.7内部寄存器读R15的限制计算偏移量程序代码:SUB R1,PC,#4 ;R1=下面STR指令的地址STR PC,[R0] ;保存STR指令地址+偏移量LDR R0,[R0] ;然后重装SUB R0,R0,R1 ;计算偏移量2.7内部寄存器读R15的限制计算偏移量程序代码:SUB202.7内部寄存器写R15的限制

正常操作时,写入R15的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。2.7内部寄存器写R15的限制正常操作时212.7内部寄存器写R15的限制

由于ARM指令以字为边界,因此写入R15的值最低两位通常为0b00。具体的规则取决于内核结构的版本:在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0xFFFFFFFC相与得到;在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测。2.7内部寄存器写R15的限制由于ARM22程序状态寄存器CPSR

寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在因为异常事件而进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。详细描述参看2.8小节。程序状态寄存器CPSR寄存器CPSR为程序状态232.7内部寄存器Thumb状态寄存器Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:8个通用寄存器R0~R7;程序计数器(PC);堆栈指针(SP);链接寄存器(LR);有条件访问程序状态寄存器(CPSR)。2.7内部寄存器Thumb状态寄存器Th24Thumb状态各模式下的寄存器CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别注意:括号内为ATPCS中寄存器的命名,可以使用RN汇编伪指令将寄存器定义多个名字。其中ADS1.2的汇编程序直接支持这些名称,但注意a1~a4,v1~v4必须用小写。Thumb状态各模式下的寄存器CPSRCPSR状态寄存器R125Thumb状态下的通用寄存器CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别R7R6R5R4R3R2R1R0

在汇编语言中寄存器R0~R7为保存数据或地址值的通用寄存器。对于任何处理器模式,它们中的每一个都对应于相同的32位物理寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊的用途,并且可用于任何使用通用寄存器的指令。Thumb状态下的通用寄存器CPSRCPSR状态寄存器R1526Thumb状态下的堆栈指针寄存器(SP)CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别

堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。

注意:在发生异常时,处理器自动进入ARM状态。R13_fiqR13_irqR13_undR13_abtR13_svcR13Thumb状态下的堆栈指针寄存器(SP)CPSRCPSR状态27Thumb状态下的链接寄存器R14(LR)CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别

链接寄存器LR对应ARM状态寄存器R14,在结构上有两个特殊功能,详见“ARM状态下的链接寄存器LR”。

注意:在发生异常时,处理器自动进入ARM状态。R14_fiqR14_irqR14_undR14_abtR14_svcR14Thumb状态下的链接寄存器R14(LR)CPSRCPSR状282.7内部寄存器ARM状态和Thumb状态之间寄存器的关系Thumb状态寄存器与ARM状态寄存器有如下的关系:Thumb状态R0~R7与ARM状态R0~R7相同;Thumb状态CPSR与ARM状态CPSR相同;Thumb状态SP映射到ARM状态R13;Thumb状态LR映射到ARM状态R14;Thumb状态PC映射到ARM状态PC(R15)。2.7内部寄存器ARM状态和Thumb状态之间寄存器的关29Thumb状态寄存器在Arm状态寄存器上的映射低寄存器高寄存器

R1

R2

R3

R4

R5

T

humb

R6

R7

(

C

PSR

)

R1

R2

R3

R4

R5

A

R

M

R6

R7

R8

(

C

PSR

)

R9

R10

R11

R12

R0

R0

状态

状态堆栈指针(SP)

连接寄存器(LR)

程序计数器(PC)

当前程序状态寄存器

堆栈指针(R13)

连接寄存器(R14)

程序计数器(R15)

当前程序状态寄存器

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R0

堆栈指针(R13)

连接寄存器(R14)

程序计数器(R15)

Thumb状态寄存器在Arm状态寄存器上的映射低寄存器高寄存302.7内部寄存器在Thumb状态中访问高寄存器

在Thumb状态中,高寄存器(R8~R15)不是标准寄存器集的一部分。汇编语言程序员对它们的访问受到限制,但可以将它们用于快速暂存。可以使用MOV、CMP和ADD指令对高寄存器操作,详见第4章。2.7内部寄存器在Thumb状态中访问高寄存器31第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.中断延迟11.复位12.存储器及存储器映射I/O第2章目录1.简介7.内部寄存器322.8程序状态寄存器简介ARM7TDMI内核包含1个CPSR和5个供异常处理程序使用的SPSR。CPSR反映了当前处理器的状态,其包含:4个条件代码标志(负(N)、零(Z)、进位(C)和溢出(V));2个中断禁止位,分别控制一种类型的中断;

5个对当前处理器模式进行编码的位;1个用于指示当前执行指令(ARM还是Thumb)的位。2.8程序状态寄存器简介ARM7TDM33NZCV——IM0M1M2M3M4TF—...3130292827268765432102.8程序状态寄存器简介条件代码标志保留控制位溢出标志进位或借位扩展零负或小于IRQ禁止FIQ禁止状态位模式位NZCVIM0M1M2M3M4TFCPSR寄存器的格式NZCV——IM0M1M2M3M4TF—...31342.8程序状态寄存器简介

每个异常模式还带有一个程序状态保存寄存器(SPSR),它用于保存在异常事件发生之前的CPSR。CPSR和SPSR通过特殊指令进行访问。详细信息请参阅第3章。注意:如果通过程序修改CPSR寄存器中的模式位进入异常模式,那么硬件将不会把CPSR保存至SPSR中。2.8程序状态寄存器简介每个异常模式还352.8程序状态寄存器条件代码标志

大多数“数值处理指令”可以选择是否影响条件代码标志位。通常如果指令带S后缀,则该指令的执行会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。

N、Z、C和V位都是条件代码标志。通过算术操作、逻辑操作、MSR或者LDM指令可以对这些位进行设置。所有ARM指令都可按条件来执行,而Thumb指令中只有分支指令可按条件执行。2.8程序状态寄存器条件代码标志大多数“362.8程序状态寄存器条件代码标志各标志位的含义如下:N运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;Z指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;2.8程序状态寄存器条件代码标志各标志位的含义如下:372.8程序状态寄存器条件代码标志各标志位的含义如下:C当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行减法运算(包括CMP指令),并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;V当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。2.8程序状态寄存器条件代码标志各标志位的含义如下:382.8程序状态寄存器控制位CPSR的最低8位为控制位,当发生异常时,这些位被硬件改变。当处理器处于一个特权模式时,可用软件操作这些位。它们分别是:中断禁止位;T位;模式位。2.8程序状态寄存器控制位CPSR的最392.8程序状态寄存器控制位中断禁止位包括I和F位:当I位置位时,IRQ中断被禁止;当F位置位时,FIQ中断被禁止。T位反映了正在操作的状态:当T位置位时,处理器正在Thumb状态下运行;当T位清零时,处理器正在ARM状态下运行。2.8程序状态寄存器控制位中断禁止位包括I和F位:402.8程序状态寄存器控制位模式位包括M4、M3、M2、M1和M0,这些位决定处理器的操作模式。注意:不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢复的错误。2.8程序状态寄存器控制位模式位包括M4、M3、M2、M41CPSR模式位设置表CPSR模式位设置表422.8程序状态寄存器保留位CPSR中的保留位被保留将来使用。为了提高程序的可移植性,当改变CPSR标志和控制位时,请不要改变这些保留位。另外,请确保您程序的运行不受保留位的值影响,因为将来的处理器可能会将这些位设置为1或者0。2.8程序状态寄存器保留位CPSR中的保43第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.中断延迟11.复位12.存储器及存储器映射I/O第2章目录1.简介7.内部寄存器442.9异常简介

只要正常的程序流被暂时中止,处理器就进入异常模式。例如响应一个来自外设的中断。在处理异常之前,ARM7TDMI内核保存当前的处理器状态,这样当处理程序结束时可以恢复执行原来的程序。如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常,详见“异常优先级”部分。2.9异常简介只要正常的程序流被暂时中止452.9异常异常的入口和出口处理

如果异常处理程序已经把返回地址拷贝到堆栈,那么可以使用一条多寄存器传送指令来恢复用户寄存器并实现返回。SUBLR,LR,#4 ;计算返回地址STMFDSP!,{R0-R3,LR} ;保存使用到的寄存器...LDMFDSP!,{R0-R3,PC}^ ;中断返回中断处理代码的开始部分和退出部分2.9异常异常的入口和出口处理如果异常处理程序46

如果异常处理程序已经把返回地址拷贝到堆栈,那么可以使用一条多寄存器传送指令来恢复用户寄存器并实现返回。中断处理代码的开始部分和退出部分2.9异常异常的入口和出口处理SUBLR,LR,#4 ;计算返回地址STMFDSP!,{R0-R3,LR} ;保存使用到的寄存器...LDMFDSP!,{R0-R3,PC}^ ;中断返回注意:中断返回指令的寄存器列表(其中必须包括PC)后的“^”符号表示这是一条特殊形式的指令。这条指令在从存储器中装载PC的同时(PC是最后恢复的),CPSR也得到恢复。这里使用的堆栈指针SP(R13)是属于异常模式的寄存器,每个异常模式有自己的堆栈指针。这个堆栈指针应必须在系统启动时初始化。如果异常处理程序已经把返回地址拷贝到堆栈,那么可以472.9异常进入异常在异常发生后,ARM7TDMI内核会作以下工作:1.在适当的LR中保存下一条指令的地址,当异常入口来自:ARM状态,那么ARM7TDMI将下一条指令地址复制到LR中;为ARM或Thumb状态,那么ARM7TDMI将当前指令地址加4或加8(取决于异常的类型)复制到LR中;异常处理器程序不必确定状态。2.9异常进入异常在异常发生后,ARM7TDMI内核会作482.9异常进入异常在异常发生后,ARM7TDMI内核会作以下工作:2.将CPSR复制到适当的SPSR中;3.将CPSR模式位强制设置为与异常类型相对应的值;4.强制PC从相关的异常向量处取指。2.9异常进入异常在异常发生后,ARM7TDMI内核会作49ARM7TDMI内核在中断异常时置位中断禁止标志,这样可以防止不受控制的异常嵌套。注:异常总是在ARM状态中进行处理。当处理器处于Thumb状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM状态。2.9异常进入异常ARM7TDMI内核在中断异常时置位中断禁止50当异常结束时,异常处理程序必须:1.将LR中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;2.将SPSR的值复制回CPSR;3.清零在入口置位的中断禁止标志。注:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。2.9异常退出异常当异常结束时,异常处理程序必须:2.9异常退出异常51程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示进入异常过程1.程序在系统模式下运行用户程序,假定当前处理器状态为Thumb状态、允许IRQ中断;2.用户程序运行时发生IRQ中断,硬件完成以下动作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV置位I位(禁止IRQ中断)清零T位(进入ARM状态)设置MOD位,切换处理器模式至IRQ模式将下一条指令的地址存入IRQ模式的LR寄存器将CPSR寄存器内容存入IRQ模式的SPSR寄存器将跳转地址存入PC,实现跳转IRQ0?1...????BackAddrJumpAddrJumpSYS1?0...????“?”表示对该位不关心程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示进入异52在异常处理结束后,异常处理程序完成以下动作:程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示退出异常过程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV将SPSR寄存器的值复制回CPSR寄存器;将LR寄存的值减去一个常量后复制到PC寄存器,跳转到被中断的用户程序。IRQ0?1...????BackAddrJumpAddrreturnSYS1?0...????SYS1?0...????BackAddr-4Jump“?”表示对该位不关心在异常处理结束后,异常处理程序完成以下动作:程序AIRQ服务53FIQ和IRQ中断请求由ARM内核的nFIQ和nIRQ信号线输入,当信号线上出现有效触发电平时,产生相应的FIQ或IRQ中断,ARM核进入相应的异常模式。2.9异常FIQ和IRQ中断请求FIQ和IRQ中断请求由ARM内核的nFIQ54

快速中断请求(FIQ)适用于对一个突发事件的快速响应,这得益于在ARM状态中,快中断模式有8个专用的寄存器可用来满足寄存器保护的需要(这可以加速上下文切换的速度)。2.9异常快速中断请求

与其它模式相比,它有更多的自有寄存器,可以减少程序中堆栈的操作,提高处理速度。快速中断请求(FIQ)适用于对一个突发事件的55

不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回:SUBSPC,R14_fiq,#4

在一个特权模式中,可以通过置位CPSR中的F位来禁止FIQ异常。2.9异常快速中断请求不管异常入口是来自ARM状态还是Thumb状56

中断请求(IRQ)异常是一个由nIRQ输入端的低电平所产生的正常中断(在具体的芯片中,nIRQ由片内外设拉低,nIRQ是内核的一个信号,对用户不可见)。IRQ的优先级低于FIQ。对于FIQ序列它是被屏蔽的。任何时候在一个特权模式下,都可通过置位CPSR中的I位来禁止IRQ。不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回:SUBSPC,R14_irq,#42.9异常中断请求中断请求(IRQ)异常是一个由nIRQ输入端57指令A指令B指令C……正常程序流代码2.9异常IRQ与FIQ的返回地址处理中断发生时正在执行的指令中断发生时PC指向的指令void__irqINT_Express(){

服务代码}//

SUBSpc,r14,#4C语言中断服务程序指令A指令B指令C……正常程序流代码2.9异常IRQ与F58

中止发生在对存储器的访问不能完成时。例如试图访问一个保留地址或未分配区域的地址,ARM处理器将产生中止异常。中止包含两种类型:预取中止发生在指令预取过程中数据中止发生在对数据访问时2.9异常中止中止发生在对存储器的访问不能完成时。例如试图59例如:LPC2000微控制器会发生中止异常的区域:FlashSRAMBootBlockVPB地址空间AHB1.特定的ARM器件所没有的存储器映射区域;2.AHB外设空间中未分配的区域;3.VPB外设空间中未分配的区域。2.9异常中止231例如:FlashSRAMBootBlockVPB地址空间A60

当发生预取中止时,ARM7TDMI内核将预取的指令标记为无效,但在指令到达流水线的执行阶段时才进入异常。如果指令在流水线中因为发生分支而没有被执行,中止将不会发生。在处理中止的原因之后,不管处于哪种处理器操作状态,处理程序都会执行下面的指令恢复PC和CPSR并重试被中止的指令:

SUBSPC,R14_abt,#42.9异常中止——预取指中止当发生预取中止时,ARM7TDMI内核将预取61指令流水线指令C指令B指令A存储器无效区域取指译码执行指令C指令B指令A取指译码执行存储器程序存储器第N次取指2.9异常中止——预取指中止指令流水线指令C指令B指令A存储器无效区域取指译码执行指令C62第N+1次取指指令流水线指令C指令B指令A存储器无效区域取指译码执行指令C指令B指令A无效指令指令C指令B取指译码执行存储器程序存储器2.9异常中止——预取指中止第N+1次取指指令流水线指令C指令B指令A存储器无效区域取指63第N+2次取指指令流水线指令C指令B指令A存储器无效区域取指译码执行指令C指令B指令A无效指令指令C指令B取指译码执行无效指令无效指令指令C存储器程序存储器2.9异常中止——预取指中止第N+2次取指指令流水线指令C指令B指令A存储器无效区域取指64指令流水线指令C指令B指令A存储器无效区域取指译码执行指令C指令B指令A无效指令指令C指令B取指译码执行无效指令无效指令指令C无效指令无效指令无效指令存储器程序存储器

第N+3次取指,此时流水线的执行级执行了无效指令,发生预取指中止。如果指令C为跳转指令则可以避免预取指中止的发生。2.9异常中止——预取指中止指令流水线指令C指令B指令A存储器无效区域取指译码执行指令C65

当发生数据中止后,根据产生数据中止的指令类型作出不同的处理。2.9异常中止——数据中止

在修复产生中止的原因后,不管处于哪种处理器操作状态,处理程序都必须执行下面的返回指令:

SUBSPC,R14_abt,#8当发生数据中止后,根据产生数据中止的指令类型66

使用软件中断(SWI)指令可以进入管理模式,通常用于请求一个特定的管理函数。SWI处理程序通过执行下面的指令返回:MOVSPC,R14_svc

这个动作恢复了PC和CPSR并返回到SWI之后的指令。SWI处理程序读取操作码以提取SWI函数编号。2.9异常软件中断指令使用软件中断(SWI)指令可以进入管理模67用户程序服务程序用户模式管理模式程序SWI指令return2.9异常软件中断指令Jump实现操作系统的系统调用11.执行用户程序中的软件中断指令,产生软件中断异常,通常用于系统调用;2.执行异常处理程序,并返回。2用户程序服务程序用户模式管理模式程序SWI指令return268

当ARM7TDMI处理器遇到一条自己和系统内任何协处理器都无法处理的指令时,ARM7TDMI内核执行未定义指令陷阱。软件可使用这一机制通过模拟未定义的协处理器指令来扩展ARM指令集。注:ARM7TDMI处理器完全遵循ARM结构v4T,可以捕获所有分类未被定义的指令位格式。2.9异常未定义的指令当ARM7TDMI处理器遇到一条自己和系692.9异常未定义的指令用户程序服务程序用户模式未定义模式程序未定义指令returnJump解释无法执行的指令,并完成其功能11.执行用户程序时遇到无法执行的指令,产生未定义指令异常;3.异常处理程序执行结束后返回。32.在服务程序中取出无法执行指令,完成其功能;22.9异常未定义的指令用户程序服务程序用户模式未定义模式70

在模拟处理了失败的指令后,陷阱程序执行下面的指令:MOVSPC,R14_und

这个动作恢复了PC和CPSR并返回到未定义指令之后的指令。2.9异常未定义的指令在模拟处理了失败的指令后,陷阱程序执行下面的指令:71异常向量注:表中的I和F表示不对该位有影响,保留原来的值。异常向量注:表中的I和F表示不对该位有影响,保留原来的值。72CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCDIRQ_HandlerFIQ_AddrDCDFIQ_Handler异常向量表:CODE32异常向量表:73CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCDIRQ_HandlerFIQ_AddrDCDFIQ_Handler异常向量表:取出跳转地址后向服务程序跳转CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCDIRQ_HandlerFIQ_AddrDCDFIQ_Handler异常向量表:ResetInit

复位服务程序Undefine

未定义服务程序IRQ_Handler

IRQ中断服务程序FIQ_HandlerFIQ中断服务程序……CODE32异常向量表:取出跳转地址后向服务74

当多个异常同时发生时,一个固定的优先级系统决定它们被处理的顺序:2.9异常异常优先级优先级降低当多个异常同时发生时,一个固定的优先级系75注意:未定义的指令和SWI异常互斥。因为同一条指令不能既是未定义的,又能产生有效的软件中断;当FIQ使能,并且FIQ和数据中止异常同时发生时,ARM7TDMI内核首先进入数据中止处理程序,然后立即跳转到FIQ向量。在FIQ处理结束后返回到数据中止处理程序。数据中止的优先级必须高于FIQ以确保数据转移错误不会被漏过。2.9异常异常优先级注意:2.9异常异常优先级76第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.中断延迟11.复位12.存储器及存储器映射I/O第2章目录1.简介7.内部寄存器772.11复位复位

当nRESET信号被拉低时(一般外部复位引脚电平的变化和芯片的其它复位源会改变这个内核信号),ARM7TDMI处理器放弃正在执行的指令。

在复位后,除PC和CPSR之外的所有寄存器的值都不确定。2.11复位复位当nRESET信号被拉低782.11复位复位

当nRESET信号再次变为高电平时,ARM处理器执行下列操作:1.强制M[4:0]变为b10011(管理模式);2.置位CPSR中的I和F位;3.清零CPSR中的T位;4.强制PC从地址0x00开始对下一条指令进行取指。2.11复位复位当nRESET信号再次变79第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.中断延迟11.复位12.存储器及存储器映射I/O第2章目录1.简介7.内部寄存器802.12存储器及存储器映射I/O简介ARM7TDMI处理器采用冯·诺依曼(VonNeumann)结构,指令和数据共用一条32位数据总线。只有装载、保存和交换指令可访问存储器中的数据。2.12存储器及存储器映射I/O简介AR812.12存储器及存储器映射I/O简介ARM7的规范仅定义了处理器核与存储系统之间的信号及时序(局部总线),而现实的芯片一般在外部总线与处理器核的局部总线之间有一个存储器管理部件将局部总线的信号和时序转换为现实的外部总线信号和时序。因此,外部总线的信号和时序与具体的芯片相关,不是ARM7的标准。具体到某个芯片的外部存储系统的设计需要参考其芯片的数据手册或使用手册等资料。2.12存储器及存储器映射I/O简介AR82ARM7内核存储器控制器存储器2.12存储器及存储器映射I/O简介ARM7定义了局部总线的接口时序各芯片厂商制定了自己的接口时序ARM7局部总线一般在两者之间加入存储器控制器ARM7存储器存储器2.12存储器及存储器映射I/O简介83存储器系统有两种映射机制:小端存储器系统:在小端格式中,数据的高字节存放在高地址中。因此存储器系统字节0连接到数据线7~0。大端存储器系统:在大端格式中,数据的高字节存放在低地址中。因此存储器系统字节0连接到数据线31~24。0x87654321字数据的大小端存储方式2.12存储器及存储器映射I/O存储器格式0x78高地址低地址0x560x340x12大端模式0x12高地址低地址0x340x560x78小端模式存储器系统有两种映射机制:0x87654321字数据的大小端84

一个基于ARM内核的芯片可以只支持大端模式或小端模式,也可以两者都支持。在ARM指令集中不包含任何直接选择大小端的指令,但是一个同时支持大小端模式的ARM芯片可以通过硬件配置(一般使用芯片的引脚来配置)来匹配存储器系统所使用的规则。2.12存储器及存储器映射I/O存储器格式注意:如果实际的存储器格式与芯片的存储器格式不符时,只有以字为单位的数据存取才正确,否则将出现不可预期的结果。一个基于ARM内核的芯片可以只支持大端模式或85ARM结构通常希望所有的存储器访问都合理的对齐。具体来说就是字访问的地址通常是字对齐的,而半字访问使用的地址是半字对齐的。不按这种方式对齐的存储器访问称为非对齐的存储器访问。将一个非字(半字)对齐的地址写入ARM(Thumb)状态的R15寄存器,将引起非对齐的指令取指。在一个非字(半字)对齐的地址读写一个字(半字),将引起非对齐的数据访问:2.12存储器及存储器映射I/O非对齐的存储器访问ARM结构通常希望所有的存储器访问都合理的对86

基于ARM内核的芯片具有许多的外设,这些外设访问的标准方法是使用存储器映射的I/O,为外设的每个寄存器都分配一个地址。通常,从这些地址装载数据用于读入,向这些地址保存数据用于输出。有些地址的装载和保存用于外设的控制功能,而不是输入或输出功能。2.12存储器及存储器映射I/O存储器映射的I/O注意:存储器映射的I/O位置的操作不同于正常的存储器位置的操作。通常,存储器映射的I/O位置没有高速缓存和无缓冲区。基于ARM内核的芯片具有许多的外设,这些外设872.12存储器及存储器映射I/O存储器映射的I/O存储器区memory外设区域地址空间0x000000000xE0000000ARM核操作外设操作存储器存储器控制器2.12存储器及存储器映射I/O存储器映射的I/O存储器882.12存储器及存储器映射I/O使用C语言如何访问存储器和外设<main.c>…uint32IOStatus;IOStatus=IO0PIN;…<LPC2200.h>...#defineIO0PIN(*((volatileunsignedlong*)0xE0028000))...2.12存储器及存储器映射I/O使用C语言如何访问存储器89电脑打铃器硬件框图CPULPC2132键盘输入输出接口2005年11月1

11:00

星期六

下次动作:1-2

11:10液晶显示任务1键盘检测任务4输出控制任务3信息显示任务2键盘处理电脑打铃器硬件框图CPU键输2005年11月111:090用户模式USR系统模式SYS管理模式SVCIRQ模式IRQFIQ模式FIQ中止模式未定义abt/undThumb状态ARM状态任务1按键检测任务2按键处理任务3信息显示任务4输出控制IRQ2按键中断IRQ3秒中断系统调用1关闭IRQ系统调用2打开IRQ系统调用……系统调用n任务切换IRQ1系统节拍FIQ1掉电处理While(1)电脑打铃器程序分布示意图其它代码操作系统内核用户模式系统模式管理模式IRQ模式FIQ模式中止模式Thum91

思考与练习?1.我们已经学习了ARM的模式和状态等知识,请考虑如何将原有的程序移植到ARM上运行,模式和状态要如何选择?思考与练习?1.我们已经学习了ARM的模式和状态等知识,请92ARM7体系结构概述课件932.1ARM简介ARM体系结构ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。它具有经典RISC的特点:寄存器:具有更多的通用寄存器;装载/保存结构:处理器操作只针对寄存器的内容,而不直接对存储器进行操作;流水线:将指令处理过程分为多步,提高效率;指令长度:统一长度的指令域,简化指令译码。2.1ARM简介ARM体系结构ARM处理942.1ARM简介ARM体系结构 ARM体系结构的特点,使其非常适用于嵌入式系统:低功耗:对于电池供电的设备,功耗无疑是重点;高代码密度:小的代码量可以减小存储成本;小面积:芯片内可以集成更多的外设,使系统硬件更紧凑简洁;方便的硬件调试技术:降低开发难度和成本。2.1ARM简介ARM体系结构 ARM体系结构的特点,使952.1ARM简介各ARM体系结构版本ARM体系结构从最初开发到现在有了巨大的改进,并仍在完善和发展。为了清楚的表达每个ARM应用实例所使用的指令集,ARM公司定义了6种主要的ARM指令集体系结构版本,以版本号V1~V6表示。其中V1~V3已经停止使用,常用的ARM7为V4版本。2.1ARM简介各ARM体系结构版本AR962.1ARM简介各ARM体系结构版本——V4

不在为了与以前的版本兼容而支持26位体系结构,并明确了哪些指令会引起未定义指令异常发生,它相对V3版本作了以下的改进:增加半字加载/存储指令;字节和半字的加载和符号扩展指令;具有可以转换到Thumb状态的指令;增加使用用户模式寄存器的系统模式。2.1ARM简介各ARM体系结构版本——V4972.1ARM简介各ARM体系结构版本——V5

在V4版本的基础上,对现在指令的定义进行了必要的修正,对V4版本的体系结构进行了扩展并并增加了指令,具体如下:改进了ARM/Thumb状态之间的切换效率;允许非T变量和T变量一样,使用相同的代码生成技术;增加计数前导零指令和软件断点指令;对乘法指令如何设置标志作了严格的定义。2.1ARM简介各ARM体系结构版本——V5982.1ARM简介ARM处理器核简介ARM公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,而ARM6核以及更早的系列已经很罕见了。目前应用比较广泛的系列是:ARM7ARM9ARM9EARM10Cortex-M3XscaleARM112.1ARM简介ARM处理器核简介ARM992.1ARM简介ARM处理器核简介——ARM7

该系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。该系列处理器提供Thumb16位压缩指令集和EmbededICE软件调试方式,适用于更大规模的SoC设计中。

ARM7系列广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。2.1ARM简介ARM处理器核简介——ARM71002.1ARM简介ARM处理器核简介——ARM9

该系列包括ARM9TDMI、ARM920T、ARM926和带有高速缓存处理器宏单元的ARM940T。除了兼容ARM7系列,而且能够更加灵活的设计。

PHILIPS最近推出的LPC3180就是基于ARM926的微处理器,即将推出的开发套件SmartARM3180支持Linux2.4、WinCE4.2,还有PC104等工控机系列产品。

ARM9系列主要应用于引擎管理、仪器仪表、安全系统和机顶盒等领域。2.1ARM简介ARM处理器核简介——ARM91012.1ARM简介ARM处理器核简介——Cortex-M3

该系列主要针对MCU市场,改进了代码密度,减少了中断延迟,并有更低的功耗,支持Thumb-2指令集。开发套件:KeilRealView(包含ULINK仿真器),支持ARM7、ARM9以及Cortex-M3,ADS将停止支持Cortex-M3,预计市场上第一颗基于Cortex-M3的MCU将于第四季度上市。2.1ARM简介ARM处理器核简介——Cortex-M3102第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.中断延迟11.复位12.存储器及存储器映射I/O第2章目录1.简介7.内部寄存器1032.2ARM7TDMI简介ARM7TDMI支持32位寻址范围,并弥补了ARM6不能在低于5V电源电压下工作的不足。ARM7TDMI的后缀意义为:支持高密度16位的Thumb指令集;支持片上调试;支持64位乘法;支持EmbededICE观察硬件;ARM7TDMI的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI一致;ARM7TDMI-S2.2ARM7TDMI简介ARM7TDM1042.2ARM7TDMI三级流水线正在执行的指令正在译码的指令正在预取的指令内核流水线LDR R0,AddInstrSTR R0,NextInstrSUBR1,R1,#1...ADDR1,R1,#1(1)(2)(4)(3)源程序2.2ARM7TDMI三级流水线正在执行的指令正在译码的105第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.中断延迟11.复位12.存储器及存储器映射I/O第2章目录1.简介7.内部寄存器1062.7内部寄存器R14寄存器与异常发生

异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。2.7内部寄存器R14寄存器与异常发生异107程序计数器R15(PC)

寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。程序计数器R15(PC)寄存器R15为程序计数1082.7内部寄存器读R15的限制

正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。由于ARM指令总是以字为单位,所以R15寄存器的最低两位总是为0。内核流水线

取指

译码

执行MOVADD……源程序PC(R15)PCPC-4PC-82.7内部寄存器读R15的限制正常操作时109MOVR0,PC

ADDSUB…2.7内部寄存器读R15的限制内核流水线取指译码执行SUBADDMOV程序代码PC-8PC-4PC地址注意:执行一条PC读取指令时,读取的值并不是该行指令的地址值。MOVR0,PC2.7内部寄存器读R15的限制内核1100x4000 ADDPC,PC,#40x4004 …0x4008 …0x400C …

思考与练习?

假设CPU正在运行以下的程序,并正在执0x4000处的指令(它的作用是将PC值加4后写入PC),请问指令执行后PC值是什么?正被执行正被译码PC指向指令执行结果PC=PC+40x4000 ADDPC,PC,#4思考1112.7内部寄存器读R15的限制

当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存(将来可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。2.7内部寄存器读R15的限制当使用ST1122.7内部寄存器读R15的限制计算偏移量程序代码:SUB R1,PC,#4 ;R1=下面STR指令的地址STR PC,[R0] ;保存STR指令地址+偏移量LDR R0,[R0] ;然后重装SUB R0,R0,R1 ;计算偏移量2.7内部寄存器读R15的限制计算偏移量程序代码:SUB1132.7内部寄存器写R15的限制

正常操作时,写入R15的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。2.7内部寄存器写R15的限制正常操作时1142.7内部寄存器写R15的限制

由于ARM指令以字为边界,因此写入R15的值最低两位通常为0b00。具体的规则取决于内核结构的版本:在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0xFFFFFFFC相与得到;在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测。2.7内部寄存器写R15的限制由于ARM115程序状态寄存器CPSR

寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在因为异常事件而进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。详细描述参看2.8小节。程序状态寄存器CPSR寄存器CPSR为程序状态1162.7内部寄存器Thumb状态寄存器Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:8个通用寄存器R0~R7;程序计数器(PC);堆栈指针(SP);链接寄存器(LR);有条件访问程序状态寄存器(CPSR)。2.7内部寄存器Thumb状态寄存器Th117Thumb状态各模式下的寄存器CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别注意:括号内为ATPCS中寄存器的命名,可以使用RN汇编伪指令将寄存器定义多个名字。其中ADS1.2的汇编程序直接支持这些名称,但注意a1~a4,v1~v4必须用小写。Thumb状态各模式下的寄存器CPSRCPSR状态寄存器R1118Thumb状态下的通用寄存器CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别R7R6R5R4R3R2R1R0

在汇编语言中寄存器R0~R7为保存数据或地址值的通用寄存器。对于任何处理器模式,它们中的每一个都对应于相同的32位物理寄存

温馨提示

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

评论

0/150

提交评论