嵌入式系统基础教程第04讲第3章嵌入式调试技术课件_第1页
嵌入式系统基础教程第04讲第3章嵌入式调试技术课件_第2页
嵌入式系统基础教程第04讲第3章嵌入式调试技术课件_第3页
嵌入式系统基础教程第04讲第3章嵌入式调试技术课件_第4页
嵌入式系统基础教程第04讲第3章嵌入式调试技术课件_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式系统原理与开发第04讲南京大学计算机系 俞建新主讲嵌入式系统原理与开发第04讲第3章 嵌入式微处理器技术基础本章主要介绍以下内容:嵌入式处理器的调试技术边界扫描测试技术JTAG第3章 嵌入式微处理器技术基础本章主要介绍以下内容:3.3 嵌入式系统调试技术指令集模拟器ROM仿真器实时在线仿真片上调试器与背景调试模式基于Angle的调试方案边界扫描测试技术和JTAG接口概述Nexus调试标准半主机调试方式3.3 嵌入式系统调试技术指令集模拟器基于Angle的调试方嵌入式系统调试技术概貌嵌入式计算机调试基本结构主机目标机结构主机常常是PC平台原因:运算能力相对较弱存储能力和显示能力较小数据吞吐

2、率较小很难在目标程序运行的计算设备上直接进行硬件软件调试。嵌入式系统调试技术概貌嵌入式计算机调试基本结构嵌入式系统调试技术概貌8051单片机寻址范围:0000H FFFFH 容量64KB地址长度:16位片内数据存储器为8位地址,所以最大可寻址的范围为256个单元地址DPTR是16位地址指针,寻址范围就可达到64KBkeil C51嵌入式系统调试技术概貌8051单片机Keil C51的系统要求Keil C51的系统要求主机和目标机之间调试信道主机往往和目标机的体系结构不同。因此,需要有通信转换器对调试信息进行转换。主机和目标机之间调试信道主机往往和目标机的体系结构不同。因此SDT(Softwar

3、e Development Kit ,软件开发工具包)介绍ARM SDT包括一套完整的应用软件开发工具 *armcc ARM的C编译器,具有优化功能,兼容于ANSI C(American National Standards Institute,美国国家标准学会)。 *tcc THUMB的C编译器,同样具有优化功能,兼容于ANSI C。 *armasm 支持ARM和THUMB的汇编器。 *armlink ARM连接器,连接一个和多个目标文件,最终生成ELF( executable and linkable format )格式的可执行映像文件 *armsd ARM和THUMB的符号调试器。SD

4、T(Software Development Kit ,Keil简介Keil简介调试程序界面Keil调试界面调试程序界面Keil调试界面Keil生成的hex文件(STC-ISP打开)Hex文件和Elf文件都是程序汇编的产物。Keil生成的hex文件(STC-ISP打开)Hex文件和E3.3.1 指令集模拟器指令集模拟器ISS,Instruction Set Simulator在一台计算机上模拟另外一台计算机上目标程序(机器指令)运行过程的软件工具有时也叫做软仿真器嵌入式系统开发的不可或缺工具 3.3.1 指令集模拟器指令集模拟器指令集模拟器的结构指令集模拟器是一个纯软件系统内部有一个反映目标处

5、理器硬件的数据结构以时序状态机的方式工作可以根据目标机指令集定义执行目标指令按照实现方法的不同指令集模拟器分为解释型编译型指令集模拟器的结构指令集模拟器是一个纯软件系统解释型和编译型编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,翻译只做了一次,运行时不需要翻译,像C/C+、Pascal/Object Pascal(Delphi)等都是编译语言。解释则不同,解释性语言的程序不需要编译,解释性语言每执行一次就要翻译一次,效率比较低,解释是一句一句的翻译,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATL

6、AB 等等。解释型和编译型编译型语言写的程序执行之前,需要一个专门的编译指令集模拟器的运行指令集模拟器的操作界面与IDE (Integrated Development,集成开发环境)类似模仿目标机的取指、译码和执行操作将中间执行结果或者最终执行结果存入目标机映像数据结构调试人员可以观察目标机映像寄存器或者映像存储器的单元,了解目标代码的执行结果调试程序界面指令集模拟器的运行指令集模拟器的操作界面与IDE (Inte指令集模拟器主要用途指令集模拟器主要用在以下几种场合:没有目标机开发板有目标机开发板,但使用目标机开发板成本较高调试的程序模块不需要在实际开发板上执行,例如学习ARM汇编语言程序模

7、块代码的先行调试,以加快调试速度指令集模拟器主要用途指令集模拟器主要用在以下几种场合:流行的ARM指令集模拟器有两种比较流行的指令集模拟器:ARMulatorSkyEye还有一些研究中的ARM指令集模拟器流行的ARM指令集模拟器有两种比较流行的指令集模拟器:ARM公司推出的ARMulatorARMulator是业界著名的指令集仿真器运行在PC平台上ARM体系结构的指令集模拟器集成在SDT 2.51(软件开发工具包)和ADS 1.2( ARM Developer Suite ,全套的实时开发软件工具)上的插件由四个部分组成:处理器核模型、存储器接口、处理器接口、操作系统接口。ARM公司推出的AR

8、MulatorARMulator是业界著指令模拟精度的级别指令模拟精度有三个级别指令级周期级时序(节拍)级ARMulator完全实现了指令级和周期级模拟精度,但是没有完全实现时序级精度。指令模拟精度的级别指令模拟精度有三个级别指令集模拟器ARMulator对ARM程序运行进行指令周期数统计的结果快照指令集模拟器ARMulator对ARM程序运行进行指令周期Armulator的指令周期统计结果说明Armulator的指令周期统计结果说明SkyEye一个ARM体系结构的嵌入式仿真和集成开发环境国内开放源码的自由软件项目运行环境:Linux平台和Windows的Cygwin( cygwin是一个在w

9、indows平台上运行的Unix模拟环境)能够仿真的CPU包括:不带MMU( Memory Management Unit,内存管理单元)的Atmel 91x40带MMU的ARM720T等基于ARM7TDMI的内核SkyEye还能够模拟其它一些硬件外设,如串口、网络芯片、内存、时钟等SkyEye一个ARM体系结构的嵌入式仿真和集成开发环境指令集模拟器缺点部分集成开发环境提供了指令集模拟器,可方便用户在 PC 机上完成一部分简单的调试工作,但是由于指令集模拟器与真实的硬件环境相差很大,因此即使用户使用指令集模拟器调试通过的程序也有可能无法在真实的硬件环境下运行,用户最终必须在硬件平台上完成整个应

10、用的开发。指令集模拟器缺点部分集成开发环境提供了指令集模拟器,可方便用3.3.2 ROM仿真器嵌入式系统的程序存储器为ROM(只读存储器)时,如果调试需要修改代码、设置断点及更新程序代码,就需要进行离线编程。离线编程是一个费时间的工作,用RAM(随机存取存储器)替代ROM可以解决这个问题ROM(只读存储器)仿真器用RAM(随机存储器)以及附加电路制成的替代ROM进行离线编程的工具MCS-51单片机研发过程中常常使用ROM仿真工具3.3.2 ROM仿真器嵌入式系统的程序存储器为ROM(只ROM仿真系统组成和结构框图ROM仿真系统组成和结构框图ROM仿真器原理仿真器由两组RAM区,RAM1和RAM

11、2区,分别被目标机和仿真器分别操作,隔离电路的动作是由仿真器CUP控制,仿真器CUP是听命于上位机指令。某一时刻仿真器CPU对应于RAM1区,目标机CUP对应于RAM2区,此时上位机可以对RAM1区的数据进行更改,而RAM2区作为目标机的ROM被使用;比如说两个RAM起始数据都为P3=0 xFE,RAM1被上位机指令修改为P3=0 xFF,此时的RAM2仍然被目标机CUP控制,P3口输出为0 xFE;ROM仿真器原理仿真器由两组RAM区,RAM1和RAM2区,ROM仿真器原理当上位机发出切换指令,仿真器接受此指令并且进行隔离切换,此时的仿真器CUP对应于RAM2(P3=0 xFE),目标机对应

12、于RAM1(P3=0 xFF),所以目标机输出P3=0 xFF,而ROM2将会继续做修改操作,直到下次切换信号到来。ROM仿真器原理当上位机发出切换指令,仿真器接受此指令并且进ROM仿真器原理为了避免目标机在取指或参数期间产生切换,采用和 来进行控制。ROM仿真器原理为了避免目标机在取指或参数期间产生切换,采用ROM仿真器照片支持各种51系列芯片的JY-E2300仿真器照片ROM仿真器照片支持各种51系列芯片的JY-E2300仿真器3.3.3 实时在线仿真实时在线仿真ICE,In-Circuit Emulator目前最为有效的调试嵌入式系统的手段通过ICE的实际执行,开发者可以排除人们难以发现

13、的隐藏在设计方案中的逻辑错误。ICE的另外一个主要功能是在应用系统中仿真微控制器的实际执行优点是功能强大,软硬件均可以做到完全实时在线调试;缺点是价格昂贵。3.3.3 实时在线仿真实时在线仿真在线仿真器在线仿真器使用仿真头完全取代目标板上的 CPU ,可以完全仿真 ARM 芯片的行为,提供更加深入的调试功能。但这类仿真器为了能够全速仿真时钟速度高于 100MHz 的处理器,通常必须采用极其复杂的设计和工艺,因而其价格比较昂贵。在线仿真器通常用在 ARM 的硬件开发中,在软件的开发中较少使用,其价格高昂也是在线仿真器难以普及的因素。在线仿真器在线仿真器使用仿真头完全取代目标板上的 CPU ,嵌入

14、式系统基础教程第04讲第3章嵌入式调试技术课件3.3.4 片上调试技术片上调试技术OCD,On-Chip Debugging嵌入式调试技术中运用最广泛的一种片上调试是在CPU的内部嵌入额外的控制模块,即片上调试器;使得CPU的工作模式分为正常模式和调试模式。3.3.4 片上调试技术片上调试技术常用的片上调试技术目前常用的片上调试技术主要有三种:背景调试模式BDM,Background Debug ModeJTAGIEEE 1149.1NexusIEEE-5001 ISTO常用的片上调试技术目前常用的片上调试技术主要有三种:背景调试模式背景调试模式Motorola(摩托罗拉)公司专有的片上调试器

15、。Motorola公司是第一个把片上调试器集成在处理器内核中的嵌入式微处理器厂商。BDM首先在68300系列处理器上实现现在在其他微控制器上得到应用背景调试模式背景调试模式BDM与ICE的区别传统ICE调试时,使用ICE中的CPU来取代目标板中的CPU,目标板和ICE之间使用多芯扁平电缆连接。而ICE在使用时一般还需要与主机(一般是PC)连接。(ICE调试是可以完全取代目标板的CPU)。在BDM调试方式下嵌入式处理器被停机,各种调试命令可以被发送到处理器中访问内存和寄存器。因此,满足BDM调试的微处理器内部已经包含了用于调试的微码(不是所有的芯片都可以用BDM调试的),调试时仿真器软件和目标板

16、上CPU的调试微码通信,目标板上的CPU无需取出。(不完全取代)。BDM与ICE的区别传统ICE调试时,使用ICE中的CPU来BDM的烧写及在线调试BDM调试器内部有一个8位的MC9HC08JB16单片机,该单片机有USB接口,可与PC机信息交互。HC08单片机和目标单片机间仅使用一根I/O线通信,这根相连的信号线名为BKGD。HC08单片机将BKGD置为输出,以串行发送命令,发送完成后转为输入,以接收信息。目标单片机收到命令后转为输出,根据调试器发来的命令回送信息,然后立即转入接收态。BDM工具以此方式实现目标单片机的在线调试、内部闪存的烧写等功能BDM的烧写及在线调试BDM调试器内部有一个

17、8位的MC9HCBDM接口虽然使用的是6引脚接插件,实际上有用引脚只有4个。其中BKGD连接到目标处理器的BKGD引脚,RESET连接到目标处理器的RESET引脚,GND是目标板的地信号,而VDD信号是来自目标板的电源信号。BDM接口虽然使用的是6引脚接插件,实际上有用引脚只有4个。BDM调试器与主机和目标开发板之间的连接 BDM调试器与主机和目标开发板之间的连接 3.3.5 基于Angel的调试方案Angel是ARM公司的调试监控程序也称为调试代理由多个程序部件组成与传统调试监控程序相类似驻留在目标机上Angel接收主机上发送过来的调试命令,执行指定的调试操作,并将调试结果反馈回主机。适用于

18、各种ARM硬件平台。3.3.5 基于Angel的调试方案Angel是ARM公司的调试监控程序/驻留监控软件驻留监控软件( Resident Monitors )是一段运行在目标板上的程序,集成开发环境中的调试软件通过以太网口、并行端口、串行端口等通讯端口与驻留监控软件进行交互,由调试软件发布命令通知驻留监控软件控制程序的执行、读写存储器、读写寄存器、设置断点等。 驻留监控软件是一种比较低廉有效的调试方式,不需要任何其他的硬件调试和仿真设备。调试监控程序/驻留监控软件驻留监控软件( Resident 调试监控程序/驻留监控软件ARM 公司的 Angel 就是该类软件,大部分嵌入式实时操作系统也是

19、采用该类软件进行调试,不同的是在嵌入式实时操作系统中,驻留监控软件是作为操作系统的一个任务存在的。 驻留监控软件的不便之处在于它对硬件设备的要求比较高,一般在硬件稳定之后才能进行应用软件的开发,同时它占用目标板上的一部分资源,而且不能对程序的全速运行进行完全仿真,所以对一些要求严格的情况不是很适合。调试监控程序/驻留监控软件ARM 公司的 Angel 就是该3.3.6 边界扫描测试技术边界扫描测试技术和JTAG接口是嵌入式系统最具特色的技术,一般情况具有两个功能:1.测试芯片的电气特性,检测芯片是否有问题;2.一类用于Debug3.3.6 边界扫描测试技术边界扫描测试技术和JTAG接口ARM处

20、理器的JTAG调试结构ARM处理器的JTAG调试结构ARM调试系统说明调试系统一般包括3部分:调试主机是运行软件调试器的计算机例如ADW,ARM Debugger for Windows调试主机允许发出高级命令,如设置断点或检查存储器内容。协议转换器处理调试主机和ARM7TDMI处理器JTAG接口之间的通讯包括调试主机发出的高级命令以及JTAG接口的低级命令。一般通过增强型并行口进行连接。ARM调试系统说明调试系统一般包括3部分:ARM调试系统说明(续)调试目标ARM CPU主处理器逻辑:对调试有硬件支持。嵌入式ICE-RT逻辑:这是用于产生调试异常(如断点)的寄存器和比较器的集合。TAP控制

21、器:用JTAG串行接口控制扫描链的动作。ARM调试系统说明(续)调试目标2008年3月14日南京大学计算机系473.4.3 ARM7TDMI扫描链布局2008年3月14日南京大学计算机系473.4.3 ARM2008年3月14日南京大学计算机系48ARM7TDMI内核扫描链结构113位38位33位2008年3月14日南京大学计算机系48ARM7TDMI内核2008年3月14日南京大学计算机系49扫描链编号分配扫描链编号功能0宏单元扫描测试1调试2嵌入式ICE-RT逻辑编程3外部边界扫描(由ASIC(集成电路设计)设计者实现)4保留8保留2008年3月14日南京大学计算机系49扫描链编号分配扫描

22、链2008年3月14日南京大学计算机系50扫描链0Scan Chain 0:有113个扫描单元,包括ARM核的所有的I/O、地址数据总线和输入输出控制信号。这条链上的信号复杂,不易控制,但是包含的信息丰富,可以通过这条链得到ARM7TDMI内核的所有信息。从查询数据输入到输出,扫描链的顺序为:(1)数据总线位0-位31;(2)内核控制信号;(3)地址总线位31-位0;(4)嵌入式ICE-RT控制信号。嵌入式ICE-RT控制信号(特别是DBGRQI)首先被扫描输出。2008年3月14日南京大学计算机系50扫描链0Scan C2008年3月14日南京大学计算机系51扫描链0单元编号信号类型编号信号

23、类型132D0D31输入/输出41BL0输入33BREAKPT输入42BL1输入34NENIN输入43BL2输入35NENOUT输出44BL3输入36LOCK输出45DCTL输出37BIGEND输入46nRW输出38DBE输入47DBGACK输出39MAS0输出48CGENDBGACK输出40MAS1输出49nFIQ输入2008年3月14日南京大学计算机系51扫描链0单元编号信号2008年3月14日南京大学计算机系52扫描链0单元(续1)编号信号类型编号信号类型50nIRQ输入59nMREQ输出51nRESET输入60SEQ输入52ISYNC输入61nTRANS输入53BRGRQ输入62CPB

24、输入54ABORT输入63nM4输出55CPA输入64nM3输出56nOPC输出65nM2输出57IFEN输入66nM1输出58nCPI输出67nM0输出2008年3月14日南京大学计算机系52扫描链0单元(续1)2008年3月14日南京大学计算机系53扫描链0单元(续2)编号信号类型编号信号类型68nEXEC输出69ALE输出70ABE输入71APE输入72TBIT输出73nWAIT输入74105A31A0输出106113ICE-RT信号2008年3月14日南京大学计算机系53扫描链0单元(续2)2008年3月14日南京大学计算机系54扫描链1扫描链1:有33个扫描单元,包括ARM核的数据总

25、线和一个断点控制信号。这是一条很有用的链,通过控制这条链,可以控制ARM核执行指定的指令,从而实现对ARM的内部寄存器、协处理器以及外部存储器的读写操作。2008年3月14日南京大学计算机系54扫描链1扫描链1:有2008年3月14日南京大学计算机系55扫描链1(续)扫描链1的前32位用于数据值,加上在BREAKPT内核输入上的扫描单元。第33位有如下4个用途:在正常INTEST测试条件下,允许将已知值扫描到BREAKPT的输入。在EXTEST测试条件下,捕获从系统加到BREAKPT输入的值。在调试期间,第33位的值决定在执行指令之前ARM7TDMI核是否同步回系统速度。ARM7TDMI核进入

26、调试状态后,该位第一次被捕获并被扫描输出。其值告诉调试器内核是否由断点(位33清零)或由观察点(位33置位)进入调试状态。2008年3月14日南京大学计算机系55扫描链1(续)扫描链2008年3月14日南京大学计算机系56扫描链2Scan Chain 2共有38个扫描单元,通过控制EmbeddedICE宏单元,实现对ARM执行指令的断点、观察点的控制。从TDI到TDO的扫描链次序如下:读/写;寄存器地址位4-位0;数据值位31-位0。2008年3月14日南京大学计算机系56扫描链2Scan CARM处理器的实时JTAG仿真器与开发板的连线图ARM处理器的实时JTAG仿真器与开发板的连线图200

27、8年3月14日南京大学计算机系58JTAG信号TMS:测试模式选择(Test Mode Select)通过TMS信号控制JTAG状态机的状态。TCK:JTAG的时钟信号TDI:数据输入信号TDO:数据输出信号nTRST:JTAG复位信号,复位JTAG的状态机和内部的宏单元(Macrocell)。2008年3月14日南京大学计算机系58JTAG信号TMS:2008年3月14日南京大学计算机系593.4.4 TAP控制器TAP控制器内部有多个寄存器测试数据寄存器JTAG控制指令寄存器旁路寄存器ARM7TDMI器件识别码(ID)寄存器扫描路径选择寄存器2008年3月14日南京大学计算机系593.4.

28、4 TAP2008年3月14日南京大学计算机系60JTAG的TAP控制器结构2008年3月14日南京大学计算机系60JTAG的TAP控制2008年3月14日南京大学计算机系61JTAG接口的IC内部结构2008年3月14日南京大学计算机系61JTAG接口的IC内2008年3月14日南京大学计算机系623.4.5 JTAG扫描链工作原理JTAG扫描链由扫描单元组成每一个被测试逻辑电路引出信号线同它的引脚之间配置一个扫描单元每一个扫描单元的内部由两个D触发器和两个多路选择器组成分别把逻辑电路输入输出线同引脚之间的穿越扫描单元的电流方向成为横向,沿扫描单元串接线运动的电流方向成为纵向。JTAG扫描链

29、一共有四种操作:挂起、捕获、移位和更新。2008年3月14日南京大学计算机系623.4.5 JTA2008年3月14日南京大学计算机系63JTAG扫描单元构造纵向纵向横向横向横向四种操作: 挂起,移位,捕获,更新2008年3月14日南京大学计算机系63JTAG扫描单元构造2008年3月14日南京大学计算机系64JTAG扫描链的组成LogicPinPinPinPinLogicLogicLogicLogic纵向横向PinPinLogic2008年3月14日南京大学计算机系64JTAG扫描链的组成2008年3月14日南京大学计算机系65JTAG处于挂起状态横向直行横向直行如同扫描链不存在2008年3

30、月14日南京大学计算机系65JTAG处于挂起状态2008年3月14日南京大学计算机系66捕获JTAG状态当前引脚信号的快照存入扫描链2008年3月14日南京大学计算机系66捕获JTAG状态当前2008年3月14日南京大学计算机系67移位数据纵向直行此刻处理器的工作脉冲暂停2008年3月14日南京大学计算机系67移位数据纵此刻处理器2008年3月14日南京大学计算机系68移位结束纵向直行此刻处理器的工作脉冲暂停2008年3月14日南京大学计算机系68移位结束纵此刻处理器2008年3月14日南京大学计算机系69数据更新JTAG扫描链取代系统向处理器输入信号,并且替代处理器向系统输出信号。2008年

31、3月14日南京大学计算机系69数据更新JTAG扫描实时在线仿真(ICE)与JTAG的区别实时在线仿真系统的硬件主体是在线仿真器(ICE)。在8位单片机调试过程中,可以用这种ICE仿真器完全取代目标板上的MCU。因而目标系统对开发者来说完全是透明的、可控的。对16和32位的单片机还不能做到完全取代。JTAG调试在内嵌了IEEE 1149标准电路的CPU上进行,调试时不需要更换CPU。适用于8、16、32位的CPU。实时在线仿真(ICE)与JTAG的区别实时在线仿真系统的硬件英蓓特ARM仿真器的主要特征下载速度达25KB/S;支持主流开发环境ADS、 Embest IDE、 SDT;支持各种ARM

32、系列处理器;支持标准的14/20针JTAG接口;支持最多两个硬件断点/两个数据断点/不限数目的软件断点;支持汇编级调试,支持ARM、THUMB及指令集交叉调试;支持标准C语言程序调试;支持Flash在线编程;通过软件升级方式支持更高版本的ARM核处理器。英蓓特ARM仿真器的主要特征下载速度达25KB/S;3.3.7 嵌入追踪宏单元ETM跟踪追踪宏单元ETM也称为跟踪调试接口ARM公司开发的一种高级实时软件开发调试工具,是ARM片上系统的一个组件。在CPU运行过程中把现场信息捕捉压缩后输出,然后在PC端就可以对这些数据进行解压分析。3.3.7 嵌入追踪宏单元ETM跟踪追踪宏单元ETMETM嵌入跟

33、踪宏单元本质上ETM相当于一个嵌入芯片的逻辑分析仪ETM嵌入跟踪宏单元本质上ETM相当于一个嵌入芯片的逻辑分JTAG仿真器和ETM的功能区别基于JTAG的仿真器debug方法是利用芯片内部的EmbeddedICE模块来控制内核,达到单步/断点等调试目的,这种方法的特点是需要把目标CPU停住后才能观察现场情况。在真正的实时系统中,停止CPU运行往往导致现场失真,ETM就能够在CPU运行过程中把现场信息捕捉压缩进行输出,然后在PC端就可以对这些数据进行解压分析;用户还可以对ETM设置很多过滤及触发条件,对一些随即出现的异常进行捕捉(还能得到异常前后一段时间内的系统信息)。本质上ETM相当于一个嵌入芯片内部的逻辑分析仪。JTAG仿真器和ETM的功能区别基于JTAG的仿真器debu3.3.8 Nexus调试标准Nexus 5001论坛飞思卡尔公司、福特汽车公司和风河公司等世界领先的嵌入式系统开发厂商于1998年成立了该论坛。官

温馨提示

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

评论

0/150

提交评论