嵌入式电子系统电子课件教案-第4讲-arm处理器综述、开发与仿真(2)_第1页
嵌入式电子系统电子课件教案-第4讲-arm处理器综述、开发与仿真(2)_第2页
嵌入式电子系统电子课件教案-第4讲-arm处理器综述、开发与仿真(2)_第3页
嵌入式电子系统电子课件教案-第4讲-arm处理器综述、开发与仿真(2)_第4页
嵌入式电子系统电子课件教案-第4讲-arm处理器综述、开发与仿真(2)_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

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

文档简介

1,ARM处理器综述、开发及仿真(二),嵌入式电子系统,学术沙龙内容提要,1.本次课目标2.ARM内核分类3.ARM程序设计基础4.RealView MDK简介5.LPC2000系列ARM芯片GPIO简介6.RealView MDK开发流程7.其他常见ARM开发环境及工具8.小结,2,1.本次课目标,了解ARM内核分类、ARM开发流程及开发环境基础知识。,3,学术沙龙内容提要,1.本次课目标2.ARM内核分类3.ARM程序设计基础4.RealView MDK简介5.LPC2000系列ARM芯片GPIO简介6.RealView MDK开发流程7.其他常见ARM开发环境及工具8.小结,4,2. ARM内核分类,2.1 ARM内核的发展2.2 ARM72.3 ARM92.4 ARM102.5 ARM11,5,2.1 ARM内核的发展,6,性能,ARM处理器的性能及工作速度发展概况,7,2.2 ARM7,ARM7处理器核采用了3级流水线结构,指令执行分为取指、译码和执行等3个阶段。,8,ARM7TDMI,ARM7TDMI -S,ARM7EJ,ARM720T,ARM7核ARMv4TThumb指令集嵌入式ICE-RTETM7接口,ARM7核ARMv4TThumb指令集嵌入式ICE-RTETM7接口,ARM7核ARMv5TEJThumb指令集嵌入式ICE-RTETM9接口Jazelle扩充DSP扩充,ARM7核ARMv4TThumb指令集嵌入式ICE-RTETM7接口MMU8KB CacheAHB接口,T 具有16位压缩指令集Thumb。在ARMv4中采用Thumb v1版,在ARMv5中采用Thumb v2版;D 支持在片上调试(On Chip Debug);M 增强型乘法器,可以执行32bit32bit得到64bit乘积的乘法运算和32bit32bit+64bit得到64bit结果的累加乘运算;S 可综合的(Synthesizable)核;,10,I 嵌入式ICE(In Circuit Emulating)硬件逻辑,支持嵌入式软件调试时的软硬件断点的设置;E 增强型DSP指令。在这类处理器的指令集中,扩展了典型的数字信号处理所需的DSP指令;J Jazeller功能,增强了执行Java代码的功能。,11,片上调试,片上调试,又称为OCD,是CPU芯片提供的程序调试功能,该方式的主要优点是不占用目标机的资源,调试环境和最终程序运行环境基本一致,支持软硬件断点和跟踪。目前常用的OCD有BDM(Background Debugging Mode)方式,JTAG(Joint Tese Action Group)方式和OnCE(On Chip Emuiation,其实质是BDM和JTAG的一种融合方式),其中JTAG是主流的OCD方式,ARM、MIPS和Power PC等嵌入式处理器都采用不同种类的增强JTAG方式。,12,ARM720T是将ARM7TDMI与8KB混合数据指令Cache、写缓冲器和存储器管理单元MMU(Memory Management Unit)集成在一个单片上的32位通用处理器。,13,ARM7T和ARM7E Family,2.3 ARM9,ARM9内核采用了五级流水线、提供1.1MIPS/ MHz的哈佛结构、全性能的MMU单元、可配置的数据Cache和可分立和指令和数据高速AHB接口。,16,17,五级流水线,ARM920T处理器使用流水线来增加处理器指令流的速度。这样可以使几个操作同时进行,并使处理和存储器系统连续操作,能提供1.1MIPS/MHz的指令执行速度。流水线使用5个阶段,因此指令分5个阶段执行:取址译码执行存储写。,18,19,ARM9 Family,2.4ARM10,ARM10处理器核采用哈佛结构和六级流水线,处理器核内部数据总线为64位,以及双64位的AHB总线接口、并行的Load/Store单元,极大地提高了ARM10数据处理能力和工作速度。ARM10的指令执行速度为1.25MPIS/MHz。,21,ARM10 Family,22,2.5ARM11,ARM11系列采用8级流水线操作,个别处理器采用9级流水线(例如ARM1156T2(F)-S),Load-Store单元和算术运算单元分别具有独立的流水线,并具有转移预测和前向数据通道,可以有效地提高流水线操作的效率。,23,ARM11支持多处理器系统,个别产品还集成了浮点处理器(以后缀F表示)。 ARM11系列包括ARM1136J(F)-S、ARM1156T2(F)-S和ARM1176JZ(F)-S。后缀T2表示Thumb-2指令集。,24,ARM11 Family,25,学术沙龙内容提要,1.本次课目标2. ARM内核分类3. ARM程序设计基础4.RealView MDK简介5.LPC2000系列ARM芯片GPIO简介6.RealView MDK开发流程7. 其他常见ARM开发环境及工具8.小结,26,3. ARM程序设计基础,ARM体系结构支持C/C+及其与汇编语言的混合编程。初始化部分用汇编语言完成;主要编程任务一般用C/C+完成。程序执行时首先完成初始化过程再跳转到C/C+程序代码中两者一般没有参数的传递,也没有频繁的相互调用,27,3.1系统的初始化过程3.2定义程序入口点3.3设置异常向量3.4初始化存储器系统3.5初始化堆栈指针寄存器,28,3.6初始化临界IO设备3.7初始化C代码的运行环境3.8改变处理器的运行模式和状态3.9使能中断3.10进入C代码运行,29,3.1系统的初始化过程,基于ARM微处理器的系统一般比较复杂,多数硬件模块是可以配置的(Configurable),需要明确设置为特定的工作状态。在用户主程序运行之前,需要一段专门的代码来完成对系统的初始化工作,这段代码一般称为Bootloader。,30,初始化代码直接对ARM微处理器内核及硬件控制器编程,多采用汇编语言,初始化代码一般包含如下典型任务:定义程序入口点设置异常向量,31,初始化存储器系统初始化堆栈指针寄存器初始化临界IO设备初始化C代码的运行环境改变处理器的运行模式和状态使能中断进入C代码运行,32,3.2定义程序入口点,初始化代码必须定义整个程序的入口点(Entry Point)采用汇编伪指令Entry指定,33,3.3设置异常向量,ARM微处理器架构要求异常向量表必须位于从0X0地址开始的连续32(84)个字节的空间内。,34,异常向量表,35,注:表中的I和F表示不对该位有影响,保留原来的值,当一个异常发生时,ARM微处理器强制把PC指针置为异常向量表中相应的位置。异常向量表中每个异常只占用一个字的存储空间,刚好放一条ARM指令,这条指令通常是跳转指令,使程序从异常向量表中跳转到真正的异常处理程序。,36,AREA Init, CODE, READONLYENTRYB Reset_HandlerB Undef_HandlerB SWI_HandlerB PreAbort_HandlerB DataAbort_HandlerB .B IRQ_HandlerB FIQ_HandlerReset_Handler,37,3.4初始化存储器系统,初始化存储器系统主要包括对系统存储控制器的初始化MMU初始化ARM微处理器的理论寻址能力位4GB,一般需要外接大容量存储器,需要采用专门的存储控制器来控制其读写操作。,38,存储器控制器不是ARM微处理器架构的一部分,不同的ARM芯片其设计各不相同,初始化代码也存在差异。但一般都包含两个方面:存储器类型时序的配置基于ARM的微处理器系统常采用的存储器FlashSRAMDRAM,39,Flash、SRAM均为静态存储器,可以共用存储器控制器端口;DRAM需要动态刷新、地址复用等,需要专门的存储器控制器端口。(某些ARM芯片内部没有DRAM控制逻辑,不能直接与DRAM接口,如AT9140800系列);一般采用片内特殊功能寄存器控制。,40,存储器的地址分配地址分配:将物理存储器定位在4GB寻址空间的哪个具体位置;ARM微处理器系统采用两种方式来完成地址分配:固定方式,如S3C2410,相对简单;重映射(Remap),物理存储器的地址不固定,如S3C4510B,较复杂。,41,重映射(Remap),系统复位后,PC指针初始化为0x0,因此要求Flash(或其他类型ROM)起始地址为0x0,但由于Flash的访问速度大大低于RAM,每次产生异常后,都要从Flash的异常向量表跳转到响应的处理程序,会影响异常的响应速度,因此,系统采用重映射方法,在系统完成初始化后,将RAM地址置为0x0,而将ROM置为其他地址。,42,3.5初始化堆栈指针寄存器,由于ARM微处理器支持7种处理器模式,每种模式下的堆栈指针寄存器都是独立的(System和User模式使用同一个SP),根据系统使用的中断和异常的情况,需要初始化需要的堆栈指针寄存器SP。由于上电复位后,系统进入管理模式,因此管理模式下的SP必须初始化。,43,44,ARM状态各模式下可以访问的寄存器,sp_IRQ, sp_FIQ, sp_ABT, sp_UND,根据系统需要进行初始化;sp_USR可以在进入用户模式后,准备开始执行应用程序时对其初始化。,45,初始化即给SP寄存器定义一个堆栈地址方法:改变CPSR的状态位,使处理器进入不同的运行模式,然后给SP赋值;sp_USR最后初始化,因为进入用户模式后,不能通过改变CPSR的状态位进入其他模式。,46,47,条件代码标志,保留,控制位,溢出标志,进位或借位扩展,零,负或小于,IRQ禁止,FIQ禁止,状态位,模式位,N,Z,C,V,I,T,F,48,CPSR模式位设置表,MODEMASK EQU 0x1FSVCMODE EQU 0x13IRQMODE EQU 0x12MRS R0,CPSR ;将CPSR读到R0中BIC R0,R0,#MODEMASK;将CPSR中的模式位清零ORR R1,R0,#SVCMODE ;设置R0到管理模式MSR CPSR_cxsf,R1 ;切换到管理模式LDR SP,=SVCStack;设置该模式下的堆栈,49,3.6初始化临界IO设备,临界(Critical)IO设备是指那些在使能中断前必须进行初始化的设备。如果不对其进行初始化,它们可能在中断使能后产生一些没有意义的中断请求。,50,3.7初始化C代码的运行环境,程序代码通过编译、链接后生成可执行映像文件映像文件通常包括三部分:RO、RW、ZIRO:包含程序代码和只读数据RW:包含定义并初始化的全局变量ZI:包含定义但未初始化的全局变量,51,可执行映像文件最初总是放在Flash或其他类型的ROM中RO部分既可以在Flash中运行,也可以在高速RAM中运行;RW和ZI部分必须复制到RAM中。初始化C代码的运行环境,就是将以上部分从Flash中复制到RAM的过程。,52,3.8改变处理器的运行模式和状态,ARM微处理器上电复位后,默认模式为管理模式(Supervisor Mode),而在初始化代码中需要切换到其他模式进行诸如堆栈设置之类的操作。,53,系统初始化过程中处理器模式的变化如下:,54,管理模式,多种特权模式切换,应用程序运行模式,由于ARM微处理器复位后总是处于ARM状态,如果应用程序为Thumb指令,必须将微处理器切换到Thumb状态。,55,3.9使能中断,如果系统需要使用中断,初始化代码应该使能中断。可通过清除CPSR中的中断禁止位来完成。,56,3.10进入C代码运行,系统初始化后,就可以进入C代码运行。方法一:IMPORT C_Entry;定义一个外部标号,一般不用mainB C_Entry;跳转到C代码另一种方法IMPORT _mainB _main,57,_main是编译器提供的一个函数,完成库函数的初始化和对C代码运行环境的初始化,最后自动跳转到main()函数执行,此时,应用程序的主函数名必须是main()。可以根据需要选择两种之一,如果想让系统自动完成初始化过程,可以使用main()函数,如果所有初始化都由自己编写程序完成,可以自定义主函数名。,58,学术沙龙内容提要,1.本次课目标2. ARM内核分类3. ARM程序设计基础4.RealView MDK简介5.LPC2000系列ARM芯片GPIO简介6.RealView MDK开发流程7. 其他常见ARM开发环境及工具8.小结,59,4 RealView MDK简介,4.1 RealView MDK概述4.2 RealView MDK特性4.3产品模块介绍 4.4ULINK2仿真器,60,注意:进行ARM开发的Keil (RealView MDK)与进行单片机开发的Keil(KeilC)有不同的安装程序。,61,4.1 RealView MDK概述,RealView MDK开发套件源自德国Keil公司,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。RealView MDK集成了业内最领先的技术,包括Vision3集成开发环境与 RealView编译器。支持ARM7、ARM9和最新的Cortex-M3处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能。,62,4.2 RealView MDK特性,启动代码生成向导,自动引导 启动代码和系统硬件结合紧密,必须用汇编语言编写,因而成为许多工程师难以跨越的门槛。RealView MDK的Vision3工具可以自动生成完善的启动代码,并提供图形化的窗口,可以轻松修改。能大大节省时间,提高开发效率。,63,软件模拟器,完全脱离硬件的软件开发过程RealView MDK的设备模拟器可以仿真整个目标硬件,包括快速指令集仿真、外部信号和I/O仿真、中断过程仿真、片内所有外围设备仿真等。开发工程师在无硬件的情况下即可开始软件开发和调试,使软硬件开发同步进行,大大缩短开发周期。而一般的ARM开发工具仅提供指令集模拟器,只能支持ARM内核模拟调试。,64,性能分析器看得更远、看得更细、看得更清 RealView MDK的性能分析器用于辅助查看代码覆盖情况,程序运行时间,函数调用次数等高端控制功能,指导进行代码优化。通常这些功能只有价值数千美元的昂贵的Trace工具才能提供。,65,Cortex-M3支持RealView MDK支持的Cortex-M3核是ARM公司最新推出的针对微控制器应用的内核,它提供业界领先的高性能和低成本的解决方案,未来几年将成为嵌入式系统应用的热点和主流。,66,业界优秀的ARM编译器RealView 编译器,代码更小,性能更高RealView MDK的RealView编译器与ADS 1.2比较:代码密度:比ADS 1.2编译的代码尺寸小10%;代码性能:比ADS 1.2编译的代码性能高20%。,67,配备ULINK2仿真器+ Flash编程模块,轻松实现Flash烧写RealView MDK无需寻求第三方编程软件与硬件支持,通过配套的ULINK2仿真器与Flash编程工具,轻松实现CPU片内Flash、外扩Flash烧写,并支持用户自行添加Flash编程算法;而且能支持Flash整片删除、扇区删除、编程前自动删除以及编程后自动校验等功能,轻松方便。,68,高性价比RealView MDK保留了RealView MDK国际版的所有卓越性能,而产品价格和国内普通开发工具的价格相差无几。 更贴身的服务RealView MDK用户将享受到专业的本地化的技术支持和服务,包括电话、Email、论坛、中文技术文档等,这将为国内工程师们开发出更有竞争力的产品提供更多的助力。,69,4.3产品模块介绍,Vision3 IDEVision IDE在全球拥有庞大的用户群,超过10万开发工程师在使用Keil开发工具。不管以前是用8位、16位MCU,还是现在改用ARM 32位处理器,Vision IDE简单易用,容易立马上手。,70,71,Vision3 IDE主要特性: 功能强大的源代码编辑器; 可根据开发工具配置的设备数据库; 用于创建和维护工程的工程管理器; 集汇编、编译和链接过程于一体的编译工具; 用于设置开发工具配置的对话框;,72,真正集成高速CPU及片上外设模拟器的源码级调试器; 高级GDI接口,可用于目标硬件的软件调试和ULINK2仿真器的连接; 用于下载应用程序到Flash ROM中的Flash编程器; 完善的开发工具手册、设备数据手册和用户向导。,73,启动代码配置向导 Vision3 IDE 的启动代码配置向导将各个所需配置的功能模块以对话框方式展示,附加的提示说明,可以快速轻松地做出选择,生成完善的启动代码,免除手工写几百行汇编程序的痛苦。,74,75,Vision3设备模拟器 Vision3设备模拟器的功能强大,能模拟整个MCU的行为。在没有硬件或对目标MCU没有更深的了解的情况下,仍然可以立即开始开发软件。 高效指令集仿真 中断仿真 片内外围设备仿真 ADC,DAC, Timers UART,CAN,I2C 外部信号和 I/O仿真,76,性能分析器 性能分析器可给所有的MCU实现如程序运行时间统计、被调用次数统计、代码覆盖率统计等高端功能,而这些功能对于快速定位死区代码,帮助优化分析等起了关键的作用。,77,78,RealView编译器(RVCT) RealView MDK集成的RealView编译器(跟RVDS使用一样的编译器),是业界最优秀的编译器,它能使代码容量更小、执行效率更高;使应用程序运行更快、系统成本更低。,79,80,MicroLib 为进一步改进基于ARM处理器的应用代码密度,RealView MDK采用了新型microlib C库(用于C的ISO标准运行时库的一个子集),并将其代码映像降低最小以满足嵌入式系统应用的需求。Microlib C库可将运行时库代码大大降低。,81,82,4.4ULINK2仿真器,ULINK2是ARM公司最新推出的配套RealView MDK使用的仿真器,是ULink仿真器的升级版本。ULINK2不仅具有ULINK仿真器的所有功能,还增加了串行调试(SWD)支持,返回时钟支持和实时代理等功能。开发工程师通过结合使用RealView MDK的调试器和ULINK2,可以方便的在目标硬件上进行片上调试(使用on-chip JTAG,SWD和OCDS)、Flash编程,83,84,ULINK2 新特点 标准Windows USB驱动支持ULINK2即插即用 ; 支持基于 ARM Cortex-M3的串行调试 ; 支持程序运行期间的存储器读写、终端仿真和串行调试输出 ; 支持10-pin 连接线 (也支持20-pin 连接线)。,85,ULINK2主要功能: USB通讯接口高速下载用户代码 存储区域/寄存器查看 快速单步程序运行 多种程序断点 片内Flash编程,86,ULINK2技术参数,87,ULINK2支持的处理器,88,ARM7/ARM9/Cortex-M3,学术沙龙内容提要,1.本次课目标2. ARM内核分类3. ARM程序设计基础4.RealView MDK简介5.LPC2000系列ARM芯片GPIO简介6.RealView MDK开发流程7. 其他常见ARM开发环境及工具8.小结,89,5.LPC2000系列ARM芯片GPIO简介,5.1 GPIO(通用I/O口)简介5.2 IO口连接模块简介5.3 GPIO基本控制寄存器5.4Proteus原理图5.5如何控制LED?5.6如何编程?,90,5.1 GPIO(通用I/O口)简介,LPC2000有多个通用I/O口,分别为P031 : 0 和P131:16。由于IO口和其他功能复用,需要进行相关的管脚连接模块(PINSEL0、PINSEL1、PINSEL2)选择连接GPIO,然后通过IODIR进行输入/输出属性设置后才能操作。当管脚选择GPIO功能时,有三个寄存器用于控制GPIO的使用,IOSET、IOCLR和IOPIN。,91,5.2 IO口连接模块简介,有些管口除了作为普通IO口以外,还具有复用功能。比如串行口功能、PWM功能等等。要使用这些功能必须正确的设置IO连接模块PINSEL0、PINSEL1、PINSEL2。,92,PINSEL0、PINSEL1、PINSEL2选择引脚功能PINSEL0寄存器(位0 位31),分别对应于P0.0引脚 P0.15引脚PINSEL1寄存器(位0 位31),分别对应于P0.16引脚 P0.31引脚每两位对应一个引脚,因为一个引脚有4种功能,所以要两位对应一个引脚。,93,94,PINSEL0中所有的位与PINSEL1其它位的复位值均为00,它们均默认为首选功能,即就是通常的GPIO。所有I/O口在复位后均默认为输入状态,IODIR寄存器中的方向控制位只有在引脚选择为GPIO功能时才有效。对于其它功能,方向是自动控制的。,95,5.3 GPIO基本控制寄存器,LPC2100系列的ARM用四个寄存器控制IO口。引脚值寄存器 IO0PIN和IO1PIN方向寄存器IO0DIR和IO1DIR输出置位寄存器 IO0SET和IO1SET输出清零寄存器IO0CLR和IO1CLR,96,引脚值寄存器(输入寄存器)IO0PIN(32位)对应P0.0P0.31(32个IO口)的引脚状态。无论IO口处于输入、输出或特殊功能状态,IO0PIN都能读回IO口引脚上的电平。 IO1PIN31:0:存储P1.31P1.0的当前值(for read),97,方向寄存器IO0DIR(IO1DIR)32位设置IO口方向的寄存器对应P0.0P0.31(32个IO口) 0:输入 1:输出,98,输出置位寄存器(输出1) IO0SET(IO1SET)32位输出状态时,置1可输出高电平。置0无效。对应P0.0P0.31(32个IO口),99,输出清零寄存器(输出0) IO0CLR(IO1CLR) 32位输出状态时,置1可输出低电平。置0无效。对应P0.0P0.31(32个IO口),100,5.4Proteus原理图,101,5.5如何控制LED?,102,PINSEL0 = 0;/*设置引脚为GPIO */IO0DIR = 0x00000001;/*将P0.0设置为输出 */IO0SET = 0x00000001;/*将P0.0置1,也就是让led灭 */IO0CLR = 0x00000001; /*将P0.0清0,也就是让led亮 */,103,5.6如何编程,int main(void) PINSEL0 = 0;/*设置引脚为GPIO */ IO0DIR = 0x00000001;/*将P0.0设置为输出 */ IO0SET = 0x00000001;/*将P0.0置1,也就是让led灭 */ while (1) IO0CLR = 0x00000001;delay(); IO0SET = 0x00000001;delay(); ,104,void delay (void) unsigned volatile long i,j; for(i=0;i60000;i+) for(j=0;j5;j+) ;,105,学术沙龙内容提要,1.本次课目标2. ARM内核分类3. ARM程序设计基础4.RealView MDK简介5.LPC2000系列ARM芯片GPIO简介6.RealView MDK开发流程7. 其他常见ARM开发环境及工具8.小结,106,6 RealView MDK开发流程,Step1. 新建工程Step2. 选择ARM芯片型号Step3.为工程添加Startup.s文件Step4. 新建main函数文件Step5.添加C文件到工程Step6.设置工程选项Step7.编译生成Hex文件Step8.修改生成的Hex文件Step9.验证Proteus的仿真效果,107,Step1. 新建工程,108,Step2. 选择ARM芯片型号,109,Step3.为工程添加Startup.s文件,110,Step4. 新建main函数文件,111,Step5.添加C文件到工程,112,Step6.设置工程选项,113,Step7.编译生成Hex文件,114,Step8.修改生成的Hex文件,115,Step9.验证Proteus的仿真效果,116,学术沙龙内容提要,1.本次课目标2. ARM内核分类3. ARM程序设计基础4.RealView MDK简介5.LPC2000系列ARM芯片GPIO简介6.RealView MDK开发流程7. 其他常见ARM开发环境及工具8.小结,117,7. 其他常见ARM开发环境及工具,7.1ADS1.27.2 ARM REALVIEW DEVELOPER SUITE7.3 IAR EWARM7.4 WINARM 7.5 H-JTAG调试代理7.6 J-LINK7.7 U-LINK,118,7.1ADS1.2,ADS是ARM公司的集成开发环境软件,他的功能非常强大。他的前身是SDT,SDT是ARM公司几年前的开发环境软件,目前SDT早已经不再升级。ADS包括了四个模块分别是:SIMULATOR;C 编译器;实时调试器;应用函数库。,119,ADS1.2需要硬件支持才能发挥强大功能。目前支持的硬件调试器有Multi-ICE以及兼容Multi-ICE的调试工具如FFT-ICE。简易下载电缆不能支持ADS1.2。,120,7.2 ARM REALVIEW DEVELOPER SUITE,RealView Developer Suite工具是ARM公司是推出的新一代ARM集成开发工具。支持所有ARM 系列核,并与众多第三方实时操作系统及工具商合作简化开发流程。,121,7.3 IAR EWARM,Embe

温馨提示

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

评论

0/150

提交评论