在ARM平臺(tái)上移植linux操作系統(tǒng)--論文_第1頁(yè)
在ARM平臺(tái)上移植linux操作系統(tǒng)--論文_第2頁(yè)
在ARM平臺(tái)上移植linux操作系統(tǒng)--論文_第3頁(yè)
在ARM平臺(tái)上移植linux操作系統(tǒng)--論文_第4頁(yè)
在ARM平臺(tái)上移植linux操作系統(tǒng)--論文_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、科技學(xué)院計(jì)算機(jī)學(xué)院綜合性實(shí)驗(yàn) 結(jié)課論文 論文題目 在ARM平臺(tái)上移植linux 操作系統(tǒng) 實(shí)驗(yàn)學(xué)期2016 至 2017 學(xué)年 第 1 學(xué) 期 學(xué)生所在學(xué)院部 計(jì)算機(jī)學(xué)院 年級(jí)專業(yè)班級(jí) 學(xué)生姓名學(xué)號(hào) 任課教師 實(shí)驗(yàn)成績(jī) 計(jì)算機(jī)學(xué)院制 科技學(xué)院計(jì)算機(jī)學(xué)院綜合性實(shí)驗(yàn)報(bào)告 課程結(jié)課論文評(píng)價(jià) 教 師 評(píng) 序號(hào) 評(píng)定項(xiàng)目 A B C D E 1 課程學(xué)習(xí)的態(tài)度與紀(jì)律 2 結(jié)課論文的格式規(guī)范和字?jǐn)?shù) 3 結(jié)課論文內(nèi)容翔實(shí)與完整程度 4 結(jié)課論文研究?jī)?nèi)容與課程的關(guān)聯(lián)度 5 結(jié)課論文研究的深度 6 總評(píng) 第19頁(yè) 價(jià)評(píng)價(jià)標(biāo)準(zhǔn): 1. 表格第一行中的A、B、C、D E分別對(duì)應(yīng)優(yōu)、良、中、及格、不及格。 2. 學(xué)生

2、結(jié)課論文的總評(píng)成績(jī)分為優(yōu)、良、中、及格、不及格5個(gè)等級(jí),分別 對(duì)應(yīng) 95、85、75、65、55。 優(yōu)秀:所有評(píng)價(jià)項(xiàng)目中都是 B以上,且至少獲得 4個(gè)A; 良好:所有評(píng)價(jià)項(xiàng)目中都是 C以上,且至少獲得 4個(gè)B或A; 中等:所有評(píng)價(jià)項(xiàng)目中都是 D以上,且至少獲得 4個(gè)C或以上; 及格:所有評(píng)價(jià)項(xiàng)目中都是 D以上; 不及格:符合以下條件之一的: (1)評(píng)價(jià)項(xiàng)目中只要有一項(xiàng)是 E; (2)課程學(xué)習(xí)期間無(wú)視課程紀(jì)律,未能參加課程學(xué)習(xí)的時(shí)間超過(guò) 全部時(shí)間的三分之一以上; (3)課程學(xué)習(xí)目的不明確,結(jié)課論文報(bào)告馬虎潦草或內(nèi)容與課程學(xué)習(xí)內(nèi) 容不符,未達(dá)到課程學(xué)習(xí)中規(guī)定的基本要求; (4)大部分內(nèi)容抄襲別人或

3、網(wǎng)上的內(nèi)容。 在ARM 平臺(tái)上移植linux操作系統(tǒng) 摘要:在ARM平臺(tái)上移植linux操作系統(tǒng)作為實(shí)現(xiàn)設(shè)備小型化、智能化的 一個(gè)重要元素,目前己經(jīng)廣泛應(yīng)用于國(guó)防、工業(yè)、交通、能源、信息技 術(shù)以及日常生活等各個(gè)領(lǐng)域,研究和開(kāi)發(fā)linux操作系統(tǒng)在ARM平臺(tái)上 的移植具有重要的現(xiàn)實(shí)意義。本文主要介紹了將公開(kāi)源代碼的 linux3.3.3內(nèi)核移植到S3C6410(arm1172核)的關(guān)鍵技術(shù)分析以及具 體的移植過(guò)程,建立嵌入式 Linux交叉開(kāi)發(fā)環(huán)境,移植BootLoader弓I導(dǎo) 程序,配置、編譯、移植Linux內(nèi)核,制作文件系統(tǒng)并對(duì)文件系統(tǒng)進(jìn)行移 植到開(kāi)發(fā)板。我們可以根據(jù)內(nèi)核所支持的文件系統(tǒng)類(lèi)

4、型制作文件系統(tǒng)本 論文選擇制作yaffs文件系統(tǒng)并移植。并且 vim,arm-linux-gcc開(kāi)發(fā)環(huán) 境下設(shè)計(jì)了一個(gè)簡(jiǎn)單的測(cè)試程序。另外,基于此平臺(tái)的開(kāi)發(fā)也將使軟件 缺陷大幅度減少,從而為程序員開(kāi)發(fā)此平臺(tái)上進(jìn)行二次開(kāi)發(fā)。 關(guān)鍵字:linux 嵌入式 移植 內(nèi)核 配置 目錄 1緒論4 1.1課題研究的背景、目的和意義 4 2嵌入式 Linux系統(tǒng)構(gòu)成和軟件開(kāi)發(fā)環(huán)境 5 2.1 嵌入式 Linux 系統(tǒng)的體系結(jié)構(gòu) 5 2.2嵌入式Linux開(kāi)發(fā)軟件平臺(tái)建立 5 2.2.1軟件開(kāi)發(fā)平臺(tái)的二種平臺(tái)的介紹 5 3嵌入式 Linux 的弓丨導(dǎo) BootLoader 程序 6 4.Linux內(nèi)核的編譯、移

5、植 6 4.1 Linux內(nèi)核啟動(dòng)流程 6 4.2內(nèi)核移植的實(shí)現(xiàn)7 4.3配置、編譯內(nèi)核9 5文件系統(tǒng)制作11 5.1內(nèi)核支持YAFFS文件系統(tǒng) 12 6測(cè)試15 6.1編寫(xiě)簡(jiǎn)單C程序測(cè)試移植的系統(tǒng) 15 6.2在開(kāi)發(fā)板執(zhí)行測(cè)試程序 15 7結(jié)論與展望16 1緒論 1.1課題研究的背景、目的和意義 隨著各種芯片技術(shù)的發(fā)展,各種嵌入式產(chǎn)品也如雨后春筍一般地出現(xiàn)了。目前, 嵌入式產(chǎn)品應(yīng)用領(lǐng)域涉及移動(dòng)通信、汽車(chē)、醫(yī)療、家電等很多領(lǐng)域。而且,如今的 嵌入式硬件的速度和容量越來(lái)越接近于 PC,因此在這些嵌入式產(chǎn)品上運(yùn)行操作系統(tǒng) 就成為了可能。一直以來(lái),很多企業(yè)花費(fèi)了巨大成本研發(fā)了大量運(yùn)行在PC上的軟件

6、產(chǎn)品。如果將這些優(yōu)秀的軟件應(yīng)用在嵌入式系統(tǒng)中,將會(huì)成為快速開(kāi)發(fā)嵌入式系統(tǒng), 降低嵌入式產(chǎn)品開(kāi)發(fā)成本,提高軟件穩(wěn)定性和安全性的重要途徑。 2嵌入式Linux系統(tǒng)構(gòu)成和軟件開(kāi)發(fā)環(huán)境 進(jìn)行嵌入式操作系統(tǒng)以及驅(qū)動(dòng)程序的移植,需要對(duì)目標(biāo)硬件平臺(tái)和軟件結(jié)構(gòu)有 深入的理解。本章介紹嵌入式 Linux系統(tǒng)的體系結(jié)構(gòu)、硬件平臺(tái)構(gòu)成和嵌入式軟件 開(kāi)發(fā)環(huán)境。 2.1嵌入式Linux系統(tǒng)的體系結(jié)構(gòu) 除了硬件系統(tǒng)外,嵌入式 Linux系統(tǒng)需要有下面三個(gè)基本元素:系統(tǒng)引導(dǎo)程序 BootLoader(用于設(shè)備加電后的系統(tǒng)定位引導(dǎo))、Linux微內(nèi)核(內(nèi)存管理、程序管理)、 初始化進(jìn)程。但如果要它成為完整的操作系統(tǒng)并繼續(xù)保持

7、小型化還必須加上硬件驅(qū) 動(dòng)程序、硬件接口程序和應(yīng)用程序組。最終可用的嵌入式Linux系統(tǒng)體系結(jié)構(gòu)如表 所示: 表2-1嵌入式Linux系統(tǒng)體系結(jié)構(gòu) 應(yīng)用軟件 應(yīng)用層 BOOTLOADERLINUX KERNEL DRIVERS 系統(tǒng)層 嵌入式開(kāi)發(fā)板實(shí)驗(yàn)板 (本論文使用 SAMSUNG S3C64) 硬件層 2.2嵌入式Linux開(kāi)發(fā)軟件平臺(tái)建立 軟件開(kāi)發(fā)平臺(tái)是嵌入式開(kāi)發(fā)的關(guān)鍵,嵌入式軟件開(kāi)發(fā)平臺(tái)建立的目的是為了進(jìn) 行BootLoader移植、Linux內(nèi)核移植以及GUI系統(tǒng)開(kāi)發(fā)。由于嵌入式硬件平臺(tái)的存 儲(chǔ)空間有限、處理器頻率較低,很難直接在嵌入式硬件式平臺(tái)上建立Linux系統(tǒng)、 安裝嵌入式開(kāi)發(fā)

8、軟件,因此只能采用嵌入式交叉開(kāi)發(fā)環(huán)境來(lái)解決這個(gè)問(wèn)題。 2.2.1軟件開(kāi)發(fā)平臺(tái)的二種平臺(tái)的介紹 嵌入式Linux系統(tǒng)開(kāi)發(fā)需要一臺(tái)裝有Linux操作系統(tǒng)的PC機(jī),在此機(jī)器上運(yùn)行 交叉編譯工具,Linux系統(tǒng)采用FC5具體有以下幾種方案: 1)采用 VMWare 2)按通常的方法,在獨(dú)立的分區(qū)上安裝Linux操作系統(tǒng)。但是安裝2個(gè)系統(tǒng)需 要用的grub,需要配置修改啟動(dòng)項(xiàng),而且刪除此 Linux操作系統(tǒng)很麻煩。 3嵌入式Linux的引導(dǎo) ootLoader 程序 引導(dǎo)BootLoader程序是為了初始化ARM平臺(tái)上的硬件設(shè)備,引導(dǎo)內(nèi)核,給 內(nèi)核提供ARM平臺(tái)的硬件參數(shù),還有為操作系統(tǒng)引導(dǎo)根文件系統(tǒng)。

9、 4丄inux內(nèi)核的編譯、移植 內(nèi)核是操作系統(tǒng)的核心組件。使用內(nèi)核的目的是希望以一致的方式管理硬 件,以及為用戶軟件提供高層抽象層。Linux會(huì)驅(qū)動(dòng)設(shè)備、管理I/O的存取、調(diào) 度進(jìn)程、共享存儲(chǔ)空間、管理信號(hào)的配送以及處理其他管理工作。 4.1 Linux內(nèi)核啟動(dòng)流程 在移植的調(diào)試階段,在沒(méi)有在線仿真器的情況下,可以通過(guò)板上LED的狀態(tài)輸 出或串口輸出的調(diào)試信息進(jìn)行錯(cuò)誤定位,所以有必要了解一下內(nèi)核的啟動(dòng)流程,圖 4-1對(duì)此做來(lái)解釋。 內(nèi)核在啟動(dòng)的過(guò)程中按下圖步驟一步一步啟動(dòng),了解啟動(dòng)的順序,有利于 掌握好內(nèi)核移植的工作安排過(guò)程。 圖4-1內(nèi)核啟動(dòng)流程圖 4.2內(nèi)核移植的實(shí)現(xiàn) 在Linux內(nèi)核移植

10、的初始階段,應(yīng)盡可能屏蔽不相關(guān)的設(shè)備驅(qū)動(dòng)以及內(nèi)核功能 配置選項(xiàng),使內(nèi)核支持的選項(xiàng)盡可能的少,構(gòu)造最小內(nèi)核。在確保己經(jīng)進(jìn)行的內(nèi)核 移植操作正確的情況下逐步的添加相應(yīng)的硬件支持和功能支持。 Makefile文件介紹 Make是用來(lái)自動(dòng)編譯、鏈接程序的實(shí)用工具,Make命令將根據(jù)Makefile文件 的規(guī)則來(lái)決定如何編譯和連接程序。Makefile文件描述程序之間的依賴關(guān)系,以及 提供更新文件的命令。Makefile 文件貫穿內(nèi)核代碼目錄,所有Makefile中的 CROSS_COMPI關(guān)鍵字用于指定要進(jìn)行交叉編譯工具鏈,ARCH關(guān)鍵字用于指定目標(biāo) 平臺(tái),所以這里改為: CROSS_COMPILE

11、? = arm-li nux- ARCH ? = arm 2)arch/ARM/co nfig. in 文件 config.in 是配置文件,運(yùn)行 make menuconfig 命令時(shí)出現(xiàn)的菜單就是 config 配置的。config文件決定了 menuconfig菜單的內(nèi)容。把使用的平臺(tái)加在需要的地方, 這樣在配置Linux內(nèi)核時(shí)就能夠選擇是否支持新添加的平臺(tái)了。 3) arch/arm/Makefile 根目錄下的Makefile,指定了交叉編譯器arch/ARM/Makefile 更具針對(duì)性,系 統(tǒng)啟動(dòng)代碼是通過(guò)這個(gè)文件產(chǎn)生的。在內(nèi)核添加對(duì) S3C2410處理器的支持。其代碼 如下:

12、ifeq 倂(CONFIG_ARCH_S3C2410) y) TEXTADDR= 0 xC0008000 MACHINE= s3c2410 en dif TEXTADD為內(nèi)核解壓的起始地址,決定內(nèi)核起始運(yùn)行地址,即內(nèi)核映像應(yīng)下載 的位置,根據(jù)開(kāi)發(fā)板的電路設(shè)計(jì), 這個(gè)地址是OxC0008000這里0 xC0008000的含義 是,從地址0 xC0000000開(kāi)始,總共32M字節(jié)的空間。 4) compressed/Makefile 添加對(duì)本文開(kāi)發(fā)板的支持。通過(guò)這個(gè)文件,將從vmLinux創(chuàng)建一個(gè)壓縮的vmlinuz 鏡像。 ifeq(#(CONFIG_ARCH_S3C6410) y) objs

13、+= head-s3c6410.o En dif 5) compressed/head_s3c641O.S 這個(gè)文件是依據(jù)S3C6410的芯片手冊(cè)編寫(xiě)的,主要用來(lái)初始化處理器。主要完 成到對(duì)系統(tǒng)主要模塊的配置、運(yùn)行環(huán)境的建立、系統(tǒng)時(shí)鐘、MM等模塊的配置等。 6) arch/arm/kernel/Makefile Makefile的作用是根據(jù)配置的情況,構(gòu)造出需要編譯的源文件列表,然后分別 編譯,并把目標(biāo)代碼鏈接到一起,最終形成Linux內(nèi)核二進(jìn)制文件。 7) debug_armv.S 在此文件中定義串口打印函數(shù),關(guān)閉全部外圍設(shè)備的時(shí)鐘,從而保證系統(tǒng)正確 運(yùn)行。 8) setup.c 這個(gè)文件中

14、一個(gè)非常重要的函數(shù)是 setup_arch。這個(gè)函數(shù)用來(lái)完成和體系相關(guān) 的初始化工作,比如對(duì)物理內(nèi)存結(jié)構(gòu)meminfo的初始化。這個(gè)結(jié)構(gòu)在內(nèi)存初始化中 有很重要的作用。其中,nBanks指定了內(nèi)存塊的數(shù)量,bank指定了每塊內(nèi)存的范圍。 在這里用來(lái)指定塊開(kāi)始和長(zhǎng)度的PAGE_OFFSE和 MEM_SIZE都定義在 includelasm-ARM/arch-s3c6410/memory.h 中,PAGE_OFFSET內(nèi)存的開(kāi)始地址,往 后函數(shù)就將根據(jù)meminfo進(jìn)行內(nèi)存結(jié)構(gòu)初始化。 9) arch/ARM/mach-s3c6410 發(fā)布的代碼只對(duì)處理器的基本信息提供了支持,有關(guān)開(kāi)發(fā)板的外設(shè),例

15、如USB 電源管理等都需要自己添加。 4.3配置、編譯內(nèi)核 編譯內(nèi)核之前首先要配置內(nèi)核,配置內(nèi)核的命令包括 1) make s3c6400_defco nfig 這種方法將配置選項(xiàng)以命令行的形式列出,會(huì)恢復(fù)內(nèi)核的默認(rèn)配置。如果己經(jīng) 存在有.config的配置文件,那么就會(huì)以該文件中的配置選項(xiàng)作為默認(rèn)配置設(shè)置。 2) make menuconfig 與make config類(lèi)似,不過(guò)這種方法的顯示方式是以菜單模式進(jìn)行顯示的 Make xconfig使用鼠標(biāo)選擇對(duì)應(yīng)的選項(xiàng),make menuconfig使用空格選擇相應(yīng) 的選項(xiàng),每個(gè)選項(xiàng)前的括號(hào)可以是、和()。中括號(hào)中要么是空格,要么是*, 尖括號(hào)

16、里可以是空格、*和M小括號(hào)里的內(nèi)容是在所提供的幾個(gè)選項(xiàng)里選擇一個(gè)。 空格表示不將該功能編譯進(jìn)內(nèi)核,*表示將該功能編譯進(jìn)內(nèi)核,M表示將該功能編譯 成模塊,在需要時(shí)將其動(dòng)態(tài)插入到內(nèi)核。 3)make xconfig(不推薦使用) 用于X Window下的配置,將配置選項(xiàng)以圖形菜單的形式顯示出來(lái)。 在進(jìn)行相應(yīng)的配置的時(shí)候,有三種方式選擇: 丫:將該功能編譯進(jìn)內(nèi)核; N:不將該功能編譯進(jìn)內(nèi)核; M:將該功能編譯成可譯載需要時(shí)動(dòng)態(tài)插入到內(nèi)核的模塊。 make xconfig 使用鼠標(biāo)選擇對(duì)應(yīng)的選項(xiàng), make menuconfig 使用空格選擇相應(yīng) 的選項(xiàng),每個(gè)選項(xiàng)前的括號(hào)可以是、和()。中括號(hào)中要么是

17、空格,要么是*,尖 括號(hào)里可以是空格、*和M小括號(hào)里的內(nèi)容是在所提供的幾個(gè)選項(xiàng)里選擇一個(gè)。空 格表示不將該功能編譯進(jìn)內(nèi)核,*表示將該功能編譯進(jìn)內(nèi)核,M表示將該功能編譯成 模塊,在需要時(shí)將其動(dòng)態(tài)插入到內(nèi)核。 1) 執(zhí)行make -j2 zImage 生成可以移植到開(kāi)發(fā)板的 zlmage。 其中-j2表示使用雙核編譯,加快編譯速度。 使用zlmage自解壓內(nèi)核鏡像。 J LTUA Llilljh/J LIUIH I IIIUJJ OBJCOPY arch/arm/boot/Iniage Kernel: arch/arm/boot/Image is ready AS arch/arm/boot/co

18、mpressed/head.0 GZIP arch/arm/boot/compressed/piggy.gip CC arch/arm/o CCarch/arm/baot/compressed/decoinpress. o CC arch/arm/boot/compressed/string.o SHIPPED arch/arm/boot/compressed/liblfuncs,S AS arch/arm/boot/compressed/piggy*gzip.o ASarch/arm/boot/compressed/liblfuncs.o LDarch/arm/boot/compressed

19、/vmlinux OBJCOPY arch/arm/boot/zlmage Kernel: arch/arm/boot/zlmage is ready wot世ubuntu:/linux-:3nj# | 圖4-3內(nèi)核zlmage生成的界面 2) make modules 此命令可以完成對(duì)所選的內(nèi)核選項(xiàng)進(jìn)行組件化編譯,所需時(shí)間取決于所選的內(nèi) 核組件選項(xiàng)的多少。還可以使用命令: # make modules SUBDIRS = drivers/x 將編譯好的U-Boot.bin、zlmage、rootfs 文件系統(tǒng)放在linux系統(tǒng)下的tftpboot 下面以便燒寫(xiě),tftp和nfs配置在第二章已

20、經(jīng)講過(guò),配置好可以執(zhí)行下面操作進(jìn)行 對(duì)內(nèi)核、文件系統(tǒng)的燒寫(xiě): 1) 移植 uboot 連接好 JTAG并口線,用./JLASH_2410EP_Nor /f:u-boot.bin 2) 移植內(nèi)核 tftp 0 x500080000 zImage /* bootm 0 x500080000/* 3) 移植文件系統(tǒng) tftp 0 x50000000 rootfs /* nand 0 x50000000 0 x200000 /* 下載內(nèi)核到開(kāi)發(fā)板*/ 啟動(dòng)內(nèi)核*/ 下載文件系統(tǒng)到開(kāi)發(fā)板*/ 將rootfs燒入開(kāi)發(fā)板*/ 移植好的內(nèi)核啟動(dòng)在超級(jí)終端會(huì)可以看到如下所示: TFTP from server

21、3; our IP address is 192.1 prin tf(Tha nks Erveybody!n); return 0 ; 編寫(xiě)好之后保存退出hello.c,執(zhí)行以下命令: # arm-linux-gee - o hello.c hello(生成可運(yùn)行的二進(jìn)制 hello 文件) # cp hello /udisk 將會(huì)生成一個(gè)可以在開(kāi)發(fā)板運(yùn)行的二進(jìn)制文件hello,將hello拷貝到U盤(pán)以便 測(cè)試。 6.2在開(kāi)發(fā)板執(zhí)行測(cè)試程序 將U盤(pán)插入開(kāi)發(fā)板的USB接 口,并在windows超級(jí)終端下面執(zhí)行如下命令: # cd udisk # ./hello 此時(shí)可以在超

22、級(jí)終端下看到如下測(cè)試信息: mmc 1: res cant ry_f req: trying ta init mmc1: mmc rescan try freq: trying to init mmc1: mmcrescan_try_freq: trying to init card card card at at at 300000 HZ 20QC0Q Hlz 100000 Hz Welcome to Root FileSystem! 車(chē)字*車(chē)事學(xué)牢車(chē)議牢字*牢車(chē)囂卓車(chē)髯中車(chē)竈卓車(chē)事車(chē)卓搴眾草字寧卓乍*牢車(chē)寧 Please press Enter to activate this console # ./a,out hello arm! Thank Evenybady 圖6-1測(cè)試結(jié)果 在windows終端下面可以看到hello.c 在開(kāi)發(fā)板上實(shí)現(xiàn)的內(nèi)容,這說(shuō)明內(nèi)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論