【毕业学位论文】(Word原稿)基于国产BM3803在轨实时系统的设计与实现-软件工程_第1页
【毕业学位论文】(Word原稿)基于国产BM3803在轨实时系统的设计与实现-软件工程_第2页
【毕业学位论文】(Word原稿)基于国产BM3803在轨实时系统的设计与实现-软件工程_第3页
【毕业学位论文】(Word原稿)基于国产BM3803在轨实时系统的设计与实现-软件工程_第4页
【毕业学位论文】(Word原稿)基于国产BM3803在轨实时系统的设计与实现-软件工程_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

硕士学位论文 (专业学位) 基于国产 轨实时系统的设计与实现 姓 名: 学 号: 所在院系:软件学院 职业类型: 专业领域:软件工程 指导教师: 副指导教师: 二 一四年三 月 in 2014 of 基 于 国 产B M 3 8 0 3 在 轨 实 时 系 统 的 设 计 与 实 现 同 济 大 学 位论文版权使用授权书 本人完全了解同济大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名: 年 月 日 同济大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任由本人承担。 学位论文作者签名: 年 月 日同济大学 硕士学位论文 摘要 I 摘要 目前应用于航天器的处理器多为进口器件,这类器件供货周期长、成本高,并存在由于国际政治军事因素而遭到禁运的潜在风险,国产 理器是我国自主开发的一款 32位抗辐照处理器,需要设计实时控制软件对该处理器进行完整的在轨测试 验证 ,同时研究和掌握适应航天器在轨自主管理的嵌入式实时软件的相关技术,包括测试驱动开发模式,嵌入式实时软件资源调度管理以及软件抗单粒子翻转可靠性措施设计。 本文介绍当前极限编程中 关于 测试驱动开发和结对编程 的软件开发思想 ,并将这种思想引入和补充传统的瀑布模型开发方式,以提高开发效率和软件质量 ; 借鉴国内外嵌入式实时系统内核的已有成果,设计适应星载软件要求的总体结构和数据协议 ;根据目前航天器常用外设配置,开发基于 板级支持包 ,实现通用的外部设备管理,以适应不同的硬件操作; 对基于可抢占方式的多任务调度技术进行研究, 比较了 包括速率单调算法和 最早截止时间优先算法等任务调度算法 ; 研究可抵抗单粒子效应的三模冗余存储管理方式; 研究 和实现实时系统中高精度的计时功能;对系统中各个层级产生的故障和异常实施故障诊断、故障隔离、故障修复和系统重构等措施。 最后,关于进一步工作的方向进行了简要的讨论。 关键词 : 嵌入式实时软件,测试驱动开发, 最早截止时间优先算法,冗余,系统重构 I he in at be of is 2 by in be to of is be It DD in It be to to We to of to of at SP be to We M DF of be in be in of be In 济大学 硕士学位论文 目录 录 第 1章 引言 . 1 述 . 1 入式实时软件现状 . 1 外研究现状 . 1 内研究现状 . 2 天嵌入式软件现状和存在问题 . 2 要研究内容 . 2 文结构 . 3 第 2章 技术基础 . 5 . 5 . 6 理器介绍 . 8 . 8 8 指令集 . 8 . 9 8 汇编语言 . 9 语言 . 11 . 12 第 3章 软件开发模型 . 13 . 13 . 14 . 14 . 14 . 15 . 15 . 16 . 16 . 18 身可靠性取决的因素 . 18 . 19 . 20 . 20 . 21 第 4章 软件系统设计 . 22 . 22 同济大学 硕士学位论 文 目录 软件系统环境图 . 22 . 23 . 24 . 25 . 25 . 26 . 26 . 27 . 28 . 28 . 29 . 29 . 30 第 5章 软件实现 . 31 . 31 . 35 . 43 . 45 线数据发送程序 . 45 线数据接收程序 . 46 它 I/. 47 . 48 . 49 . 50 . 52 时 . 55 . 58 . 60 第 6章 验证平台搭建和测试 . 61 . 61 . 62 . 65 第 7章 结论与展望 . 66 致谢 . 67 参考文献 . 68 个人简历、在读期间发表的学术论文与研究成果 . 70 第 1 章 引言 1 第 1 章 引言 述 目前应用于航天器的处理器多为进口器件,如 类器件供货周期长、成本高,并存在由于国际政治军事因素而遭到禁运的潜在风险,因此 在 航天器 领域嵌入式系统 的国产化势在必行。 国产 1是西安 771所自主开发的一款 32位抗辐照处理器,支持的是 8 指令集。 按照用户要求, 在轨 实时嵌入式 软件 需要 定期测试处理器的各项功能、性能指标,并通过卫星及工业控制中常用的控制局域网( 线接口,将测试数据打包送往星务主机。本课题的研究 目的一方面在于 测试和验证国产处理器 空间环境下的使用情况,查找其中可能存在的缺陷,为下一阶段工程应用积累经验;另一方面可以研究和掌握适应航天器在轨自主管理的嵌入式实时软件的相关技术。 在轨测试系统还包括了各类国产外围 I/O 设备的在轨测试接口,国内有不少高校、科研单位自主研制可以用于空间环境下的 抗辐照大规模集成芯片,该系统可以具有外围可扩展性, 应用于 各种国产器件 的在轨测试验证,其中所设计的星载实时系统 软件采用 言分层设计实现, 不仅适应于所测 试的 理器,还 可以 通过修改底层模块的方法 移植到其它平台 。 它相比一般的嵌入式实时软件而言,具有一定的抗单粒子翻转( 能力,因此可以应用于大多数卫星工程中,支持卫星上的姿态计算与控制、数据远程传输和存储处理等业务。 入式实时软件 现状 外研究现状 美国高端星载计算机 是基于 系结构的 列处理器 2,而嵌入式系统软件采用的是 。 作系统是 司 开发的商用 于微内核抢占式实时系统, 以同济大学 硕士学位论文 基于 国产 轨实时系统的设计与实现 2 其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。欧空局为了摆脱美国对其空间研发能力的制约而独立开发了基于 7体系结构 的面向空间应用的微处理器: 辐射加固版本已经成熟使用于航天环境中。 2006 年 , 基于 8 的处理器也成功使用于航天工程。欧空局在 统 4,这也 是一个微内核抢占式的实时系统 。 1 内研究现状 国内星载嵌入式实时软件目前大多依赖进口处理器,如 8086、 80,在 台上也有应用 统作为星务管理和卫星姿态控制的,国产嵌入式实时系统 由 5。起初 一个实时的内核,但在发展过程中,时操作系统得到了来自全国嵌入式开发工程师的鼎力支持,为在它已慢慢变成一个完善的、全功能的操作系统 ,包括文件 系统 、 网络协议栈 、 图形界面组件 ,只是这套系统目前还未在 航天领域 中应用过。 天嵌入式软件现状和存在问题 我国航天五院在多个卫星项目中也采用了 院目前则在星载姿轨控软件( 数据管理( 件等软件的设计上已经采用了 言编写的静态优先级管理的嵌入式实时软件。 要 研究内容 随着处理器、存储器能力的提高和航天应用需求功能的复杂化、精确化,使得星载嵌入式实时软件需要划分为多个重要性不同的任务,在各任务间优化分配时还要保证可靠性。嵌 入式实时软件的核心在于实时钟的管理以及多任务之间的调度和信息传递。在目前的星上应用来说,包括周期性任务和响应外部激励的非周期性任务 6,系统设计时需要保证各个任务的时间约第 1 章 引言 3 束性, 及时对外部请求做出响应 ,这里采用国内外实时软件常用的基于优先级的可抢占调度方式 7。 在设备管理方面,由于星上 I/ 括 线通讯 8、 A/D、 D/应用软件则提供统一通用的 利于软件的移植性。在故障管理方面,软件需要适应空 间环境下单粒子翻转以及部分硬件可能失效的特点,采取冗余容错设计,采取故障诊断、故障修复以及对无法修复的故障进行隔离,系统功能采取恢复块设计,如果发现模块或组件发生故障,备份的模块或组件可以代替失效的模块或组件,从而达到系统重构 9的目的。 嵌入式软件开发日趋工程化,任务的研制周期不断缩短,迫使管理人员寻找一种有利于提高软件品质和开发效率的管理方式。测试驱动开发 10的基本思想就是在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动整个开发过程的进行。这有助于编写简洁可用和 高质量的代码,有很高的灵活性和健壮性,能快速响应变化,并加速开发过程,保证了所有模块的可测试性。基于此,星载 轨实时系统在一般的 V 型开发模型上又增加了测试驱动开发的理念。 文结构 第 1 章 引言 ,介绍项目开发背景,嵌入式实时软件国内外以及航天系统内的发展现状和存在问题,概述论文主要研究内容和编排结构。 第 2 章 技术基础,主要介绍项目所涉及的开发工具及语言,包括 发环境的配置和使用, 基于 交叉编译器、 8 指令集,8汇编语言, 。 第 3 章 软件开发模型 ,提出在传统瀑布模型基础上加入测试驱动开发和结对编程的概念和思路。 介绍了软件可靠性分析和设计,分析了影响软件可靠性的几种因素,介绍了软件恢复块技术,并建立了三模冗余表决的软件可靠性模型。 第 4 章 软件 系统 设计 ,介绍了软件设计的整体分层结构,软件与硬件,系统软件与应用软件之间的接口协议。 第 5 章 软件实现 ,按照软件的构架分模块介绍了 的设计,任务管理和调度,存储管理和三模冗余设计,通用设备管理,时钟管理 , 故障诊断和处理同济大学 硕士学位论文 基于 国产 轨实时系统的设计与实现 4 以及应用程序接口的设计 。 第 6 章 验 证平台搭建和测试 ,介绍了对系统实现后分别采用软件模拟仿真和目标机测试的具体情况。 第 7 章 结论与展望 ,对项目进行总结,并分析了目前系统存在的问题以及将来改进的方向。 此后是 致谢 和 参考文献 。 第 2 章 技术基础 5 第 2 章 技术基础 发环境的 初始 配置 由于开发软件所用的交叉编译器目前是基于 了易于开发调试,该项目的开发环境选择了基于 户界面 更为 友好的 1。 舍特尔沃斯创立,其首个版本于 2004年 10月 20日发布,并以 发蓝本 12。 这个系统 十分注重系统的安全性,其采用 有系统相关的任务均需使用此指令,并输入密码,比起传统以登入系统管理员帐号进行管理工作有更佳的安全性。 同时,它也 注重系统的可用性,其设计为在标准安装完成后即可以让使用者投入使用的操作系统。举例来说,完成安装后,使用者不用另外安装网页浏览器、办公室软件、多媒体软件与绘图软件等日常应用的软件,因为这些软件已被安装,并可随时使用 , 并能够与 算机轻松共享文件。 安装较为简单,本项目通过虚拟机 系统安装在 P 下,按照向导安装好系统,为实现与 统的文件共享,可在虚拟机下设置共享目录,见图 同济大学 硕士学位论文 基于 国产 轨实时系统的设计与实现 6 图 统共享目录设置 将开发所用的交叉编译器压缩包文件通过文件共享复制到 件系统中 : u/后,对压缩包进行解压,解压文件夹安装在 目录 / 置环境变量,其中包括编译器执行程序的路径、库函数所 在目录路径。 $此,开发环境设置完毕。 发环境的使用 开发环境包括了 语言交叉编译器 13、调试器以及其它开发工具包,如我们编辑一个 程序: #第 2 章 技术基础 7 ); ; 此外,为了编译流程能够自动化完成,一般需要编写 件, CC=K= C= Z= D= c (g -o T (-O ( (中, 此例中的 对目标文件进行反向工程,生成反编译的汇编代码和变量符号表。 在终端中 直接 输入命令: f 就可以对该程序进行编译、运行。 如果连接了开发板进行实际调试,可以用 序对软件进行远程在线调试。 同济大学 硕士学位论文 基于 国产 轨实时系统的设计与实现 8 理器介绍 点 本项目所基于的处理器是 国内科研单位开发的一款基于8体系结构的 32位 部采用 持够满足各种航天应用的功能和性能指标要求。 仅通过 口支持设备的快速扩展,提高了系统的可扩展性,而且提供了包括三模冗余寄存器、片上 偶校验等在内的多层次的容错设计 ,增强了系统的可靠性。 处理单元包含拥有 8 个寄存器堆窗口和采用 5 级流水线整数处理单元 ( 16两路组相联数据 32 4路组相联指令 具有支持单双精度浮点数据类型的浮点处理单元(14 。 片上外设包括支持 ,2 个 24 位定时器, 1 个看门狗, 3 个串行通信接口, 4 个外部可编程输入端口的中断控制器, 32 个通用 I/O 接 口,符合 范的 33 口,容错设计包括采用三模冗余和 U 容错,采用奇偶校验策略的 持 件调试单元包括带有跟踪冲器的调试支持单元 有 4个硬件观测点 15。 8 指令集 8指令集 16基本延续了 7 的架构,它有以下特点: 1) 指令 定长 8指令集中, 指令有三种格式,但 每条指令的大小相同 ,均为 32位 。 2) 只有 8 指令集中,对存储器的访问只限定在 两个指令上,相对 种汇编语言相对规范,减少了程序设计人员编写汇编程序时的错误 17。 3) 可扩展的精简寻址方式 第 2 章 技术基础 9 8 指令集中只有一些可以快速处理的寻址方式,如寄存器间接寻址方式和相对寻址方式。可 以扩展它的寻址方式,同时支持索引和寄存器寻址 18。 4) 指令流水线 流水线就像许多产品在不同点同时运行的装配线。在 8 架构处理器中,一条指令执行的同时,下一条就进行译码并且装载其操作数,同时,再下一条指令在取指令。通过重叠这些操作,即使每一条指令需要三个周期来取指、译码和执行,但是 一个时钟周期都执行了一条指令。这一重要特性增加了系统的吞吐量 (19。 5) 大量的寄存器 8架构处理器拥有大量的寄存器使得 需要操作数时 , 不是从内存中取得,这大大减少了访存的次数。寄存器也可以高效地向子程序传递参数,这是由寄存器窗口 20来完成的。 6) 延时载入和分支 8 架构使用了延时载入( 延时分支( 21来避免时间的浪费。其指令流水线利用延时载入使得 这一段会被浪费的时间内做有用的工作。 7) 指令的预测执行 程序中的一些指令根据实际情况可以被不执行。例如:一条条件跳转指令,如果转移成功,跳转到的指令将被执行;否则它将不执行。 在预测执行( , 行该指令但不存结果。如果指令将被执行,则存结果;否则,丢弃结果 22。 件开发语言支持 8 汇编语言 8 架构处理器具有精简的指令格式, 8 中所有指令都是 32位宽和以 32为分界对齐排列的。只有 3种基本指令格式,并且只有 ,使得编程更简单、高效。 同济大学 硕士学位论文 基于 国产 轨实时系统的设计与实现 10 在 8 处理器中,其格式是严格的 4 字节指令,每条指令都是 4 个字节。 8 指令集是以 32 位二进制编码的方式给出的,共有三种主要的 32位二进制编码方式。我们知道,对于一条汇编指令语句来说,通常由操作码和操作数两个域组成,而其中操作数又有三种可能 无操作数(如格式 1)、有一个操作数(如格式 2),有两个操作数(如格式 3)。在 ,大部分操作数是三个一组的 23。这些指令格式,具体如图 图 令格式 由上图,我们可以知道,在 8 指令集中,大部分指令的编码格式是第三种。其中, 浮点指令操作码, 用寄存器地址 (源操作数 ), 如:加法指令 : 中, 扩展符号立即数; i=0,第二操作数在 , i=1,第二操作数为 (位移量, 移量 30 位。 (条件码,为分支指令的条件选择 。 8 架构支持的基本寻址有三种,它们分别是:立即寻址,寄存器寻址,寄存器间接寻址。所有的寻址方式都有一个共性,他们的有效地址能够在一个时钟周期内计算出来。 具体用来编程实现 的指令可 分为以下 6 类,共 72 条基本操作指令:其中包括了 31条算术运算 /逻辑运算 /移位指令, 22 条 5 条控制转移指令, 8条读 /写专用寄存器指令,浮点运算指令和协处理器指令。 在本项目中,面向底层硬件的程序,如 动代码( 设备驱动第 2 章 技术基础 11 程序一般采用汇编语言直接实现。 语言 对于大部分结构化的系统 软件和应用软件 , 本项目中 采用 C 语言实现 ,软件编程使用的 99( 1999年 9899:1999) 24。 在 1) 增加了对编译器 的限制,比如源程序每行要求至少支持到 4095 字节,变量名函数名的要求支持到 63 字节( 求支持到 31)。 2) 增强了 宏的 预处理功能。例如: 宏 支持取可变参数 #.) _用 宏 的时候,允许省略参数,被省略的参数会被扩展成空串。 3) 支持 / 开头的单行注释(这个特性实际上在 很多编译器上已经被支持了) 4) 增加了新关键字 _5) 支持 类型 6) 初始化结构的时候允许对特定的元素赋值,形式为: a3, b; = 0 1, 1 2 ; a, b, c, d; 1, 3, 4, 5 / 3,4 是对 d 赋值的 7) 浮点数的内部数据描述支持了新标准,可以使用 #译器指令指定。 8) 除了已有的 _外,增加了 _到当前的函数名。 9) 输入输出对宽字符以及长整数等做了相应的支持。 此外,由于 语法限制不太严格,对变量的类型约束不严格, 如 对数组 下标越界不作检查 ,类型检查较为宽松 等, 如果编程上不加注意,则会 影响程序的安全性 25。 基于此特点,我们在嵌入式软件编程中遵循一套严格的编程规范规定 : 1) 限制使用 句、递归调用; 2) 程序中编程实现越界检查或下标限制; 同济大学 硕士学位论文 基于 国产 轨实时系统的设计与实现 12 3) 在循环中限制使用 禁止使用 4) 不同类型变量赋值,必须作类型转换,并且保证数据长度匹配; 5) 根据软件难易程度,对单个子程序规模和圈复杂度进行限制 ; 6) 在子程序设计中,必须对入口参数进行范围判断,剔除超出范围的野值; 7) 注释清楚简洁,无二义性,统一放在对应语句的上方 ; 8) 变 量定义时必须赋予一个确定的初值 ; 9) 从系统性能除法,运算中尽量用移位操作代替加减法操作,用乘法操作代替除法操作。 章小结 在本章中探讨了软件项目的技术基础,其中包括开发环境的配置,开发工具软件的安装以及使用,本项目涉及的 及 8指令体系的介绍,编程语言 8汇编语言和 特点。 第 3 章 软件开发模型 13 第 3 章 软件开发模型 统开发模型分析 传统的软件开发模型是 V 字型的瀑布模型, 是 1970 年 出来的,典型的瀑布模型一般包括:系统需求定义、软件需求分析、软件 设计(也可细分为概要设计和详细设计)、软件实现和软件测试(包括单元测试、组装测试和确认测试)验证阶段 26,见图 需 需 需 需需 需 需 需需 需 需 需需 需 需 需需 需 需 需需 需 需 需需 需 需 需图 布式 软件开发模型 在传统瀑布型开发模型中,一般采用系统结构驱动开发的方式,用户需求定义完毕后,按部就班地按照 种开发方式具有 阶段划分严谨、文档支持强的优点,但是也存在对需求变更的响应不太灵活和早期错误不易发现的问题,特别是在需求定义阶段的错误直到确认测试或者用户验收时才能发现,经常会造成软件的颠覆 性修改。 因此,在保留传统瀑布模型优点的同时,为避免瀑布模型存在的问题,这里加入了测试驱动开发的新型 开发方法。 同济大学 硕士学位论文 基于 国产 轨实时系统的设计与实现 14 试驱动开发介绍 测试驱动开发 ( 的基本思想就是在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动整个开发过程的进行。这有助于编写简洁可用和高质量的代码,有很高的灵活性和健壮性,能快速响应变化,并加速开发过程 27。 测试驱动开发主要包括两方面内容:测试先行和代码重构。测试驱动开发一反传统开发方式下先编写代码再做单元测试的做法,而将单元测试用例的编写 放在代码实现之前。重构则是在不改变代码外在行为的条件下改进其内部行为的一种软件系统改变过程,使其往松耦合、高内聚方向发展。 测试驱动开发一般的过程如下: 从用户需求出发,快速新增一个测试用例; 1) 编译代码,刚写的测试用例一般通不过; 2) 作尽可能小的改动,以使编译能够通过; 3) 运行所有的测试,并且全部通过 ; 4) 重构代码,以消除重复设计,优化设计结构 28。 试驱动开发的优缺点 试驱动开发的优点 测试驱动开发相对于传统的软件开发方式,具有以下特点: 1)测试驱动开发 根据客户需求编写 测试用例,对功能的过程和接口都进行了设计,而且这种从使用者角度对代码进行的设计通常更符合后期开发的需求。因为关注用户反馈,可以及时响应需求变更,同时因为从使用者角度出发的简单设计,也可以更快地适应变化 ; 2) 出于易测试和测试独立性的要求, 测试驱动开发 促使 开发者 实现松耦合的设计,并更多地依赖于接口而非具体的类,提高系统的可扩展性和抗变性 ,从而 明显地缩短了设计决策的反馈循环 ; 3)测试驱动开发 将测试工作提到编码之前,并频繁地运行所有测试,可以第 3 章 软件开发模型 15 尽量地避免和尽早地发现错误,降低了后续测试及修复的成本,提高了代码的质量。在测试的保护下,不断重构代码,以消除重复设计,优化设计结构,提高了代码的重用性,从而提高了软件产品的质量 ; 4)测试驱动开发 提供了持续的回归测试, 便于开发者对代码进行 重构,因为代码的改动导致系统其他部分产生任何异常,测试都会立刻通知我们。完整的测试会帮助我们持续地跟踪整个系统的状态,因此 可以避免一些软件潜通路问题; 5)系统可以与详细的测试 用例 集一起发布,从而对程序将来版本的更改和扩展提供方便; 6)由于编写测试用例和代码过程上统一,降低了测试人员理解代码所花费的成本 29。 试驱动开发的 缺点 根据已采用测试驱动开发的人员评价,测试驱动方法也存在以下问题: 1)开发者可能只完成满足了测试的代码,而忽略了对实际需求的实现; 2)会放慢开发实际代码的速度,特别对于要求开发速度的原型开发造成不利; 3)对于图形化用户界面( 资料库和 用而言。构造单元测试比较困难,如果强行构造单元测试,反而给维护带来额外的工作量; 4)使

温馨提示

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

评论

0/150

提交评论