书签 分享 收藏 举报 版权申诉 / 42
上传文档赚钱

类型《实时嵌入式系统设计》课程复习课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:3938171
  • 上传时间:2022-10-26
  • 格式:PPT
  • 页数:42
  • 大小:436.47KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《实时嵌入式系统设计》课程复习课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    实时嵌入式系统设计 实时 嵌入式 系统 设计 课程 复习 课件
    资源描述:

    1、1嵌入式系统概论嵌入式系统概论复习课复习课2考试时间考试时间时间:时间:2011年年1月月5日晚日晚18:0020:00 地点:地点:主南主南405考试形式:考试形式:半开卷半开卷3考试要求考试要求1.1.掌握嵌入式系统的软硬件基本概念,包括掌握嵌入式系统的软硬件基本概念,包括CISCCISC、RISCRISC、进、进程、线程、操作系统通信与同步等,及一些术语的表示方程、线程、操作系统通信与同步等,及一些术语的表示方法;法;2.2.掌握掌握ARMARM体系结构:包括寄存器组织、工作模式、异常处体系结构:包括寄存器组织、工作模式、异常处理等;理等;3.3.掌握掌握ARMARM汇编指令,能够进行简

    2、单的汇编程序设计;汇编指令,能够进行简单的汇编程序设计;4.4.了解了解uCuC/OS/OS的基本结构的基本结构4嵌入式系统的软硬件基本概念嵌入式系统的软硬件基本概念5嵌入式系统的软/硬件框架嵌入式嵌入式微处理器微处理器SDRAMSDRAMROMROMI/OI/OA/DA/DD/AD/A人机交互接口人机交互接口通用接口通用接口实时操作系统(实时操作系统(RTOS)RTOS)图形用户图形用户接口接口BSP/HAL 硬件抽象层/板极支持包BSP/HAL 硬件抽象层/板极支持包任务管理任务管理文件系统文件系统应用程序应用程序嵌入式计算机系统嵌入式计算机系统硬件层硬件层软件层软件层中间层中间层功能层功

    3、能层6CISC和和RISCCISCCISC:复杂指令集(:复杂指令集(Complex Instruction Set ComputerComplex Instruction Set Computer)具有大量的指令和寻址方式具有大量的指令和寻址方式8/28/2原则:原则:80%80%的程序只使用的程序只使用20%20%的指令的指令大多数程序只使用少量的指令就能够运行。大多数程序只使用少量的指令就能够运行。RISCRISC:精简指令集(:精简指令集(Reduced Instruction Set Computer)Reduced Instruction Set Computer)在通道中只包含最

    4、有用的指令在通道中只包含最有用的指令确保数据通道快速执行每一条指令确保数据通道快速执行每一条指令使使CPUCPU硬件结构设计变得更为简单硬件结构设计变得更为简单 7CISC与与RISC的数据通道的数据通道IFIDREGALUMEM开始退出IFIDALUMEMREG微操作通道开始退出单通数据通道8CISC与与RISC的对比的对比类别类别CISCCISCRISCRISC指令系统指令系统指令数量很多指令数量很多较少,通常少于较少,通常少于100100执行时间执行时间有些指令执行时间很长,如有些指令执行时间很长,如整块的存储器内容拷贝;或整块的存储器内容拷贝;或将多个寄存器的内容拷贝到将多个寄存器的内

    5、容拷贝到存贮器存贮器没有较长执行时间的指令没有较长执行时间的指令编码长度编码长度编码长度可变,编码长度可变,1-151-15字节字节编码长度固定,通常为编码长度固定,通常为4 4个字节个字节寻址方式寻址方式寻址方式多样寻址方式多样简单寻址简单寻址操作操作可以对存储器和寄存器进行可以对存储器和寄存器进行算术和逻辑操作算术和逻辑操作只能对寄存器对行算术和逻辑只能对寄存器对行算术和逻辑操作,操作,Load/StoreLoad/Store体系结构体系结构编译编译难以用优化编译器生成高效难以用优化编译器生成高效的目标代码程序的目标代码程序 采用优化编译技术,生成高效采用优化编译技术,生成高效的目标代码程

    6、序的目标代码程序 9非占先式与占先式非占先式与占先式非占先式(非占先式(non-preemptive)非占先式调度法也称作合作型多任务(非占先式调度法也称作合作型多任务(cooperative multitasking),),各个任务彼此合作共享一个各个任务彼此合作共享一个CPU。中断服务可以使一个高优先级的任务由挂起状态变为就绪中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到改任务主动放弃,直到改任务主动放弃CPU的使用权时,那个高优先级的任务才的使用权时,那个高优先级的任

    7、务才能获得能获得CPU的使用权。的使用权。非占先式内核的非占先式内核的一个特点一个特点是几乎不需要使用信号量保护共是几乎不需要使用信号量保护共享数据。运行着的任务占有享数据。运行着的任务占有CPU,而不必担心被别的任务抢占。,而不必担心被别的任务抢占。非占先式内核的非占先式内核的最大缺陷最大缺陷在于其响应高优先级的任务慢,在于其响应高优先级的任务慢,任务已经进入就绪态,但还不能运行,也许要等很时间,直到当任务已经进入就绪态,但还不能运行,也许要等很时间,直到当前运行着的任务释放前运行着的任务释放CPU。内核的任务级响应时间是不确定的,。内核的任务级响应时间是不确定的,不知道什么时候最高优先级的

    8、任务才能拿到不知道什么时候最高优先级的任务才能拿到CPU的控制权,完全的控制权,完全取决于应用程序什么时候释放取决于应用程序什么时候释放CPU。10非占先式非占先式(Non-Preemptive)低优先级任务低优先级任务ISR高优先级任务高优先级任务(1)(2)(3)(4)(5)(6)(7)中断服务程序使中断服务程序使高优先级任务就绪高优先级任务就绪低优先级任务释放低优先级任务释放CPU使用权使用权TIME11占先式(占先式(preemptive)当系统响应时间很重要时,要使用占先式(当系统响应时间很重要时,要使用占先式(preemptive)内核。最高优先级的任务一旦就绪,总内核。最高优先级

    9、的任务一旦就绪,总能得到能得到CPU的控制权。的控制权。当一个运行着的任务使一个比它优先级高的任务当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的进入了就绪态,当前任务的CPU使用权就被剥夺了,使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。的控制权。使用占先式内核时,应用程序不应直接使用不可使用占先式内核时,应用程序不应直接使用不可重入型函数。如果调入可重入型函数时,低优先级的重入型函数。如果调入可重入型函数时,低优先级的任务任务CPU的使用权被高优先级任务剥夺,的使用权被高优先级任务剥夺,不可重入型

    10、不可重入型函数中的数据有可能被破坏。函数中的数据有可能被破坏。12占先式占先式(Preemptive)低优先级任务低优先级任务ISR高优先级任务高优先级任务(1)(2)(3)(4)(5)(6)中断服务程序使中断服务程序使高优先级任务就绪高优先级任务就绪高优先级任务得到高优先级任务得到CPU使用权使用权TIME13进程、线程和任务进程、线程和任务在多道程序系统中,各个程序之间是并发执在多道程序系统中,各个程序之间是并发执行的,共享系统资源。行的,共享系统资源。CPU需要在各个运行需要在各个运行的程序之间来回地切换,这样的话,要想描的程序之间来回地切换,这样的话,要想描述这些多道的并发活动过程就变

    11、得很困难。述这些多道的并发活动过程就变得很困难。为此,操作系统设计者提出了为此,操作系统设计者提出了进程进程的概念。的概念。14什么是进程?什么是进程?A process a program in execution 一个进程应该包括:一个进程应该包括:程序的代码;程序的代码;程序的数据;程序的数据;PC中的值,用来指示下一条将运行的指令;中的值,用来指示下一条将运行的指令;一组通用的寄存器的当前值,堆、栈;一组通用的寄存器的当前值,堆、栈;一组系统资源(如打开的文件)一组系统资源(如打开的文件)总之,进程包含了正在运行的一个程序的所有总之,进程包含了正在运行的一个程序的所有状态信息。状态信息

    12、。15main().A().PROCESS A program is C statements or commands静态的;静态的;A process is program+running context动态的动态的.main().A().PROGRAMheap StackA MainRegisters,PCProcess Program 16进程的特性进程的特性动态性:动态性:程序的运行状态在变,程序的运行状态在变,PC、寄存器、寄存器、堆和栈等;堆和栈等;独立性:独立性:是一个独立的实体,是计算机系统资是一个独立的实体,是计算机系统资 源的使用单位。每个进程都有源的使用单位。每个进程都有

    13、“自己自己”的的PC和内部状态,运行时独立于其他和内部状态,运行时独立于其他 的进程(逻辑的进程(逻辑PC和物理和物理PC););并发性:并发性:从宏观上看各进程是同时独立运行的从宏观上看各进程是同时独立运行的17怎么办?怎么办?需要提出一种新的实体,满足以下特性:需要提出一种新的实体,满足以下特性:(1)实体之间可以并发地执行;)实体之间可以并发地执行;(2)实体之间共享相同的地址空间;)实体之间共享相同的地址空间;这种实体就是:这种实体就是:线程线程(Thread)18什么是线程?什么是线程?Thread:A sequential execution stream within a pro

    14、cess;A thread of execution;进程当中的一条执行流程。进程当中的一条执行流程。19从两个方面来理解进程:从两个方面来理解进程:从资源组合的角度:进程把一组相关的从资源组合的角度:进程把一组相关的 资源组合起来,构成了一个资源平台资源组合起来,构成了一个资源平台 (环境),包括地址空间(代码段、数据(环境),包括地址空间(代码段、数据 段)、打开的文件等各种资源;段)、打开的文件等各种资源;从运行的角度:代码在这个资源平台上的从运行的角度:代码在这个资源平台上的 一条执行流程(线程)。一条执行流程(线程)。资源平台资源平台 线程线程 20进程进程 线程线程 资源平台资源平

    15、台优点:优点:一个进程中可以同时存在多个线程;一个进程中可以同时存在多个线程;各个线程之间可以并发地执行;各个线程之间可以并发地执行;各个线程之间可以共享地址空间。各个线程之间可以共享地址空间。21线程所需的资源线程所需的资源(本图摘自(本图摘自Silberschatz,Galvin and Gagne:“Operating System Concepts”)22任务task典型的任务一个无限循环。典型的任务一个无限循环。void void mytask(voidmytask(void *pdatapdata)for(;)for(;)do something;do something;wait

    16、ing;waiting;do something;do something;l C/OSC/OS II 2.5 II 2.5版本支持版本支持6464个任务,每个任务一个特定的优先级。优先级越高个任务,每个任务一个特定的优先级。优先级越高,数字越小。,数字越小。l系统占用了系统占用了8 8个任务,保留优先级为个任务,保留优先级为0 0、1 1、2 2、3 3、OS_LOWEST_PRIO-3OS_LOWEST_PRIO-3、OS_LOWEST_PRIO-2OS_LOWEST_PRIO-2、OS_LOWEST_PRIO-1OS_LOWEST_PRIO-1、OS_LOWEST_PRIO-0OS_LO

    17、WEST_PRIO-0。23任务状态任务状态就绪就绪休眠休眠等待等待或挂或挂起起运行运行中断中断服务服务删除任务删除任务删除任务删除任务删除任务删除任务中断中断中断结束中断结束创建任务创建任务任务调度任务调度任务被占先任务被占先等待消息等待消息挂起挂起收到消息收到消息挂起时间到挂起时间到2425OSIntEnterOSIntEnter()()/*在调用本函数之前必须先将中断关闭在调用本函数之前必须先将中断关闭*/void OSIntEnter(void)if(OSRunning=TRUE)if(OSIntNesting 255)OSIntNesting+;26OSIntExit的意义的意义27

    18、OSIntExitOSIntExit()()void OSIntExit(void)OS_ENTER_CRITICAL();/关中断关中断 if(-OSIntNesting|OSLockNesting)=0)/判判断嵌套是否为零断嵌套是否为零 /把高优先级任务装入把高优先级任务装入 OSIntExitY=OSUnMapTblOSRdyGrp;OSPrioHighRdy=(INT8U)(OSIntExitY 3)+OSUnMapTblOSRdyTblOSIntExitY);if(OSPrioHighRdy!=OSPrioCur)OSTCBHighRdy=OSTCBPrioTblOSPrioHig

    19、hRdy;OSCtxSwCtr+;OSIntCtxSw();OS_EXIT_CRITICAL();/开中断返回开中断返回28ARMARM处理器体系结构与指令集处理器体系结构与指令集29ARM寄存器组织 1*30寄存器-2l37 37 寄存器寄存器u31 31 个通用个通用3232位寄存器,包括程序计数器位寄存器,包括程序计数器PCPC未分组寄器未分组寄器R0-R7R0-R7分组寄存器分组寄存器R8-R14R8-R14程序计数器程序计数器PCPC(R15R15)u6 6 个状态寄存器个状态寄存器u15 15 通用寄存器通用寄存器 (R0 to R14),(R0 to R14),以及以及1 1或者

    20、或者2 2个状态寄存器和程序计数个状态寄存器和程序计数器在任何时候都是可以访问的器在任何时候都是可以访问的l可访问的寄存器取决于处理器的模式可访问的寄存器取决于处理器的模式l其它寄存器其它寄存器 (the banked registers)(the banked registers)的状态在支持的状态在支持IRQ,FIQ,IRQ,FIQ,管理员管理员,中止和未定义模式处理时被切换中止和未定义模式处理时被切换31寄存器-3lR0 R0 到到 R15 R15 可以直接访问可以直接访问lR0 R0 到到 R14 R14 是通用寄存器是通用寄存器lR13:R13:堆栈指针堆栈指针 (sp)(sp)(通

    21、常通常)l每种处理器模式都有单独的堆栈每种处理器模式都有单独的堆栈lR14:R14:链接寄存器链接寄存器(lrlr)lR15 R15 包含程序计数器包含程序计数器 (PC)(PC)lCPSR CPSR 当前程序状态寄存器,包括代码标志状态和当前模式位当前程序状态寄存器,包括代码标志状态和当前模式位l5 5个个SPSRsSPSRs-(程序状态保存寄存器程序状态保存寄存器)当异常发生时保存当异常发生时保存CPSRCPSR状态状态32处理器工作模式(1)ARM ARM 有有7 7个基本工作模式个基本工作模式:1 1、User:User:非特权模式,大部分任务执行在这种模式非特权模式,大部分任务执行在

    22、这种模式l正常程序执行的模式正常程序执行的模式2 2、FIQ:FIQ:当一个高优先级当一个高优先级(fast)(fast)中断产生时将会进入这种模式中断产生时将会进入这种模式l高速数据传输和通道处理高速数据传输和通道处理3 3、IRQ:IRQ:当一个低优先级当一个低优先级(normal)(normal)中断产生时将会进入这种模式中断产生时将会进入这种模式l通常的中断处理通常的中断处理4 4、Supervisor:Supervisor:当复位或软中断指令执行时将会进入这种模式当复位或软中断指令执行时将会进入这种模式l供操作系统使用的一种保护模式供操作系统使用的一种保护模式5 5、Abort:Ab

    23、ort:当存取异常时将会进入这种模式当存取异常时将会进入这种模式l虚拟存储及存储保护虚拟存储及存储保护6 6、UndefUndef:当执行未定义指令时会进入这种模式当执行未定义指令时会进入这种模式l软件仿真硬件协处理器软件仿真硬件协处理器7 7、System:System:使用和使用和UserUser模式相同寄存器集的特权模式模式相同寄存器集的特权模式l特权级的操作系统任务特权级的操作系统任务33程序状态寄存器-1lARM7TDMI ARM7TDMI 包含当前程序状态寄存器包含当前程序状态寄存器 (CPSR),(CPSR),加上加上5 5个个程序状态保存寄存器程序状态保存寄存器SPSRSPSR

    24、,当异常发生时,用于保存,当异常发生时,用于保存CPSRCPSR的状态的状态 l这些寄存器的功能是这些寄存器的功能是:u保存保存ALUALU当前操作信息当前操作信息u控制允许和禁止中断控制允许和禁止中断u设置处理器操作模式设置处理器操作模式34程序状态寄存器-2uN,Z,C and V N,Z,C and V 条件码标志条件码标志u可以在处理器中作为数学和逻辑操作改变可以在处理器中作为数学和逻辑操作改变u可以被所有的指令测试,以决定指令是否被执行可以被所有的指令测试,以决定指令是否被执行uN:Negative.Z:Zero.C:Carry.V:N:Negative.Z:Zero.C:Carry

    25、.V:oVerflowoVerflowuI and F I and F 位是中断禁止位位是中断禁止位uM0,M1,M2,M3 and M4 M0,M1,M2,M3 and M4 位是模式位位是模式位35程序状态寄存器l 条件位:条件位:lN=1-N=1-结果为负结果为负,0-,0-结果为正或结果为正或0 0lZ=1-Z=1-结果为结果为0,0-0,0-结果不为结果不为0 0lC=1-C=1-进位,进位,0-0-借位借位lV=1-V=1-结果溢出,结果溢出,0 0结果没溢出结果没溢出lQ Q 位:位:l仅仅ARM 5TE/JARM 5TE/J架构支持架构支持l指示增强型指示增强型DSPDSP指令

    26、是否溢出指令是否溢出lJ J 位位l仅仅ARM 5TE/JARM 5TE/J架构支持架构支持lJ=1:J=1:处理器处于处理器处于JazelleJazelle状态状态l中断禁止位:中断禁止位:lI =1:I =1:禁止禁止 IRQ.IRQ.lF=1:F=1:禁止禁止 FIQ.FIQ.lT BitT Bitl仅仅ARM ARM xTxT架构支持架构支持lT=0:T=0:处理器处于处理器处于 ARM ARM 状态状态lT=1:T=1:处理器处于处理器处于 Thumb Thumb 状态状态lModeMode位位(处理器模式位处理器模式位):):l0b100000b10000UserUserl0b10

    27、0010b10001FIQFIQl0b100100b10010IRQIRQl0b100110b10011SupervisorSupervisorl0b101110b10111AbortAbortl0b110110b11011UndefinedUndefinedl0b111110b11111SystemSystem2731N Z C V Q2867I F T mode1623 815 54024fsxc U n d e f i n e dJ36ARM异常-1l异常异常内部或外部中断源产生并引起处理器处理一个事件,如外部内部或外部中断源产生并引起处理器处理一个事件,如外部中断或试图执行未定义指令都

    28、会引起异常。中断或试图执行未定义指令都会引起异常。l处理异常之前必须保留处理器的状态处理异常之前必须保留处理器的状态l异常类型异常类型uFIQ FIQ uIRQ(InterruptIRQ(Interrupt ReQuestReQuest)u未定义指令未定义指令u预取中止预取中止u数据中止数据中止u复位复位u软件中断软件中断Software interruptSoftware interruptu通过软件中断产生通过软件中断产生u进行管理员模式中获得进行管理员模式中获得u通常要求特殊的管理功能,如操作系统支持通常要求特殊的管理功能,如操作系统支持37异常-2l异常类型异常类型u未定义的指令陷井未

    29、定义的指令陷井u当当ARMARM接受到一条不能处理的指令接受到一条不能处理的指令,ARM,ARM把这条指令提供给任何一把这条指令提供给任何一个协处理器执行个协处理器执行u如果协处理器可以执行这条指令但此时协处理器忙如果协处理器可以执行这条指令但此时协处理器忙,ARM,ARM将等待直将等待直到协处理器准备好或中断发生到协处理器准备好或中断发生u如果没有协处理器处理这条指令如果没有协处理器处理这条指令,那么那么ARMARM将处理未定义的指令陷将处理未定义的指令陷井井l异常优先级异常优先级(1)Reset(highest priority)(1)Reset(highest priority)(2)D

    30、ata abort(2)Data abort(3)FIQ(3)FIQ(4)IRQ(4)IRQ(5)(5)PrefetchPrefetch abort abort(6)(6)未定义指令未定义指令,Software interrupt,Software interrupt(最低优先级最低优先级)38异常向量39Vector Table异常处理l当异常产生时当异常产生时,ARM core:,ARM core:l拷贝拷贝 CPSR CPSR 到到 SPSR_SPSR_l设置适当的设置适当的 CPSR CPSR 位:位:l改变处理器状态进入改变处理器状态进入 ARM ARM 态态l改变处理器模式进入相应

    31、的异常模式改变处理器模式进入相应的异常模式l设置中断禁止位禁止相应中断设置中断禁止位禁止相应中断 (如需要如需要)l保存返回地址到保存返回地址到 LR_LR_l设置设置 PC PC 为相应的异常向量为相应的异常向量l返回时返回时,异常处理需要异常处理需要:l从从 SPSR_SPSR_恢复恢复CPSRCPSRl从从LR_LR_恢复恢复PC PC lNote:Note:这些操作只能在这些操作只能在 ARM ARM 态执行态执行.Vector table can be at 0 xFFFF0000 on ARM720T and on ARM9/10 family devicesFIQIRQ(Rese

    32、rved)Data AbortPrefetch AbortSoftware InterruptUndefined InstructionReset0 x1C0 x180 x140 x100 x0C0 x080 x040 x0040ARM 指令集的特点l向后兼容:新版本增加指令,并保持指令向后兼容;向后兼容:新版本增加指令,并保持指令向后兼容;lLoad-store Load-store 结构结构*uload/store load/store 从存储器中读某个值从存储器中读某个值,操作完后再将其放回存操作完后再将其放回存储器中储器中u只对存放在寄存器的数据进行处理;只对存放在寄存器的数据进行处理

    33、;u对于存储器中的数据,只能使用对于存储器中的数据,只能使用load/storeload/store指令进行存取指令进行存取41ARM 指令分类l数据处理指令数据处理指令 使用和改变寄存器的值使用和改变寄存器的值l数据传送指令数据传送指令 把存储器的值拷贝到寄存器中把存储器的值拷贝到寄存器中 (load)or(load)or 把寄存器中的值拷贝到存储器中把寄存器中的值拷贝到存储器中(store)(store)l控制流指令控制流指令 l分支分支l分支和链接分支和链接,保存返回的地址保存返回的地址,以恢复最先的次序以恢复最先的次序l软件中断指令软件中断指令l程序状态寄存器指令程序状态寄存器指令l协处理器指令协处理器指令42

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《实时嵌入式系统设计》课程复习课件.ppt
    链接地址:https://www.163wenku.com/p-3938171.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库