21嵌入式设计复习题答案要点_第1页
21嵌入式设计复习题答案要点_第2页
21嵌入式设计复习题答案要点_第3页
21嵌入式设计复习题答案要点_第4页
21嵌入式设计复习题答案要点_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、一、 填空题1、哈佛体系结构数据空间和地址空间( 分开 ),ARM920T采用( 哈佛 )的内核架构。2、 ARM7TDMI采用( 3 )级流水线结构,ARM920TDMI采用( 5 )级流水线。3、ARM7TDMI中,T表示支持16位Thumb指令集,D表示( 在片可调式 ),M表示内嵌乘法器Multiplier,I表示( 嵌入式ICE ),支持在线断点和调试。4、“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。5、ARM处理器共有37个寄存器,31个通用寄存器,6个状态寄存器。寄存器R13通常用作堆栈指针,称作SP。寄存器R14用作子程序链接寄存器,也称为链接寄存器LK

2、(Link Register)。6、程序状态寄存器CPSR的N、Z、C、V分别指-,I=1指-禁止IRQ中断-、F=1指-禁止FIQ中断-,M4:0用做-处理器模式选择-。7、ARM微处理器支持四种类型的堆栈,即:满递增堆栈、满递减堆栈、空递增堆栈、空递减堆栈。8、ARM微处理器有 7 种工作模式,它们分为两类 特权模式 、 非特权模式 。其中用户模式属于 非特权模式 9、ARM支持两个指令集, ARM核因运行的指令集不同,分别有两个状态 ARM状态 、thumb状态,状态寄存器CPSR的 T (或者填 D5 ) 位反映了处理器运行不同指令的当前状态10、ARM处理器有两种总线架构,数据和指令

3、使用同一接口的是 冯诺依曼结构 ,数据和指令分开使用不同接口的是 哈佛结构 11、ARM核有多个寄存器,其中大部分用于通用寄存器,有小部分作为专用寄存器, R15 寄存器用于存储PC,R13通常用来存储 SP (或者填 堆栈指针) 12、编译链接代码时,有两种存储代码和数据的字节顺序,一种是 小端对齐 ,另一种是 大端对齐 13、不同的中断处理不同的处理模式,具有不同的优先级,而且每个中断都有固定的中断入口地址。当一个中断发生时,相应的R14存储中断返回地址,SPSR存储状态寄存器CPSR的值。14、嵌入式微处理器有嵌入式微处理器、嵌入式微控制器、曲入式DSP处理器和嵌入式片上系统四种类型。1

4、5、ARM9TDMI采用5级流水线:取指、译码、执行、访存和写回。16、AMBA总线结构包括ASB、AHB和APB总线。ASB/AHB用于CPU与存储器、DMA控制器、总线仲裁控制器等片上系统中芯片的连接,APB用于连接低速的外围设备。17、函数的参数传递方法有两种:R0R3寄存器 和 堆栈9、下列32位数中,不可作为立即数的是_A_A、0x81000007B、0x04800000C、0x00000012D、0x800000711、S3C2410采用的是 D 核心A、 ARM7TDMIB、 ARM9TDMI    C、 ARM926EJ-S D、 ARM920T1

5、3、MMU的作用有 A B A 内存保护 B 地址转换( 将虚地址转换成物理地址) C 加快存取速度 D 安全保密 E 内存分配15、 存储一个32位数0x2168465到2000H2003H四个字节单元中,若以大端模式存储,则2000H存储单元的内容为 D A、0x21B、0x68C、0x65D、0x0216、RS232-C串口通信中,表示逻辑1的电平是 D 。A、0vB、3.3vC、5v15vD、5v15v17、ARM汇编语句“ADD R0, R2, R3, LSL#1”的作用是 A 。A. R0 = R2 + (R3 << 1) B. R0 =( R2<< 1)

6、+ R3 C. R3= R0+ (R2 << 1) D. (R3 << 1)= R0+ R2 18、 IRQ中断的入口地址是 C 。FIQ的入口地址为0x0000001CA、0x00000000B、0x00000008C、0x00000018D、0x0000001420、ADDR0,R1,#3属于 A 寻址方式。A. 立即寻址B. 多寄存器寻址C. 寄存器直接寻址D. 相对寻址21、GET伪指令的含义是 A A. 包含一个外部文件B. 定义程序的入口C. 定义一个宏D. 声明一个变量23、若R1=2000H,(2000H)=0x86,(2008H)=0x39,则执行指令

7、LDRR0,R1,8!后R0的值为 D 。A. 0x2000B. 0x86C. 0x2008D. 0x39 28、LDR R2,R3,#128 的寻址方式是 C 。A. 寄存器寻址B. 寄存器移位C. 变址寻址 D. 间接寻址29、当一个中断发生时,相应的 A (LR) 存储中断返回地址。AR14 B.R1 C.R2 D.R1532、S3C2410X存储控制器支持大端、小端模式存储,可寻址 C 的空间。A.1MB B.1TB C.1GB D.1B二、 指令解析1、LDR R0,R1 ; 从R1寄存器指向的地址中取出一个字的数据,存储到R0寄存器中2、 STR R0,R1,8 ;将R0中的字数据

8、写入R1为地址的存储器中,并将新地址R18写入R1 3、 ADDS R1,R1,#1 ;R1+1给R14、 LDMFD R13!,R0,R4-R12,PC ;将堆栈内容恢复到寄存器(R0,R4 到R12,LR)。 5、初始值R1=23H,R2=0FH执行指令BIC R0, R1,R2,LSL #1后,寄存器R0,R1的值分别是多少? R0=21H, R1=23H, R2=1EH6、 写一条 ARM 指令,完成操作r1 = r2 * 3(4分)add r1, r2, r2 LSL #1 7、 说明指令STMIAr12!, r0-r11的操作功能。(4分)将R0-R11十二个寄存器中的32位数据,

9、存储到R12地址指针为起始地址的内存中,地址的操作方式是先操作、后增加,并更新地址。 8、ADD R0,R0,#1 ;将R0+1的结果送R0是保存9、ADD R0,R1,R2 ; 将以R2中的内容为地址的单元中的值与R1相加,结果送R0保存10、LDR R0,R1+4 ;指令实现的功能是将R1的内容加4后送R04LDR R0,R1+4! ;将R1的内容加4后送R0,然后R1的内容自增4个字节5B Lable ; 程序无条件跳转到标号Lable处执行MOV R1,R0 ;指令实现的功能是将寄存器R0的值传送到寄存器R17CMP R1,R0 ; 寄存器R1的值与寄存器R0的值相减,根据结果设置CP

10、SR的标志位8CMN R1,R0 ; 将寄存器R1的值与寄存器R0的值相加,根据结果设置CPSR的标志位9ORR R0,R0,#3 ;该指令设置R0的0、1位,其余位保持不变10MRS R0,SPSR ;传送SPSR的内容到R011CMP R1,R2 ; 寄存器R1的值与寄存器R2的值相减,根据结果设置CPSR的标志位12MRS R0,CPSR ;传送SPSR的内容到R013MOV R2,R0 ;将寄存器R0的值传送到寄存器R214ADD R1,R1,#3 ;将R1+3的结果送R1是保存15ADD R2,R1,R0 ;将以R0中的内容为地址的单元中的值与R1相加,结果送R2保存16LDR R1

11、,R0+4 ; 将R1的内容加4后送R017LDR R1,R0+4! ;将R1的内容加4后送R0,然后R1的内容自增4个字节。18AND R0,R0,#3 ;保持R0的0、1位,其余位清零19B 0x1200 ; 程序无条件跳转到0x1200处执行20CMN R1,R2 ; 将寄存器R1的值与寄存器R2的值相加,并根据结果设置CPSR的标志位三、 看图回答1、下图是ARM9处理器的当前程序状态寄存器,请简单说明各位的功能。N:负标志位,运算结果的第31位值,记录标志设置的结果。Z:零标志位,如果标志设置操作的结果为0,则置位。C:进位标志位,记录无符号加法溢出,减法无错位,循环移位。V:溢出标

12、志位,记录标志设置操作的有符号溢出。I:中断禁止标志位,置位时禁止IRQ中断,否则允许IRQ中断使能。F:中断禁止标志位,置位时禁止FIQ中断,否则允许FIQ中断使能。T:控制位,置位时处理器运行在Thumb状态下,清零时处理器运行在ARM状态下。M0M4:模式控制位,定义处理器的7中模式。其余位为保留位,留作将来使用。2、阅读下列与看门狗有关的寄存器描述,解释每一行代码的功能。看门狗定时器控制寄存器(WTCON)寄存器地 址读/写描 述初 始 值WTCON0x53000000读/写看门狗定控制寄存器0x8021WTCON的标识位WTCONBit描 述初 始 值Prescaler Value1

13、5:8预装比例值,有效范围值为02550x80Reserved7:6保留00Watchdog Timer5使能和禁止看门狗定时器禁止看门狗定时器使能看门狗定时器0Clock Select4:3这两位决定时钟分频因素00:1/16 01:1/3210:1/64 11:1/12800Interrupt Generation2中断的禁止和使能0=禁止中断产生1=使能中断产生0Reserved1保留0ResetEnable/Disable0禁止很使能看门狗复位信号的输出1=看门狗复位信号使能0=看门狗复位信号禁止1看门狗定时器数据寄存器(WTDAT)寄 存 器地 址读/写描 述初 始 值WTDAT0x

14、53000004读/写看门狗数据寄存器0x8000看门狗计数寄存器(WTCNT)寄 存 器地 址读/写描 述初 始 值WTCNT0x53000008读/写看门狗计数器当前值0x8000#define rWTCON (*(volatile unsigned *)0x53000000) / 第1行#define rWTDAT (*(volatile unsigned *)0x53000004) / 第2行#define rWTCNT (*(volatile unsigned *)0x53000008) / 第3行void watchdog_test(void)rWTCON = (PCLK/1000

15、000-1)<<8)|(3<<3)|(1<<2); / 第4行rWTDAT = 7812;/ 第5行rWTCNT = 7812; / 第6行rWTCON |=(1<<5); / 第7行3、阅读以下S3C2410部分用户手册求:当PCLK 或 UCLK 为40 MHz时,串口的波特率为 bps ,串口的波特率为bps,相应的控制寄存器如何设置UART BAUD RATE DIVISOR REGISTERThere are three UART baud rate divisor registers(寄存器)including UBRDIV0, UB

16、RDIV1 and UBRDIV2 in the UARTblock(模块).The value stored in the baud rate divisor register (UBRDIVn), is used to determine the serial Tx/Rx clock rate(baud rate) as follows:UBRDIVn = (int)(PCLK / (bps x 16) ) 1 or UBRDIVn = (int)(UCLK / (bps x 16) ) 1Where, the divisor should be from 1 to (216-1) and

17、 UCLK should be smaller than PCLK.Register AddressR/WDescriptionReset ValueUBRDIV00x50000028R/W Baud rate divisor register 0UBRDIV10x50004028R/WBaud rate divisor register 1UBRDIV20x50008028R/WBaud rate divisor register 2UBRDIVnBitDescriptionInitial StateUBRDIV 15:0Baud rate division value UBRDIVn &g

18、t;04、ARM9TDMI中的T、D、S、I分别表示什么含义?答:T表示支持16位Thumb指令集, D表示 在片可调式(Debug) ,M表示内嵌乘法器Multiplier, I表示嵌入式ICE ,支持在线断点和调试。4、 ARM处理器模式和ARM处理器状态有什么区别?答:(1) ARM7T ARM 体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。(2) ARM 处理器状态:ARM状态、Thumb状态。(3) 两种处理器状态都有这7种处理器模式;两个状态之间切换并不影响处理器模式或寄存器内容。5、 ARM9TDMI有几种寻址方式?

19、答:立即寻址 寄存器寻址 基地址变址寻址 寄存器偏移寻址 寄存器间接寻址 多寄存器寻址6、 ARM9的内部寄存器R13、R14、R15的主要功能和作用?11、ARM9TDMI支持的数据类型有几种?各有什么要求?12、ARM920T体系结构支持哪两种方法存储字数据?18画出采用 大端 格式存放01020304H的存储器示意图。19 画出采用 小端 格式存放05060708H的存储器示意图。20、 用ARM汇编指令写出实现64位加法和64位减法的代码段,使用的寄存器请自行分配假定低32位数存放在r0和r1里面,高32位数存放在r2和r3里面。答:加法:ADDS r0, r0, r1 /加S是因为要

20、让这个操作影响标志位ADC r2, r2, r3 /ADC是带进位的加法,如果上一条指令产生进位则一起加进来减法:SUBS r0, r0, r1 /加S是因为要让这个操作影响标志位1) SBC r2, r2, r3 / SBC是带进位的减法指令23、ARM微处理器内核是如何进行异常处理的?答:1)当异常产生时,ARM内核拷贝CPSR到SPSR_<mode>,设置适当的CPSR位:改变处理器状态进入ARM态,改变处理器模式进入相应的异常模式,设置中断禁止位禁止相应中断(如果需要);保存返回地址到LR_<mode>,设置PC为相应的异常向量。2)返回时,异常处理需要从SPS

21、R_<mode>恢复CPSR,从LR_<mode>恢复PC,注意:这些操作只能在ARM态执行。26、 简述C/OS-操作系统的移植条件。答:要使c/osii能正常运行,处理器必须满足以下要求。(1)处理器的c编译器能产生可重入代码可重入代码是指可以被多个任务同时调用,而不会破坏数据的一段代码;或者说代码具有在执行过程 中打断后再次被调用的能力。(2)处理器支持中断,并且能产生定时中断arm处理器支持中断并能产生定时中断。(3)c语言可以开/关中断arm处理器核包含一个cpsr寄存器,该寄存器包括一个全局中断禁止位,控制它打开和关闭中断。(4)处理器支持一定数量的数据存储

22、硬件堆栈对于一些只有10根地址线的8位控制器,芯片最多可访问1kb存储单元,在这样的条件下移植是比较困 难的。(5)处理器有将堆栈指针以及其他cpu寄存器的内容读出并存储到堆栈或内存中去的指令arm处理器中汇编指令stmfd可以将所有寄存器压栈,对应的也有一个出栈指令ldmfd。29、在进行基于ARM核的嵌入式系统软件开发时,调用如下函数:int do_something(int arg1,void *arg2,char arg3,int *arg4)这四个参数通过什么方式从调用程序传入被调函数? 根据ATPCS编程规范,调用函数和子程序通过R0R3四个寄存器传递参数,超过四个参数使用堆栈传递

23、。因此arg1通过R0传入, arg2, 通过R1传入,arg3通过R2传入,arg4通过R3传入寄存器 cache 主存储器 辅助存储器寄存器 cache 主存储器 辅助存储器四、 编程题1用汇编语言编写程序读取存储器0x40003100地址上的数据,将数据加1,若结果小于10则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址。2、用汇编语言调用C语言实现n个数相加,n为C函数的参数,由汇编语言传递,结果存放在R5寄存器中。C程序:汇编程序:6、大(小)端地址模式:占多字节的数据在存储时,如果高位字节存在低地址(首地址),称大端地址模式;如果低位字节存在低地址(首地址),

24、称小端地址模式。一. 简答题1、简述冯诺依曼结构与哈佛结构,并指出日常生活中的Intel处理器属于哪种结构。答:冯·诺依曼结构:将数据和指令都存储在存储器中的计算机。计算系统由一个中央处理单元(CPU)和一个存储器组成。存储器拥有数据和指令,并且可以根据所给的地址对它进行读或写。 哈佛结构:为数据和程序提供了各自独立的存储器。程序计数器只指向程序存储器而不指向数据存储器2、与通用计算机相比,嵌入式系统有哪些特点?答:嵌入式系统同通用型计算机系统相比具有以下特点:1)嵌入式系统是面向特定应用的。2)嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。

25、3)嵌入式系统的硬件和软件都必须高效率地设计。4)嵌入式系统具有较长的生命周期。5)嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。6)嵌入式系统本身不具备自举开发能力,必须有一套开发工具和环境才能进行开发。5、简述采用RISC架构的ARM微处理器的特点。答:采用RISC架构的ARM微处理器一般具有如下特点:1)体积小、低功耗、低成本、高性能;2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;3)大量使用寄存器,指令执行速度更快;4)大多数数据操作都在寄存器中完成;5)寻址方式灵活简单,执行效率高;6)指令长度固定;11、简

26、述C/OS-操作系统的移植条件答:要使C/OS-正常运行,处理器必须满足5个要求:a)处理器的C编译器能产生可重入型代码;b)处理器支持中断,并且能产生定时中断;c)用C语言就可以开/关中断;d)处理器能支持一定数量的数据存储硬件堆栈;e)处理器有将堆栈指针以及其它CPU寄存器的内容读出,并存储到堆栈或内存中去的指令。12、简要说明嵌入式操作系统多任务通讯的常用方式。答:多任务通讯的方式:a)共享内存,主要是数据的共享;b)信号量,用于基本的互斥和任务同步;c)消息队列和管道,单CPU的消息传送;d)Socket和远程过程调用,用于网络间任务消息传送。13、描述嵌入式系统方案设计和执行项目过程

27、中的五个主要工作步骤。答:系统规划、系统设计、系统实现、系统测试、系统调试五、论述题 1、嵌入式发展到今天,对应于各种微处理器的硬件平台都是通用的、固定的;各种相应的软件比较成熟,模块化程度比较高;因此,当今的开发过程更多的注重开发流程,合理、科学的开发流程往往可以达到事半功倍的效果。假设你现在某从事嵌入式产品开发的公司工作,被要求开发一通用的数字电视接收控制器,即通常所说的“机顶盒”,对于机顶盒的开发,请你结合嵌入式系统的设计流程叙述一下将采取的设计开发流程。(整个流程需包括从产品定义到产品测试和发布)答:嵌入式系统设计过程:(1)系统定义与需求分析 (2)系统设计方案的初步确立 (3)初步

28、设计方案性价比评估与方案评审论证 (4)完善初步方案、初步方案实施 (5)软硬件集成测试 (6)系统功能性能测试及可靠性测试 2、利用ARM指令编写一程序求取1+2+3+100的累加和,要求求累加和用子程序实现。(累加数据个数存入R0中,累加结果存R1中;R2作为子程序入口参数,R3作为出口参数。)答:AREA gainsum,CODE,READONLYENTRYCODE32 (1分)START MOV R0,#100 MOV R2,R0 (0.5分) BL G_SUM (1分) MOV R1,R3 (0.5分) LOOP B LOOP G_SUM MOV R3,#0 (2分) LOOP1 A

29、DD R3,R3,R2 SUBS R2,R2,#1 BNE LOOP1 MOV PC,LR (1分) END3、用ARM汇编语言编程实现函数:X、Y为32位无符号二进制整数,其中X、Y分别存储在以X_DATA和Y_DATA为首地址的4个存储单元中。答: AREA g_function,CODE,READONLY ENTRY CODE32 (1分)START ADR R0,=X_DATA LDR R1,R0 (1分) CMP R1,#1 BHI LOOP1 MOV R2,#8 (1分)B FIN LOOP1 CMP R1,#10 BHS LOOP2 MUL R2,R1,#5 ADD R2,R2,

30、#3 (1分) B FIN LOOP2 MOV R2,#53 (1分) FIN ADR R0,=Y_DATA STR R2,R0 (1分)HERE B HERE END2. 谈一谈嵌入式系统的发展趋势(列出五个趋势以上)。答:产品种类不断丰富;应用范围不断普及;性能不断提高;功耗不断降低,体积不断缩小;网络化、智能化程度不断提高;软件成为影响价格的主要因素。3. 简述嵌入式微处理器的特点。答:嵌入式微处理器的特点:通用微处理器的增强,一般为32位。(1分)构成:一般CPU、存储器、I/O接口三者分离;(1分)性能:一般为1002000MIPS;(1分)存储器:Flash一般为116MB,SDR

31、AM一般为264MB;(1分)一般加载复杂嵌入式操作系统:VxWorks、WinCE、µClinux等。(1分)6. 从嵌入式系统底层到上层应用软件,试分析嵌入式计算系统的组成主要分为哪几个部分,并写出各部分所完成的功能。答:(1)硬件层;(2)中间层(嵌入式系统初始化,硬件相关的驱动程序);(3)软件层(操作系统、文件系统、GUI,网络及通用组件);(4)功能层。8. Boot Loader在嵌入式系统中主要起什么作用?完成哪些主要的工作?答:Boot Loader是在嵌入式系统复位启动时,操作系统内核运行前,执行的一段程序。通过Boot Loader,初始化硬件设备,建立内存和I

32、/O空间映射图,为最终加载操作系统内核调整好适当的系统软硬件环境。9. 简要说明看门狗电路的作用和原理 答:作用:看门狗定时器是一个用来引导嵌入式微处理器脱离死锁工作状态的部件。能够在一个指定的间隔时间后复位微控制器或者微处理器。 原理:系统启动后,初始化程序想看门狗的计数寄存器写入计数初值,此后每经过一个预订的时间间隔看门狗执行一次技术(减1或加1)。如果软件与设备正常工作,那么看门狗的计数寄存器中设定的计数值满之时(即-1,也就是二进制的计数值为全1),系统程序就会重置看门狗寄存器的计数初值,让它继续计数,并且一直循环下去。第五题:分析设计题1.写一条 ARM 指令,完成操作r1 = r2

33、 * 4解:MOV R1,R2,LSL #22. 初始值R2=5,R3=4,R4=3,执行指令SUB R2, R3,R4,LSR #2后,寄存器R2,R3的值分别是多少? R2=4,R3=4(既是r2=r3-r4/4=4-0=4,r3=4)3. 有程序段如下,实现下面流程图,试补充编写ARM汇编代码。程序段:MOV r0, #15MOV r1, #9start;补充代码stopB stopEND解:补充代码如下:Start:CMP r0,r1SUBLT r1,r1,r0SUBGT r0,r0,r1BNE start36.说明指令STMIAr12!, r0-r11的操作功能。解:将R0-R11十

34、二个寄存器中的32位数据,存储到R12地址指针为起始地址的内存中,地址的操作方式是先操作、后增加,并更新地址。 36.试分析当初始值R1=23H,R2=0FH执行指令BIC R0, R1,R2,LSL #2后,寄存器R0,R1的值分别是多少?解:R0=03H, R1=23H37.试分析说明指令LDMIAr12!, r0-r11的操作功能。将R12地址指针为起始地址的内存中十二个32位数据, 载入到R0-R11寄存器中的,地址的操作方式是先操作、后增加,并更新地址。 38.无符号字符数组x,有10个单元。编写c51程序,将x中大于0x30的数据相加,结果存入片外RAM中。unsigned char x10=10,20,30,40,50,60,70,80,44,33; unsigned int xdata y=0; char i;for(i=0;i<=10;i+)if(xi>30 y += xi; /36.编写程序实现求R4R3R2R1,差放在R6R5中功能。解:SUBS R5,R3,R1 SBC R6,R4,R236.编写程序实现求R4R3R2R1,和放在R6R5中的功能解:ADDS R5,R3,R1ADC R6,R4,R237.请分析以下指令说明其功能MOVSR3,R1,LSL #2 ADDS R1,R1,#1 BIC R1

温馨提示

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

评论

0/150

提交评论