小試牛刀——運(yùn)行/開發(fā)環(huán)境初探
運(yùn)行環(huán)境方面,JetPack搭建好開發(fā)環(huán)境后,Jetson TX1將重啟并引導(dǎo)之圖形界面。目前Jetson TX1上最新的操作系統(tǒng)為L(zhǎng)inux For Tegra R24.1,該操作系統(tǒng)在用于ARM架構(gòu)的Ubuntu 14.04 LTS版本基礎(chǔ)上定制開發(fā)。Ubuntu在國(guó)內(nèi)擁有龐大的用戶基礎(chǔ)和社區(qū)環(huán)境,基于Ubuntu定制開發(fā)的Linux For Tegra對(duì)于發(fā)者們來(lái)說(shuō),在界面,命令和操作習(xí)慣等方面非常熟悉,極易上手;與此同時(shí),開發(fā)者使用過(guò)程中遇到的問題,除了官方論壇外,也可以在更廣泛的Ubuntu操作系統(tǒng)社區(qū)環(huán)境內(nèi)向眾大神尋求幫助。
Jetson TX1操作系統(tǒng) Linux for Tegra概覽
一般來(lái)說(shuō),針對(duì)嵌入式平臺(tái)的開發(fā)有兩種編譯模式:原生編譯和交叉編譯。原生編譯就是直接在嵌入式平臺(tái)上編譯代碼并運(yùn)行,而交叉編譯就是在個(gè)人電腦等平臺(tái)編譯代碼,然后加載到嵌入式平臺(tái)運(yùn)行。我們?cè)贘etson TX1開發(fā)上使用交叉編譯。這里需要提醒一下各位小伙伴,交叉編譯需要在Jetson TX1和Host電腦間同步代碼,所以需要提前安裝和配置Git,否則在后續(xù)編譯執(zhí)行的時(shí)候會(huì)報(bào)錯(cuò)的呦,開發(fā)工具會(huì)深情地問你“Can you tell me who you are”。
NVDIA Nsight啟動(dòng)界面
NVDIA Nsight操作界面
Jetson TX1使用的開發(fā)工具NVDIA Nsight是基于eclipse定制開發(fā),其界面和操作習(xí)慣于eclipse基本保持一致,消除了開發(fā)人員的熟悉工具的時(shí)間和精力消耗。
接下來(lái)分享下在Jetson TX上創(chuàng)建,編輯,生成和運(yùn)行一個(gè)項(xiàng)目的過(guò)程。
· 新建項(xiàng)目
NVIDIA Nsight新建項(xiàng)目中目標(biāo)系統(tǒng)設(shè)置
NVIDIA Nsight新建項(xiàng)目中目標(biāo)系統(tǒng)設(shè)置
NVIDIA Nsight新建項(xiàng)目中目標(biāo)系統(tǒng)設(shè)置
由于使用交叉編譯模式,所以在新建項(xiàng)目時(shí),需要指定目標(biāo)系統(tǒng),即實(shí)際編譯運(yùn)行程序的系統(tǒng)——Jetson TX1。這里按提示輸入Jetson TX1的網(wǎng)絡(luò)地址,用戶名,以及Jetson TX1上CUDA Toolkit的安裝路徑就可以了。
如果不知道Jetson TX1上CUDA Toolkit的路徑也沒有關(guān)系,新建項(xiàng)目向?qū)Ш苜N心的設(shè)置了一個(gè)“自動(dòng)檢測(cè)”的功能,只要輕輕一點(diǎn),向?qū)?huì)自動(dòng)搜尋CUDA Toolkit的路徑,非常方便。
· 編輯代碼
NVIDIA Nsight代碼編輯視圖
NVIDIA Nsight代碼編輯與eclipse完全一致,只是增加針對(duì)CUDA代碼的代碼補(bǔ)全,高亮提示以及語(yǔ)法檢查,用慣eclipse的開發(fā)者絕對(duì)能感覺到屠龍?jiān)谑郑煜挛矣小?/p>
· 生成/運(yùn)行項(xiàng)目
NVIDIA Nsight遠(yuǎn)程運(yùn)行項(xiàng)目對(duì)話框
NVIDIA Nsight遠(yuǎn)程運(yùn)行項(xiàng)目對(duì)話框
同樣的,在按照工具的提示配置好Jetson TX1后,就可以完成程序的編譯,運(yùn)行,然后坐等收獲結(jié)果!
軟硬件配置概覽
在簡(jiǎn)單介紹了Jetson TX1以及它的開發(fā)環(huán)境后,現(xiàn)在從Jetson TX1的軟硬件配置入手,來(lái)探索Jetson TX1開發(fā)者套件帶給廣大開發(fā)者的無(wú)限可能。
· CUDA
CUDA是整套平臺(tái)的核心,保證了Jetson TX1超高的計(jì)算性能。同時(shí),Jetson TX1也支持各種基于CUDA跨架的軟件庫(kù),從而可以用于多種高并行度計(jì)算和高數(shù)據(jù)密度的應(yīng)用場(chǎng)景,如機(jī)器學(xué)習(xí),深度學(xué)習(xí),大數(shù)據(jù)實(shí)施分析以及物聯(lián)網(wǎng)邊緣計(jì)算等。
· GPIO、I2C、I2S、SPI、帶流控制的TTL UART等接口
豐富的接口給了今后基于Jetson TX1進(jìn)行擴(kuò)展開發(fā)的無(wú)限可能,即可以通過(guò)TTL UART、GPIO等接口實(shí)現(xiàn)其它單片機(jī)、嵌入式系統(tǒng)的所有功能外,還能通過(guò)自身強(qiáng)大的性能,升任其它單片機(jī)、嵌入式系統(tǒng),如樹梅派等無(wú)力支撐的高數(shù)據(jù)密度業(yè)務(wù)和高處理實(shí)時(shí)性業(yè)務(wù),如智能機(jī)器人,機(jī)器人,無(wú)人駕駛汽車等。
· 攝像頭擴(kuò)展頭
通過(guò)將攝像頭(最高支持4K)與Jetson TX1連接,并借助OpenCV和Visionworks進(jìn)行視覺計(jì)算。
· PCIe x4接口
這使得Jetson TX1與其它擴(kuò)展板卡得以結(jié)合,并碰撞出創(chuàng)新的火花。如可以通過(guò)PCIe x4接口將可編程的FPGA接入系統(tǒng),協(xié)助處理通信,加解密等業(yè)務(wù),從而進(jìn)一步提升Jetson TX1針對(duì)特殊應(yīng)用場(chǎng)景的性能。
· USB 2.0 Client/Host接口
USB2.0 Client/Host口也為很多應(yīng)用提供便利。一方面通過(guò)USB Host可以將各種USB外設(shè)連接在Jetson TX1上,此外,也可以通過(guò) USB Client 將Jetson TX1作為外設(shè)連接至電腦或其它設(shè)備,開發(fā)者完全可以隨意定義這個(gè)USB Client的具體行為和功能,即可以將Jetson TX1開發(fā)為具備任何希望功能的外設(shè)連接至電腦或其它設(shè)備。
初步的使用感受
在基礎(chǔ)開發(fā)環(huán)境配置過(guò)程中,最令人映像深刻的感受有以下兩點(diǎn):
· NVIDIA提供的工具軟件包強(qiáng)大且易用
首先,JetPack為用戶提供了從Jetson TX1系統(tǒng)鏡像燒錄,到Jetson TX1和Host電腦開發(fā)環(huán)境安裝配置的一站式解決方案,省去了用戶用在分別安裝、配置各個(gè)組件,解決版本匹配和組件間依賴關(guān)系上的時(shí)間和精力,使用戶可以方便快捷的完成環(huán)境的準(zhǔn)備,并將精力集中在產(chǎn)品的研發(fā)上。相比之下,我之前在PC和其他嵌入式平臺(tái)上,往往總要在環(huán)境配置上耗費(fèi)很多時(shí)間,需要想方設(shè)法地去解決組件版本不匹配和軟件依賴關(guān)系不滿足等問題。
其次,JetPack在安裝配置過(guò)程中向用戶提供了非常詳盡的操作引導(dǎo),使用戶,尤其是新手可以很順利的完成基礎(chǔ)環(huán)境的配置。例如在Jetson TX1操作系統(tǒng)映像燒錄過(guò)程開始時(shí),安裝程序會(huì)彈出提示窗口,詳細(xì)的介紹了如何將Jetson TX1設(shè)置為recovery模式以及相應(yīng)的注意事項(xiàng),并要求用戶確認(rèn)準(zhǔn)備妥當(dāng)后按鍵繼續(xù),最大程度的避免了用戶操作不當(dāng)造成的系統(tǒng)損壞;再例如在配置Jetson TX1軟件環(huán)境時(shí),安裝程序會(huì)以圖示的形式讓用戶選擇Jetson TX1與Host電腦的連接方式,直觀易懂。
· Jetson TX1相關(guān)的輔助資源非常豐富
NVIDIA圍繞Jetson TX1提供了從用戶手冊(cè),產(chǎn)品設(shè)計(jì)文檔,到工具軟件和內(nèi)核源碼等全套資料,便于不同水平的用戶查閱;同時(shí)還有專門針對(duì)Jetson嵌入式平臺(tái)的開發(fā)者論壇,方便用戶針對(duì)文檔中未涉及的問題和使用經(jīng)驗(yàn)進(jìn)行提問和交流,NVIDIA的官方支持人員也會(huì)在論壇中回復(fù)大家提出的各種技術(shù)問題,為用戶的開發(fā)過(guò)程提供有力支持。在本次編譯環(huán)境的配置過(guò)程中,我就曾遇到交叉編譯報(bào)錯(cuò),eclipse提示在Jetson TX1上找不到對(duì)應(yīng)路徑的問題,當(dāng)時(shí)查閱了很多文檔但都沒有找到問題所在,最終在開發(fā)者論壇中通過(guò)查閱開發(fā)者的歷史提問找到的問題所在,是Jetson TX1端的Git沒有正確配置,最終配置好Git后,編譯錯(cuò)誤也迎刃而解。
Jetson TX1憑借強(qiáng)悍的計(jì)算性能,相對(duì)超低的能耗,豐富的文檔和資源和多樣化的擴(kuò)展接口,得以成為開發(fā)者和創(chuàng)客們的有力工具。
評(píng)論