邊緣計(jì)算原理與JETSON平臺(tái)開發(fā) 課件 第3章 JETSON嵌入式平臺(tái)_第1頁
邊緣計(jì)算原理與JETSON平臺(tái)開發(fā) 課件 第3章 JETSON嵌入式平臺(tái)_第2頁
邊緣計(jì)算原理與JETSON平臺(tái)開發(fā) 課件 第3章 JETSON嵌入式平臺(tái)_第3頁
邊緣計(jì)算原理與JETSON平臺(tái)開發(fā) 課件 第3章 JETSON嵌入式平臺(tái)_第4頁
邊緣計(jì)算原理與JETSON平臺(tái)開發(fā) 課件 第3章 JETSON嵌入式平臺(tái)_第5頁
已閱讀5頁,還剩123頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章JETSON嵌入式平臺(tái)3.1

JETSON平臺(tái)簡介3.2

JETSON平臺(tái)硬件資源介紹3.3

JETSON平臺(tái)軟件資源介紹

NVIDIAJETSON嵌入式平臺(tái)(簡稱JETSON平臺(tái))提供的性能可提高自主機(jī)器軟件的運(yùn)行速度,而且功耗更低。JETSON平臺(tái)的每個(gè)系統(tǒng)都是一個(gè)完備的模塊化系統(tǒng)(SOM),具備CPU、GPU、電源管理集成芯片(PowerManagementIntegratedCircuit,PMIC)、動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DynamicRandomAccessMemory,DRAM)和閃存,可節(jié)省開發(fā)時(shí)間和資金。JETSON平臺(tái)還具備可擴(kuò)展性,用戶只需要選擇適合應(yīng)用場合的SOM,就能構(gòu)建自定義系統(tǒng),滿足特定的應(yīng)用需求。

3.1JETSON平臺(tái)簡介

2015年11月,NVIDIA嵌入式開發(fā)板家族迎來了第一個(gè)成員——JETSONTX1,其設(shè)計(jì)緊湊的、只有50?mm?×?90?mm的JETSONTX核心板包含了NVIDIATegraX1core、板載Wi-Fi和Bluetooth、帶風(fēng)扇的散熱片和工業(yè)連接器。JETSONTX1開發(fā)模組旨在針對(duì)機(jī)器人、無人機(jī)等的應(yīng)用,其核心模組和開發(fā)人員套件外形如圖3.1所示。

圖3.1JETSONTX1的核心模組和開發(fā)人員套件外形

2017年3月,JETSONTX1的升級(jí)版JETSONTX2問世。JETSONTX1的配置是TegraX1+4GBLPDDR4,GPU是擁有256個(gè)CUDA核心的NVIDIAMaxwell架構(gòu),而JETSONTX2則升級(jí)為TegraParker處理器,CPU部分也升級(jí)為NVIDIAPascal架構(gòu),同樣是擁有256個(gè)CUDA核心,但其性能提高了50%。JETSONTX2可在像信用卡大小的模塊中提供1萬億次浮點(diǎn)計(jì)算性能,其核心模組和開發(fā)人員套件外形如圖3.2所示。

圖3.2JETSONTX2的核心模組和開發(fā)人員套件外形

2018年6月,一款重量級(jí)的JETSON家族成員JETSONXavier問世。作為NVIDIAISAAC平臺(tái)的核心,JETSONXavier是全球首款專為機(jī)器人設(shè)計(jì)的智能芯片。它有6個(gè)處理器,包括1個(gè)VoltaTensorCoreCPU、1個(gè)8核ARM64CPU、2個(gè)NVIDIA深度學(xué)習(xí)加速器、1個(gè)圖像處理器和1個(gè)視頻處理器,每秒可執(zhí)行30萬億次操作,其處理能力與配備了10萬美元GPU的工作站大致相當(dāng),但功耗僅為30?W。JETSONXavier的核心模組如圖3.3所示。

圖3.3JETSONXavier的核心模組

019年3月,在硅谷召開的GTC(GPUTechnologyConference)大會(huì)上,NVIDIA的CEO黃仁勛又發(fā)布了一款輕量級(jí)的、為機(jī)器人開發(fā)人員量身定制的工具套件——

JETSONNano。JETSONNano搭載了4核Cortex-A57處理器,CPU則是擁有128個(gè)CUDA核心的NVIDIAMaxwell架構(gòu),可以提供472千兆浮點(diǎn)計(jì)算性能,而功耗卻低至5?W。雖然其計(jì)算能力不及JETSONXavier和JETSONTX2,但其價(jià)格僅為JETSONXavier的1/7,在各種提供邊緣計(jì)算功能的開發(fā)板中具有最高性價(jià)比。JETSONNano的核心模組和開發(fā)人員套件外形如圖3.4所示。

圖3.4JETSONNano的核心模組和開發(fā)人員套件外形

NVIDIA迄今為止推出的4款嵌入式人工智能平臺(tái)的參數(shù)及性能對(duì)比見表3.1。

3.2JETSON平臺(tái)硬件資源介紹3.2.1JETSON平臺(tái)網(wǎng)絡(luò)接口JETSON平臺(tái)在硬件資源方面不僅具有USB、HDMI、以太網(wǎng)等常規(guī)輸入/輸出(I/O)接口,還具有豐富的硬件可擴(kuò)展接口資源,為開發(fā)人員進(jìn)行擴(kuò)展應(yīng)用提供了無限可能。開發(fā)人員不僅可以通過UART(異步收發(fā)傳輸器)、GPIO(通用型輸入/輸出)、I2C(總線)等外設(shè)接口實(shí)現(xiàn)其他單片機(jī)、嵌入式系統(tǒng)的所有功能,還可以通過自身強(qiáng)大的性能,勝任其他單片機(jī)、嵌入式系統(tǒng)無力支撐的高數(shù)據(jù)密度業(yè)務(wù)和高處理實(shí)時(shí)性業(yè)務(wù),如智能機(jī)器人、無人駕駛汽車等。

1.?JETSON平臺(tái)的網(wǎng)絡(luò)接口

JETSON平臺(tái)支持千兆有線網(wǎng)絡(luò)接口,而且網(wǎng)絡(luò)接入速度穩(wěn)定,因此,在項(xiàng)目開發(fā)過程中推薦采用有線方式接入網(wǎng)絡(luò)。通常,路由器端都是通過DHCP(動(dòng)態(tài)主機(jī)配置協(xié)議)方式設(shè)置自動(dòng)分配IP,所以只要用網(wǎng)線把JETSON平臺(tái)連接到路由器上即可實(shí)現(xiàn)上網(wǎng)。

(1)基于M.2的無線網(wǎng)絡(luò)接口。M.2接口是Intel推出的專為便攜設(shè)備量身定制的一種主機(jī)接口方案,可以兼容多種通信協(xié)議,如SATA(串口硬盤)、PCIe、USB、HSIC(高速集成電路)、UART、SMBus(系統(tǒng)管理總線)等。M.2接口主要有兩方面的優(yōu)勢(shì):

第一是速度優(yōu)勢(shì)。

第二是體積優(yōu)勢(shì)。

(2)?IntelWireless-AC8265網(wǎng)卡。目前在JETSON設(shè)備上官方推薦的M.2接口的無線網(wǎng)卡是IntelWireless-AC8265,其外形如圖3.5所示。

圖3.5IntelWireless-AC8265無線網(wǎng)卡的外形

IntelWireless-AC8265網(wǎng)卡的無線接入功能和藍(lán)牙接入功能必須插接天線才能正常使用,所支持的天線有兩種:一種是FPC軟排線天線,帶3M膠,可隨意粘貼固定;另一種是膠棒天線,在外殼上需要有固定裝置,如圖3.6所示。用戶可以根據(jù)實(shí)際情況選擇使用這兩種天線。圖3.6IntelWireless-AC8265無線網(wǎng)卡天線

①在JETSONNano上安裝M.2接口無線網(wǎng)卡。

JETSONNano使用M.2接口連接設(shè)備需要拆卸開發(fā)板,一旦操作有誤,就有可能損壞開發(fā)板,而這種人為損壞不在保修范圍內(nèi),所以用戶在動(dòng)手前一定要謹(jǐn)慎!

拆卸過程:先將JETSONNano核心模組(見圖3.7)的固定螺絲旋轉(zhuǎn)取下,然后用雙手按壓松脫核心模組兩端的固定卡扣,將核心模組翻轉(zhuǎn)后脫離連接器。

安裝過程:用手指將天線按壓到無線網(wǎng)卡上,再將開發(fā)板上M.2接口的螺絲擰下,把無線網(wǎng)卡插至該接口上,用剛剛擰下的螺絲將無線網(wǎng)卡固定好后,重新將JETSONNano核心模組固定到開發(fā)板上。

圖3.7JETSONNano的核心模組

②在JETSONXavier上安裝M.2接口無線網(wǎng)卡。

在JETSONXavier上,M.2接口無線網(wǎng)卡的安裝稍微容易一些,無須拆裝模組,只需將JETSONXavier底部朝上放置,即可看到其連接無線網(wǎng)卡的M.2接口。

安裝過程:將JETSONXavier底部朝上放置,將JETSONXavier底部連接無線網(wǎng)卡的M.2接口上的螺絲擰下,用手指將天線按壓到無線網(wǎng)卡上,再將無線網(wǎng)卡插至JETSONXavier底部的M.2接口上,用剛剛擰下的螺絲將無線網(wǎng)卡固定好即可。

2.基于USB的無線網(wǎng)絡(luò)接口

和M.2接口相比,通過USB方式接入無線網(wǎng)卡的接口操作簡單,只需插入即可。由于L4T平臺(tái)(JETSON平臺(tái)定制的Linux操作系統(tǒng),即Ubuntu定制款)的兼容性問題,并不是所有的USB接口的無線網(wǎng)卡都能即插即用。NVIDIA官方推薦的USB接口無線網(wǎng)卡是EdimaxEW-7811Un,如圖3.8所示。

圖3.8EdimaxEW-7811Un無線網(wǎng)卡

3.接入無線網(wǎng)絡(luò)及設(shè)置無線熱點(diǎn)

連接好無線網(wǎng)卡后,用戶可以在桌面上設(shè)置進(jìn)入無線網(wǎng)。用鼠標(biāo)點(diǎn)擊桌面上的“網(wǎng)絡(luò)連接”圖標(biāo),在列出的無線網(wǎng)絡(luò)中點(diǎn)擊可用的無線熱點(diǎn),在彈出的對(duì)話框中輸入該無線熱點(diǎn)的密碼并點(diǎn)擊確認(rèn),即可將JETSON設(shè)備接入互聯(lián)網(wǎng)。

在有些實(shí)際應(yīng)用場景中,可能并不需要將JETSON設(shè)備接入廣域網(wǎng)絡(luò),但是需要讓其他移動(dòng)設(shè)備和JETSON設(shè)備互連。這時(shí)將JETSON設(shè)備設(shè)置為熱點(diǎn)是一個(gè)不錯(cuò)的備選方案。

將JETSON設(shè)備設(shè)為熱點(diǎn)的操作步驟如下:

(1)用鼠標(biāo)點(diǎn)擊桌面上的“網(wǎng)絡(luò)連接”圖標(biāo),在彈出的菜單中選擇“EditConnections...”菜單項(xiàng),再在彈出的“NetworkConnections”對(duì)話框中點(diǎn)擊左下角的“+”按鈕。

(2)在彈出的連接類型選擇對(duì)話框中下拉選擇“Wi-Fi”,點(diǎn)擊“Create...”按鈕。

(3)在彈出的網(wǎng)絡(luò)連接對(duì)話框中,修改“Connectionname”為“MyHotspot”,在“Wi-Fi”頁面中填寫“SSID”為“Nano”,選擇“Mode”為“Hotspot”,選擇“Device”為“wlan0(08:BE:AC:06:3B:38)”,切換至“Wi-FiSecurity”頁面,選擇“Scurity”為“WEP40/128bitKey(HexorASCII)”,填寫“Key”為相應(yīng)密碼,如“12345”,點(diǎn)擊“Save”按鈕即可。

(4)再用鼠標(biāo)點(diǎn)擊桌面上“網(wǎng)絡(luò)連接”圖標(biāo),在彈出的菜單中選擇“ConnecttoHiddenWi-FiNetwork”菜單項(xiàng),在彈出的連接到隱藏網(wǎng)絡(luò)對(duì)話框中選擇“Connection”,修改為之前創(chuàng)建的“MyHotshot”,點(diǎn)擊“Connect”按鈕。

(5)片刻后,在系統(tǒng)桌面的右上角會(huì)顯示“YouarenowconnectedtotheWi-Finetwork‘Nano’.”的字樣,說明SSID為“Nano”的熱點(diǎn)已經(jīng)成功創(chuàng)建了。

一般來說,當(dāng)前機(jī)器的IP應(yīng)該是“10.42.0.1”這時(shí)就可以用其他移動(dòng)設(shè)備搜索SSID為“Nano”的無線網(wǎng)絡(luò),并使用所設(shè)定的密碼接入該無線熱點(diǎn)網(wǎng)絡(luò)中,接入設(shè)備就可以通過當(dāng)前機(jī)器的IP和當(dāng)前機(jī)器進(jìn)行網(wǎng)絡(luò)通信。

3.2.2JETSON平臺(tái)外設(shè)接口

JETSON平臺(tái)的外設(shè)接口有多種,下面將詳細(xì)介紹不同版本JETSON平臺(tái)的外設(shè)接口以及其中的重要接口。

1.外設(shè)接口圖

1)?JETSONNano開發(fā)板套件的外設(shè)接口

JETSONNano開發(fā)板套件的前視圖如圖3.9所示,頂視圖如圖3.10所示。

圖3.9JETSONNano開發(fā)板套件的前視圖

圖3.10JETSONNano開發(fā)板套件的頂視圖

2)?JETSONTX2開發(fā)板套件的外設(shè)接口圖

JETSONTX2開發(fā)板套件的頂視圖如圖3.11所示。圖3.11JETSONTX2開發(fā)板套件的頂視圖

3)?JETSONXavier開發(fā)板套件的外設(shè)接口圖

JETSONXavier開發(fā)板套件的前視圖和后視圖如圖3.12所示,頂視圖如圖3.13所示。圖3.12JETSONXavier開發(fā)板套件的前視圖和后視圖圖3.13JETSONXavier開發(fā)板套件的頂視圖

2.?GPIO接口

GPIO接口是通用型輸入/輸出接口的簡稱,其接腳可以供開發(fā)人員通過程序控制自由使用。GPIO接口可根據(jù)實(shí)際情況作為通用輸入或通用輸出,也可以作為通用輸入與輸出。JETSON系列開發(fā)板中都包含40引腳的GPIO接口,其中JETSONXavier和JETSONNano只有一個(gè)40針2.54?mm間隔的GPIO接口,而JETSONTX2有兩個(gè)GPIO接口,一個(gè)40針、2.54?mm間隔的通用接口J21和一個(gè)30針2.54?mm間隔的擴(kuò)展接口J26。

GPIO接口可以用于輸入、輸出或其他特殊功能。對(duì)于輸入,可以通過讀取某個(gè)寄存器來確定引腳電位的高低;對(duì)于輸出,可以通過寫入某個(gè)寄存器來讓引腳輸出高電位或低電位;對(duì)于其他特殊功能,則由另外的寄存器來控制。以JETSONNano為例,GPIO引腳排列見表3.2。

對(duì)于如何通過控制GPIO輸出來打開和關(guān)閉發(fā)光二極管(LED),首先,選取LED燈、NPN晶體管、3300?Ω電阻、10?kΩ電阻和若干電線,用面包板將所有器件連接起來;其次,在控制LED的過程中,需要通過添加限流電阻來確保LED能夠承受的電流量,簡而言之,通過選擇合適的電阻可以設(shè)定LED實(shí)際吸收電流的上限。根據(jù)歐姆定律選擇電阻(在同一電路中,通過某段導(dǎo)體的電流與該導(dǎo)體兩端的電壓成正比,與該導(dǎo)體的電阻成反比):

(3-1)

當(dāng)已知LED的參數(shù)時(shí)可以計(jì)算出合適的電阻值,即根據(jù)LED的正向電壓(陰極和陽極之間的最小電壓差)計(jì)算正向電流,即LED能夠連續(xù)處理的最大電流。本節(jié)中LED正向電流為20?mA,正向電壓為2.0?V,當(dāng)使用JETSONNano的5?V引腳驅(qū)動(dòng)LED時(shí),按照歐姆定律,有

如果以最大電流運(yùn)行,將會(huì)影響LED壽命。通常,使用220~470?Ω的電阻來實(shí)現(xiàn)此應(yīng)用,本節(jié)使用330Ω。

在實(shí)際連接過程中,將JETSONNano上的引腳2(?+?5V)用導(dǎo)線接入面包板電路?+?5?V相應(yīng)位置,將引腳6(GND)用導(dǎo)線接入面包板電路GND相應(yīng)位置,將引腳12(gpio79)用導(dǎo)線經(jīng)由基極電阻連接到晶體管基座。連接好后運(yùn)行如下命令:

3.串行通信接口

JETSON系列開發(fā)板上有4種類型的串行通信接口,分別為USB、SPI、UART和I2C。USB接口是插入鼠標(biāo)和鍵盤的接口。對(duì)于SPI接口,在默認(rèn)的JETSON配置中沒有SPI接口訪問權(quán)限,但以JETSONNano為例,可以通過J41擴(kuò)展接頭重新配置設(shè)備樹以訪問SPI。本節(jié)重點(diǎn)介紹UART和I2C兩類接口。

1)?UART接口

通過電線傳輸串行數(shù)據(jù)可以追溯到百年前,計(jì)算機(jī)行業(yè)中的串行通信無處不在。UART是串行控制臺(tái),允許直接訪問串行和調(diào)試控制臺(tái)。除了提供典型的控制臺(tái)之外,串行控制臺(tái)在許多其他情況下也很有用,包括為不同的啟動(dòng)映像(Linux內(nèi)核映像)選擇菜單條目的功能,以及訪問沒有鍵盤、鼠標(biāo)、網(wǎng)絡(luò)或顯示器的設(shè)備。本節(jié)以通過J44上的UART接口將PC計(jì)算機(jī)連接到JETSONNano為例,介紹UART接口功能。

運(yùn)行查看串口的命令時(shí),如果出現(xiàn)無法找到ttyTHS2的問題,可以將系統(tǒng)的設(shè)備樹文件進(jìn)行反編譯,使能ttyTHS2后再重新編譯。注意:下面的命令如果操作不當(dāng)可能會(huì)引起系統(tǒng)無法啟動(dòng)。

要在確保JETSONNano未通電的情況下按如下方式接線,如圖3.14所示。圖3.14JETSONNano的UART接線圖

2)?I2C接口

I2C是一種簡單的串行協(xié)議,用于單個(gè)器件內(nèi)的短距離通信。通常有兩條連接線,一條串行數(shù)據(jù)線(SDA),另一條串行時(shí)鐘線(SCL),但大多數(shù)器件還需要電源(VCC)和地(GND)。NVIDIAJETSON開發(fā)板可以通過GPIO接口訪問I2C總線0和12C總線1。

安裝ServoKit庫并設(shè)置I2C和GPIO權(quán)限,以便可以從用戶空間運(yùn)行程序,添加GPIO權(quán)限以支持底層JETSON.GPIO庫。群組更改在登錄前不會(huì)生效,必須注銷/登錄或重新啟動(dòng)計(jì)算機(jī)才能使更改生效。

(1)單電機(jī)角度伺服。

值得注意的是,在連接JETSON平臺(tái)之前,要確保斷開電源。因?yàn)椴迦腚娫春螅词固幚砥鞅旧硖幱陉P(guān)閉狀態(tài),接口上的電源和地也始終處于工作狀態(tài)。

值得注意的是,在連接JETSON平臺(tái)之前,要確保斷開電源。因?yàn)椴迦腚娫春?,即使處理器本身處于關(guān)閉狀態(tài),接口上的電源和地也始終處于工作狀態(tài)。

J41引腳3(SDA)→PCA9685SDA;

J41引腳5(SCL)→PCA9685SCL;

J41引腳1(3.3V)→PCA9685VCC;

J41引腳6(CND)→PCA9685GND。

(2)雙電機(jī)云臺(tái)單獨(dú)控制。

關(guān)閉并拔下JETSONNano電源后,連接PCA9685進(jìn)行雙電機(jī)云臺(tái)伺服控制,通過I2C總線0連接伺服電機(jī)的接線方式如下:

J41引腳27(SDA)→PCA9685SDA;

J41引腳28(SCL)→PCA9685SCL;

J41引腳1(3.3V)→PCA9685VCC;

J41引腳6(GND)→PCA9685GND。

3.2.3JETSON平臺(tái)開發(fā)板接口

JETSON開發(fā)板及應(yīng)用套件的研發(fā),能夠?yàn)樾袠I(yè)用戶提供低成本高可靠的產(chǎn)品級(jí)解決方案,擺脫硬件平臺(tái)搭建的風(fēng)險(xiǎn),讓他們?nèi)W?yīng)用層面的開發(fā),快速推出面向特定應(yīng)用市場的整體解決方案。

1.?JETSONTX1/TX2擴(kuò)展開發(fā)板

1)瑞泰新時(shí)代(北京)公司RTSO-9001開發(fā)板

RTSO-9001是一款搭配JETSONTX1/TX2核心模塊的低成本、小體積開發(fā)板,包括上下堆棧兩塊板卡。開發(fā)板長、寬尺寸與JETSONTX1/TX2模塊相當(dāng),適合緊湊型部署需求;面向工業(yè)部署應(yīng)用,其主要接口進(jìn)行了靜電安全保護(hù)設(shè)計(jì);采用了高可靠性的電源應(yīng)用方案,具有豐富的對(duì)外接口,全板器件采用寬溫型號(hào)。產(chǎn)品接口及說明如表3.3所示。

RTSO-9001開發(fā)板的外觀如圖3.15所示。RTSO-9001開發(fā)板的外觀如圖3.15所示。

2)瀝拓科技(深圳)有限公司LEETOP-A300開發(fā)板

LEETOP-A300是一個(gè)高性能、尺寸小、接口豐富的JETSONTX1/TX2開發(fā)板,開發(fā)板大小與JETSONTX1/TX2模塊一致,提供USB3.0、千兆以太網(wǎng)、HDMI2.0、USB2.0、UART、GPIO、I2C、CAN、風(fēng)扇等接口。LEETOP-A300開發(fā)板的外觀如圖3.16所示。

圖3.16LEETOP-A300開發(fā)板外觀

該產(chǎn)品的其他接口及說明如表3.4所示。

3)?Auvidea公司J121開發(fā)板

JI21開發(fā)板將JETSONTX2計(jì)算模塊轉(zhuǎn)變?yōu)槌⌒陀?jì)算機(jī),用于桌面使用或者集成到機(jī)器人和無人機(jī)中。JI21與JETSONTX2具有相同的高度,并延伸到一側(cè),為千兆以太網(wǎng)、兩個(gè)USB3.0和迷你HDMI的標(biāo)準(zhǔn)連接器騰出空間;具有一個(gè)M.2型M插槽,用于超快速SSD(2280mm外形尺寸),通過4個(gè)PCIe通道連接,實(shí)現(xiàn)高達(dá)2500?Mb/s的讀寫性能。該產(chǎn)品的其他接口及說明如表3.5所示。

J21開發(fā)板的外觀如圖3.17所示。圖3.17J21開發(fā)板外觀

2.?JETSONNano擴(kuò)展開發(fā)板

1)瑞泰新時(shí)代(北京)公司RTSO-6001開發(fā)板

RTSO-6001是針對(duì)Nano的工業(yè)級(jí)開發(fā)板,工作溫度為-40~+80℃,低功耗,安全級(jí)別高,可滿足各種苛刻條件。該產(chǎn)品的接口及說明如表3.6所示。

RTSO-6001開發(fā)板的外觀如圖3.18所示。圖3.18RTSO-6001開發(fā)板外觀

EETOP-A200是一個(gè)高性能、接口豐富的JETSONNano開發(fā)板,提供了HDMI2.0、千兆以太網(wǎng)、USB3.0、USB2.0、M.2Wi-Fi/BT、CSICAMERA、SATA、Mini-PCIe/mSATA、UART232串口、SIM卡、GPIO、I2C、I2S風(fēng)扇等豐富的外圍接口,搭載科大訊飛專門為JETSONNano設(shè)計(jì)的麥克風(fēng)陣列、慣導(dǎo)模塊等外部設(shè)備。LEETOP-A200開發(fā)板的外觀如圖3.19所示。LEETOP-A200接口及說明見表3.7。

圖3.19LEETOP-A200開發(fā)板的外觀

3)?Auvidea公司JN30開發(fā)板

JN30專為JETSONNano設(shè)計(jì),將Nano計(jì)算模塊轉(zhuǎn)變?yōu)槌?jí)計(jì)算機(jī)。JN30支持輕松自動(dòng)閃存(USBOTG電纜)和高性能存儲(chǔ)(M.2NVMEPCIe×4)。JN30接口及說明見表3.8。

3.?JETSONXavier擴(kuò)展開發(fā)板

1)瀝拓科技(深圳)有限公司LEETOP-A501開發(fā)板

LEETOP-A501開發(fā)板主要應(yīng)用于物流行業(yè)中具有陸運(yùn)貨車裝卸口的、需要計(jì)算機(jī)視覺分析的場地,如中轉(zhuǎn)場、重貨、網(wǎng)點(diǎn)、快遞、零擔(dān)(運(yùn)輸)、冷運(yùn)裝卸口、商超裝卸口、港口裝卸口、海關(guān)裝卸口、鐵路運(yùn)輸裝卸口,以及具有行為檢測需求的幼兒園、工廠、銀行等。LEETOP-A501開發(fā)板的外觀如圖3.20所示。

圖3.20LEETOP-A501開發(fā)板外觀

LEETOP-A501開發(fā)板的主要端口及說明見表3.9。

2)?Auvidea公司X200開發(fā)板

X200是JETSONAGXXavier的首款開發(fā)板,其特點(diǎn)是以透明的方式利用計(jì)算模塊的所有接口,給出了5個(gè)PCIe插槽上的所有PCIe接口,其他接口包括USB2.0、USB3.0、2?×USB-C、2個(gè)HDMI、2個(gè)CAN、8個(gè)CSI-2、GPIO、GbE、UART,電源輸入為12~48?V,擁有9個(gè)基于PCIe的千兆以太網(wǎng)(GbE)接口,可連按9個(gè)GigE攝像頭,用于多攝像頭應(yīng)用。每個(gè)GbE接口都是本機(jī)連接的,并提供最大的數(shù)據(jù)傳輸速率。X200開發(fā)板的外觀如圖3.21所示。

圖3.21X200開發(fā)板外觀

3.3JETSON平臺(tái)軟件資源介紹

3.3.1JETSON平臺(tái)的架構(gòu)JETSONSDK平臺(tái)中涵蓋的軟件開發(fā)資源及依賴關(guān)系如圖3.22所示。

圖3.22JETSONSDK平臺(tái)中涵蓋的軟件開發(fā)資源及依賴關(guān)系

這套開發(fā)工具包括:

(1)?CUDA(ComputeUnifiedDeviceArchitecture):一種由NVIDIA推出的通用并行計(jì)算架構(gòu)和編程模型,能使GPU解決復(fù)雜的計(jì)算問題。

(2)?cuBLAS(CUDABasicLinearAlgebraSubroutines):CUDA專門用來解決線性代數(shù)運(yùn)算的庫,可以實(shí)現(xiàn)向量相乘、矩陣乘向量、矩陣乘矩陣等運(yùn)算。

(3)?cuFFT(CUDAFastFourierTransform):CUDA提供的封裝的FFT庫,還提供了與CPU的FFT庫相似的接口,讓用戶能夠輕易地挖掘GPU強(qiáng)大浮點(diǎn)處理能力,不需要用戶自己實(shí)現(xiàn)專門的FFT內(nèi)核函數(shù)。

(4)?cuDNN(CUDADeepNeuralNetworklibrary),是NVIDIA專門針對(duì)深度神經(jīng)網(wǎng)絡(luò)中的基礎(chǔ)操作推出的庫,為深度神經(jīng)網(wǎng)絡(luò)中的標(biāo)準(zhǔn)流程提供了高度優(yōu)化的實(shí)現(xiàn)方式,如convolution、pooling、normalization及activationlayers的前向及后向過程。

(5)?TensorRT(TensorRuntime):一個(gè)高性能的深度學(xué)習(xí)推理引擎,用于在生產(chǎn)環(huán)境中部署深度學(xué)習(xí)應(yīng)用程序,應(yīng)用包括圖像分類、分割和目標(biāo)檢測等。TensorRT可提供最大的推理吞吐量和效率,用戶無須安裝并運(yùn)行深度學(xué)習(xí)框架。

(6)?VisionWorks:一個(gè)用于計(jì)算機(jī)視覺和圖像處理的軟件開發(fā)包,實(shí)現(xiàn)并擴(kuò)展了KhronosOpenVX標(biāo)準(zhǔn),并對(duì)支持CUDA的GPU和片上系統(tǒng)(SoC)進(jìn)行了優(yōu)化,使開發(fā)人員能夠在可伸縮的、靈活的平臺(tái)上實(shí)現(xiàn)計(jì)算機(jī)視覺(ComputerVision,CV)應(yīng)用。

(7)?OpenCV(OpenComputerVision):一個(gè)跨平臺(tái)計(jì)算機(jī)視覺庫,可以運(yùn)行在Linux、Windows、Android和MacOS操作系統(tǒng)上,可以實(shí)現(xiàn)圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。OpenCV4Tegra是NVIDIA專為Tegra平臺(tái)優(yōu)化的一個(gè)OpenCV版本。

(8)?OpenGL(OpenGraphicsLibrary):一個(gè)跨編程語言、跨平臺(tái)的專業(yè)圖形程序接口,可用于二維/三維圖像處理,是一個(gè)功能強(qiáng)大、調(diào)用方便的底層圖形庫。

(9)?libargus:為攝像機(jī)應(yīng)用程序提供了低級(jí)幀同步應(yīng)用編程接口(ApplicationProgrammingInterface,API)、每幀攝像機(jī)參數(shù)控制、多個(gè)/同步攝像機(jī)支持和設(shè)備說明表(EquipmentGuideList,EGL)流輸出。

(10)?GStreamer:用來構(gòu)建流媒體應(yīng)用的開源多媒體框架,其目標(biāo)是簡化音/視頻應(yīng)用程序開發(fā),主要用來處理MP3、MPEG1(MPEG組織制定的第一個(gè)視頻和音頻有損壓縮標(biāo)準(zhǔn))、MPEG2、AVI(音頻視頻交錯(cuò)格式)、Quicktime等多種格式的多媒體數(shù)據(jù)。

3.3.2基于Tegra核心的Linux系統(tǒng)

JETSON平臺(tái)使用的是NVIDIA公司推出的Tegra處理器。Tegra處理器是采用單片機(jī)系統(tǒng)設(shè)計(jì)的SoC(SystemonChip)芯片,集成了ARM架構(gòu)處理器和NVIDIA的GeForceGPU,面向便攜設(shè)備提供高性能、低功耗體驗(yàn)。在Tegra芯片上運(yùn)行的是Linux內(nèi)核,采用U-Boot(UniversalBootLoader)來實(shí)現(xiàn)系統(tǒng)引導(dǎo)。在Linux內(nèi)核上,Jetpack采用Ubuntu桌面系統(tǒng),目前最新版本的Jetpack已經(jīng)集成了Ubuntu18.04。此外,Jetpack還集成了BusyBox,包括了300多個(gè)最常用Linux命令和工具軟件,并結(jié)合相關(guān)硬件的外部設(shè)備重新編譯內(nèi)核,稱之為Linux4Tegra,簡稱L4T。

1.從操作系統(tǒng)到Ubuntu

操作系統(tǒng)(OperatingSystem,OS)是管理和控制計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序,是直接運(yùn)行在“裸機(jī)”上的最基本的系統(tǒng)軟件,其他任何軟件都必須在操作系統(tǒng)的支持下才能運(yùn)行。操作系統(tǒng)并不是與計(jì)算機(jī)硬件一起誕生的,它是在人們使用計(jì)算機(jī)的過程中,為了滿足兩大需求——提高資源利用率和增強(qiáng)計(jì)算機(jī)系統(tǒng)性能,同時(shí)隨著計(jì)算機(jī)技術(shù)本身及其應(yīng)用的日益發(fā)展而逐步形成和完善起來的。

Linux是個(gè)人操作系統(tǒng)的另一個(gè)分支中的杰出之作,它是一種類UNIX操作系統(tǒng),和Windows系統(tǒng)相比,有以下幾個(gè)優(yōu)點(diǎn):

(1)自由與開放。

(2)配置需求低。

(3)內(nèi)核強(qiáng)大且穩(wěn)定。

(4)適合于嵌入式系統(tǒng),

2.常用的Linux操作命令

在Linux系統(tǒng)里,大部分在圖形界面下可以完成的操作都可以在Terminal應(yīng)用界面通過鍵入相應(yīng)的命令行來實(shí)現(xiàn)。特別地,對(duì)于JETSON平臺(tái)的程序開發(fā)人員來說,大多數(shù)操作也都是在Terminal應(yīng)用界面中完成的。Terminal應(yīng)用的運(yùn)行界面如圖3.23所示。

圖3.23Terminal應(yīng)用的運(yùn)行界面

下面針對(duì)不同的場景介紹Ubuntu系統(tǒng)中的常用命令。

1)文件/文件夾管理常用命令

(1)?pwd命令是“PrintWorkingDirectory”的簡寫,指令內(nèi)容顯示當(dāng)前工作目錄的路徑,在Terminal界面的使用格式為:

$pwd

(2)cd命令是“ChangeDirectory”的簡寫,指令內(nèi)容是進(jìn)入到指定目錄下,其參數(shù)是指定目錄相對(duì)于當(dāng)前目錄的路徑,在Terminal界面中的使用格式為:

$cd<文件夾相對(duì)路徑>

cd命令后面的參數(shù)還支持一些特殊的指代符號(hào),如進(jìn)入當(dāng)前目錄的上一級(jí)目錄:

(3)?ls命令是“List”的簡寫,指令內(nèi)容是列出指定目錄下的文件/文件夾,在Terminal界面中的使用格式為:

$ls<文件夾相對(duì)路徑>

①后綴“-l”參數(shù),會(huì)列出文件/文件夾的詳細(xì)信息,具體包括文件類型、所有者/所有者權(quán)限、組用戶權(quán)限、其他用戶權(quán)限、鏈接數(shù)/子目錄數(shù)、用戶名、組名、文件大小、最后修改時(shí)間和文件名。

②后綴“-lh”參數(shù),會(huì)將列出的文件大小以K、M、G的格式顯示,更便于查看。

(4)?mkdir命令是“MakeDirectory”的簡寫,指令內(nèi)容是創(chuàng)建指定名稱的文件夾,在Terminal界面中的使用格式為:

$mkdir<文件夾名稱>

(5)?cp命令是“Copy”的簡寫,指令內(nèi)容是將原始路徑的文件復(fù)制到目標(biāo)路徑。這個(gè)命令可以在復(fù)制文件的同時(shí)修改文件名,在Terminal界面中的使用格式為:

$cp<原始路徑><目標(biāo)路徑>

①后綴“-i”參數(shù),可以在覆蓋目標(biāo)文件之前給出提示,要求用戶確認(rèn)。

②后綴“-r”參數(shù),會(huì)將源目錄下的所有文件夾及文件夾下的文件復(fù)制到目標(biāo)目錄下。

(6)?mv命令是“Move”的簡寫,指令內(nèi)容是將原始路徑的文件移動(dòng)到目標(biāo)路徑。這個(gè)命令也可用于(在移動(dòng)文件的同時(shí))修改文件名,在Terminal界面中的使用格式為:

$mv<原始路徑><目標(biāo)路徑>

(7)?rm命令是“Remove”的簡寫,指令內(nèi)容是刪除指定的文件。該命令支持常見的通配符,在Terminal界面中的使用格式為:

$rm<文件名>

①后綴“-r”參數(shù),可以刪除指定目錄下的所有文件和文件夾(包括子文件夾)。

②后綴“-f”參數(shù),可以實(shí)現(xiàn)強(qiáng)制刪除。

【注意】“rm-rf*”是非常危險(xiǎn)的命令,謹(jǐn)慎使用!

2)應(yīng)用安裝常用命令

目前,Linux系統(tǒng)下最常用的應(yīng)用程序管理器是AdvancedPackageTool,簡稱apt。apt應(yīng)用程序管理器最初于1998年發(fā)布,用于檢索應(yīng)用程序并將其加載到DebianLinux系統(tǒng)。apt成名的原因之一在于其出色的解決軟件依賴關(guān)系的能力,使用apt可以自動(dòng)從互聯(lián)網(wǎng)的多個(gè)軟件倉庫中搜索、安裝、升級(jí)、卸載軟件或操作系統(tǒng)。

apt命令一般需要root權(quán)限執(zhí)行,所以都會(huì)結(jié)合sudo命令使用。下面介紹apt命令的一些常用選項(xiàng)及相關(guān)功能。

(1)?update選項(xiàng)可以更新安裝源,在Terminal界面中的使用格式為:

$sudoaptupdate

(2)?upgrade選項(xiàng)可以升級(jí)所有可升級(jí)的軟件包,在Terminal界面中的使用格式為:

$sudoaptupgrade

一般在第一次運(yùn)行aptupdate命令之后,就會(huì)運(yùn)行aptupgrade命令。

(3)?install選項(xiàng)可以安裝指定的軟件包。

install選項(xiàng)結(jié)合參數(shù)“-y”使用,可以在命令行交互式提示“[Y/N]”時(shí)自動(dòng)輸入“y”;如果結(jié)合參數(shù)“-no-install-recommends”使用,則可以避免安裝非必需的文件。在Terminal界面中的使用格式為:

在使用apt命令時(shí),偶爾會(huì)遇到“E:Couldnotgetlock/var/lib/dpkg/lock”“E:Couldnotget/var/lib/dpkg/lock-frontend”“E:Couldnotget/var/cache/apt/archives/lock”等錯(cuò)誤,這是由于用戶上一次調(diào)用apt命令時(shí)沒有正確退出,系統(tǒng)還鎖定著apt進(jìn)程,以避免同時(shí)運(yùn)行兩個(gè)apt進(jìn)程而導(dǎo)致沖突。因此,在實(shí)際操作時(shí),用戶應(yīng)首先確認(rèn)沒有其他的apt進(jìn)程正在工作,然后使用rm命令將相應(yīng)的lock文件刪除,就可以正常使用apt命令。

rm命令使用格式為:

【注意】此時(shí)使用rm命令千萬不要帶“-r”參數(shù),以免操作不慎將“dpkg”目錄或其他目錄刪除。

(9)?dpkg命令可以實(shí)現(xiàn).deb格式軟件包的安裝及卸載。

①后綴“-i”參數(shù),可以實(shí)現(xiàn).deb格式軟件包的安裝。

②后綴“-r”參數(shù),可以實(shí)現(xiàn).deb格式軟件包的卸載。

dpkg命令在Terminal界面中的使用格式為:

$sudodpkg-i<安裝包文件名>.deb

$sudodpkg-r<軟件包名稱>

3)其他常用命令

(1)?tar命令可以實(shí)現(xiàn)對(duì)指定的文件/文件夾進(jìn)行打包或解包的功能,可選是否壓縮。

①后綴“-c”參數(shù),實(shí)現(xiàn)打包功能。

②后綴“-x”參數(shù),實(shí)現(xiàn)解包功能。

③后綴“-z”參數(shù),實(shí)現(xiàn).gzip格式的壓縮/解壓功能。

④后綴“-f”參數(shù),指定文件名,這個(gè)參數(shù)必須放在最后。

(4)?find命令在指定路徑下查找文件。

①后綴“-name”參數(shù),指定要查找的文件名,文件名中支持通配符。

②后綴“-iname”參數(shù),表示忽略文件名中的大、小寫。

③還可以后綴各種不同的參數(shù),實(shí)現(xiàn)指定文件更新時(shí)間、文件類型等功能。

find命令在Terminal界面中的使用格式為:

$find<路徑>-name<文件名>

還有一些常用的信息查詢命令,在此就不一一具體說明了,可以參見表3.10。

3.3.3基于CUDA的智能計(jì)算平臺(tái)

1.?CUDA簡介

20世紀(jì)90年代,NVIDIA的第一個(gè)通用計(jì)算圖形處理單元(GPU)被設(shè)計(jì)成圖形加速器,它提供了可編程的功能,GPU出色的浮點(diǎn)性能很快被應(yīng)用于通用計(jì)算。2003年,由伊恩·巴克(IanBuck)領(lǐng)導(dǎo)的一組研究人員公布了Brook,這是第一個(gè)被廣泛采用的編程模式,它使用數(shù)據(jù)并行結(jié)構(gòu)擴(kuò)展了C語言。伊恩·巴克后來加入了NVIDIA,并在2006年發(fā)布了由他領(lǐng)導(dǎo)的CUDA,這是世界上第一個(gè)基于GPU的通用計(jì)算解決方案。

GPU并不是一個(gè)獨(dú)立運(yùn)行的計(jì)算平臺(tái),它需要與CPU協(xié)同工作,也可以看成是CPU的協(xié)處理器,因此說GPU的并行計(jì)算其實(shí)就是指基于CPU+?GPU的異構(gòu)計(jì)算架構(gòu)(見圖3.24)。在這個(gè)異構(gòu)計(jì)算架構(gòu)中,GPU與CPU通過PCIe總線連接在一起協(xié)同工作,CPU所在位置稱為主機(jī)端(host),GPU所在位置稱為設(shè)備端(device)。

圖3.24基于CPU+GPU的異構(gòu)計(jì)算框架

典型的CUDA程序的執(zhí)行流程如下:

①分配host內(nèi)存,進(jìn)行數(shù)據(jù)初始化;

②分配device內(nèi)存,從host將數(shù)據(jù)拷貝到device上;

③調(diào)用CUDA的核函數(shù),在device上完成指定的運(yùn)算;

④將device上的運(yùn)算結(jié)果拷貝到host上;

⑤釋放device和host上分配的內(nèi)存。

要想深刻理解核函數(shù),就必須詳細(xì)了解核函數(shù)的線程層次結(jié)構(gòu)。GPU上有很多并行化的輕量級(jí)線程,核函數(shù)在device上執(zhí)行時(shí)實(shí)際上是啟動(dòng)了很多個(gè)線程(thread)。一個(gè)核函數(shù)啟動(dòng)的所有線程稱為一個(gè)網(wǎng)格(grid),同一個(gè)網(wǎng)格上的線程共享相同的全局內(nèi)存空間,網(wǎng)格是線程結(jié)構(gòu)的第一個(gè)層次;其次,網(wǎng)格又可以分為很多線程塊(Block),一個(gè)線程塊包含了很多線程,線程塊是線程結(jié)構(gòu)的第二個(gè)層次。核函數(shù)上的兩層線程組織結(jié)構(gòu)如圖3.25所示。

圖3.25核函數(shù)上的兩層線程組織結(jié)構(gòu)(二維)

2.?CUDA的內(nèi)存模型

CUDA的內(nèi)存模型如圖3.26所示。圖3.26CUDA的內(nèi)存模式

GPU硬件的一個(gè)核心組件是SM,SM的核心組件包括CUDA核心、共享內(nèi)存和寄存器等。SM的并發(fā)能力取決于SM擁有的資源數(shù),可以并發(fā)地執(zhí)行數(shù)百個(gè)線程。當(dāng)一個(gè)核函數(shù)被執(zhí)行時(shí),其網(wǎng)格中的線程塊被分配到SM上。一個(gè)線程塊只能在一個(gè)SM上被調(diào)度,而SM則可以調(diào)度多個(gè)線程塊,調(diào)度線程塊的數(shù)量取決于SM自身的能力。還有可能是一個(gè)核函數(shù)的各個(gè)線程塊被分配到多個(gè)SM上,所以網(wǎng)格只是邏輯層,而SM才是執(zhí)行的物理層。CUDA編程的邏輯層和物理層如圖3.27所示。

圖3.27CUDA編程的邏輯層和物理層

基于JETSON平臺(tái)的實(shí)際開發(fā)中,很多時(shí)候用戶并不需要編寫底層的CUDA核函數(shù)。因?yàn)镹VIDIA在CUDA的基礎(chǔ)上,還提供了cuBLAS、cuFFT和cuDNN等運(yùn)行庫,這些運(yùn)行庫相當(dāng)于對(duì)CUDA又做了一層封裝,用戶只需對(duì)這些運(yùn)行庫提供的函數(shù)進(jìn)行調(diào)控就可以完成計(jì)算任務(wù)。

3.3.4基于DeepStream的智能視覺平臺(tái)

1.?DeepStream簡介

視頻是當(dāng)下最常見的傳感器數(shù)據(jù)之一。2020年,全球啟用的攝像頭數(shù)量達(dá)10億,這是一個(gè)難以置信的原始傳感器數(shù)據(jù)量,可利用攝像頭和流數(shù)據(jù)分析構(gòu)建一些功能強(qiáng)大的應(yīng)用,如機(jī)場的入境管理、制造中心和工廠的生產(chǎn)線管理、停車管理和客流分析等,這對(duì)構(gòu)建智慧城市是很重要的。另外,利用視頻分析可以讓人們具備更全面的洞察力。

以上這些以往需要開發(fā)人員逐步去實(shí)現(xiàn)的步驟,DeepStream可以一站式解決。DeepStream是基于NVIDIA運(yùn)行的工具,主要應(yīng)用于視覺整個(gè)流程的解決方案。它與其他視覺庫(如OpenCV)的區(qū)別在于,DeepStream建立了一個(gè)完整的端到端的支持方案,換句話說,用戶的源無論是Camera、Video還是云服務(wù)器上的視頻,從視頻的編、解碼到后臺(tái)的圖像推理,再到展示,對(duì)這一完整流程上的各個(gè)細(xì)節(jié),DeepStream都能起到輔助的作用。在這個(gè)流程中,用戶只需加上自己的內(nèi)容,比如,視頻檢索需要訓(xùn)練一個(gè)模型用于識(shí)別或檢測視頻中的人臉,只需將人臉識(shí)別和人臉檢測的相關(guān)模型添加到方案中即可,對(duì)于設(shè)置視頻源的完整流程,DeepStream可自動(dòng)完成。

2.?DeepStream的核心組件

DeepStream是一個(gè)建立在GStreamer基礎(chǔ)上的軟件開發(fā)工具包(SDK),而GStreamer是一個(gè)開源的多媒體分析框架,由幾個(gè)核心組件組成。GStreamer底層(第一個(gè)層次)最基本的單元是插件(plug-ins)。GStreamer支持很多種不同的插件,每個(gè)插件都具有自己特定的功能。例如,第一個(gè)插件從數(shù)據(jù)源接收數(shù)據(jù),并解碼原始數(shù)據(jù)幀中的像素,再將數(shù)據(jù)發(fā)送給第二個(gè)插件;第二個(gè)插件做圖像縮放處理,然后將數(shù)據(jù)發(fā)送給下一個(gè)插件。這些最基本的插件是基于GStreamer的基本功能塊。

GStreamer第二個(gè)層次的基本單元是功能箱(bin)。在GStreamer和DeepStream里,其功能箱包含了很多功能塊,許多功能塊一起工作來完成某種具體的功能。GStreamer第三個(gè)層次實(shí)際上是一種總線,一種基于GStreamer或DeepStream的管理數(shù)據(jù)流動(dòng)和同步的總線。

GStreamer為應(yīng)用程序和管道之間的通信和數(shù)據(jù)交換提供了4種機(jī)制:第一種交換機(jī)制其本質(zhì)是緩沖區(qū),負(fù)責(zé)在插件之間傳遞流數(shù)據(jù)。在管道中,緩沖區(qū)將數(shù)據(jù)從視頻文件傳遞到解碼器,再傳遞到縮放插件,再傳遞到過濾器插件,最終傳遞到顯示插件。第二種交換機(jī)制叫作事件(event),用于在GStreamer框架中多個(gè)插件之間傳遞信

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論