衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Linux下搭建GNU Radio平臺(tái)及它的應(yīng)用分析

電子設(shè)計(jì) ? 來(lái)源:Xilinx ? 作者:judyzhong ? 2020-01-02 07:56 ? 次閱讀

GNU Radio是一個(gè)開源的軟件無(wú)線電開發(fā)平臺(tái),可以通過(guò)圖形化界面或C++Python等文本語(yǔ)言快速開發(fā)軟件無(wú)線電應(yīng)用,本文介紹了Linux下GNU Radio平臺(tái)的搭建及如何在該平臺(tái)下使用NI USRP設(shè)備。

1. 概念性描述

USRP設(shè)備需要固件(firmware image)和FPGA鏡像(FPGA image)且版本一致才能正常工作,此二者與上位機(jī)使用何種環(huán)境:Windows還是Linux無(wú)關(guān),即:同一套固件和鏡像不需要更換可在Windows LabVIEW及Linux GNU Radio下使用。

如何在Linux下搭建GNU Radio平臺(tái)及它的應(yīng)用分析

圖1 兩套環(huán)境對(duì)比

在Windows系統(tǒng)下操作時(shí),可通過(guò)NI-USRP Configuration Utility 軟件進(jìn)行固件與FPGA鏡像的寫入/更新,如圖2 。這樣,USRP設(shè)備就能通過(guò)NI-USRP驅(qū)動(dòng)與上位機(jī)通信

如何在Linux下搭建GNU Radio平臺(tái)及它的應(yīng)用分析

圖2 NI-USRP Configuration Utility – N2xx/NI-29xx Image Updater

而在Linux GNU Radio下,UHD驅(qū)動(dòng)代替了NI-USRP驅(qū)動(dòng)的工作 。可以通過(guò)運(yùn)行 uhd_images_downloader 從網(wǎng)上下載鏡像到本地,uhd_image_loader 更新鏡像,之后會(huì)詳細(xì)描述。

2. 環(huán)境搭建

2.1 安裝Ubuntu系統(tǒng)

我們常用的電腦都是Windows系統(tǒng)的,有兩種方法在電腦上運(yùn)行Linux。第一種方法是安裝雙系統(tǒng),第二種方法是安裝虛擬機(jī)并在虛擬機(jī)中安裝Linux,由于方法二不需要額外分區(qū)、更改BIOS等操作、在操作不當(dāng)時(shí)也不會(huì)導(dǎo)致Windows的崩潰,因此選用方法二。

這里使用了常見(jiàn)的虛擬機(jī)軟件 VMware Workstation。在以下鏈接中可以下載Ubuntu 16.04:https://www.ubuntu.com/download/desktop Ubuntu是一個(gè)Linux常用的發(fā)行版。下載到的文件是Ubuntu系統(tǒng)的鏡像.iso文件,在VMware中選擇File – New Virtual Machine 按照提示一步步點(diǎn)擊下一步即可,在配置虛擬機(jī)硬件時(shí),CPU數(shù)及CPU核心數(shù)與實(shí)際CPU一致即可,內(nèi)存可設(shè)的稍大一些,我設(shè)置了8G內(nèi)存(共16G物理內(nèi)存),硬盤設(shè)置40G(裝完Ubuntu系統(tǒng)、安裝完GNU Radio的所有依賴軟件后實(shí)際使用了8.1G)。

啟動(dòng)虛擬機(jī),按照第一次啟動(dòng)向?qū)Ш?jiǎn)單配置Ubuntu,進(jìn)入桌面后點(diǎn)擊左上角的圖標(biāo),搜索terminal即命令行工具,如圖3 。

圖3 找到Ubuntu的命令行工具

打開命令行工具,輸入

sudo passwd回車

設(shè)置管理員(Supper User)密碼即root密碼,在用戶設(shè)置密碼之前,Ubuntu每次開機(jī)會(huì)產(chǎn)生一個(gè)隨機(jī)的root密碼。注意,輸密碼時(shí)不會(huì)顯示“****”,而是什么字符也不顯示,這一點(diǎn)和我們一般的認(rèn)知很不一樣!

系統(tǒng)提示再次輸入密碼,第二次輸入密碼并確認(rèn)、兩次一致后密碼設(shè)置成功。接下來(lái)輸入

sudo apt-get update回車

更新源,會(huì)提示輸入管理員密碼,輸入剛才設(shè)置的管理員密碼后點(diǎn)回車。之后輸入(或復(fù)制粘貼,請(qǐng)勿使用Ctrl C + V的快捷鍵,而是鼠標(biāo)右鍵在命令行窗口中單擊 – 選擇paste)

sudo apt-get -y install git swig cmake doxygen build-essential libboost-all-dev libtool libusb-1.0-0 libusb-1.0-0-dev libudev-dev libncurses5-dev libfftw3-bin libfftw3-dev libfftw3-doc libcppunit-1.13-0v5 libcppunit-dev libcppunit-doc ncurses-bin cpufrequtils python-numpy python-numpy-doc python-numpy-dbg python-scipy python-docutils qt4-bin-dbg qt4-default qt4-doc libqt4-dev libqt4-dev-bin python-qt4 python-qt4-dbg python-qt4-dev python-qt4-doc python-qt4-doc libqwt6abi1 libfftw3-bin libfftw3-dev libfftw3-doc ncurses-bin libncurses5 libncurses5-dev libncurses5-dbg libfontconfig1-dev libxrender-dev libpulse-dev swig g++ automake autoconf libtool python-dev libfftw3-dev libcppunit-dev libboost-all-dev libusb-dev libusb-1.0-0-dev fort77 libsdl1.2-dev python-wxgtk3.0 git-core libqt4-dev python-numpy ccache python-opengl libgsl-dev python-cheetah python-mako python-lxml doxygen qt4-default qt4-dev-tools libusb-1.0-0-dev libqwt5-qt4-dev libqwtplot3d-qt4-dev pyqt4-dev-tools python-qwt5-qt4 cmake git-core wget libxi-dev gtk2-engines-pixbuf r-base-dev python-tk liborc-0.4-0 liborc-0.4-dev libasound2-dev python-gtk2 libzmq-dev libzmq1 python-requests python-sphinx libcomedi-dev python-zmq回車

大約會(huì)下載1個(gè)多G的依賴庫(kù)和軟件。等待其下載完成后,下載編譯安裝UHD驅(qū)動(dòng)。

2.2 安裝UHD驅(qū)動(dòng)

UHD驅(qū)動(dòng)是以源碼形式提供的。在命令行中輸入

git clone https://github.com/EttusResearch/uhd回車

會(huì)將uhd源碼拷貝到HOME路徑下,轉(zhuǎn)到該路徑并新建build目錄

cd uhd回車

cd host回車

mkdir build回車

cd build回車

輸入

cmake 。./回車

產(chǎn)生Makefile,輸入

make回車

編譯源碼,大約需要10-30min時(shí)間,可以通過(guò)開啟多線程編譯可大大縮短編譯時(shí)間,用make -j4 代替make即可,就會(huì)啟用4個(gè)線程同時(shí)編譯,但也不是越多越好,一般和計(jì)算機(jī)CPU線程數(shù)或虛擬機(jī)CPU線程數(shù)一致即可。如編譯中途死機(jī)(虛擬機(jī)可能會(huì)出現(xiàn)、由于內(nèi)存不足),重新來(lái)過(guò)時(shí)會(huì)接著之前的編譯進(jìn)度繼續(xù)。之后安裝編譯成功的庫(kù),輸入

make test回車

sudo make install回車

更新共享庫(kù)和環(huán)境變量

sudo ldconfig回車

export LD_LIBRARY_PATH=/usr/local/lib回車

此時(shí)UHD驅(qū)動(dòng)已經(jīng)安裝完畢,可通過(guò)輸入

uhd_find_devices回車

查看驅(qū)動(dòng)的版本,若在同一子網(wǎng)中已有USRP設(shè)備,可看到USRP設(shè)備的信息,如圖4

如何在Linux下搭建GNU Radio平臺(tái)及它的應(yīng)用分析

圖4 驗(yàn)證UHD安裝情況

一個(gè)小技巧:在輸入上條命令時(shí)輸入uhd_fin之后按Tab鍵看看會(huì)發(fā)生什么……自動(dòng)填充!對(duì)于輸一些比較長(zhǎng)的命令時(shí)可以通過(guò)自動(dòng)填充功能降低拼寫錯(cuò)誤,省時(shí)省力。

在找到設(shè)備的情況下,可運(yùn)行以下程序查看CDMA移動(dòng)電話的上行頻譜

uhd_fft -a addr=10.144.97.123 -f 835M -s 10M回車

如何在Linux下搭建GNU Radio平臺(tái)及它的應(yīng)用分析

圖5 UHD FFT測(cè)試程序

注意,若USRP中的鏡像和UHD版本不匹配的話,無(wú)法直接運(yùn)行上述測(cè)試程序,可以通過(guò)更新firmware image 和 FPGA image使之匹配。更新方法見(jiàn)第3節(jié)。

2.3 安裝GNU Radio

安裝GNU Radio與安裝UHD驅(qū)動(dòng)的步驟類似。

首先回到home路徑

cd $HOME回車

之后下載GNU Radio源碼

git clone --recursive https://github.com/gnuradio/gnuradio回車

下載完成后新建build目錄

cd gnuradio回車

mkdir build回車

cd build回車

生成Makefile并編譯安裝

cmake 。./ 回車

make回車

make test回車

sudo make install回車

sudo ldconfig回車

完成后,可以測(cè)試安裝是否正確,輸入

gnuradio-companion回車

GNU Radio 開發(fā)環(huán)境應(yīng)當(dāng)可以正確打開。至此,環(huán)境搭建完成[3] 。

3. 運(yùn)行一個(gè)GNU Radio程序

3.1 修改USRP IP地址并連接

這里使用的是USRP-2922,USRP設(shè)備使用固定IP,默認(rèn)IP是192.168.10.2 。首先將USRP設(shè)備通過(guò)網(wǎng)線直連至PC,設(shè)置PC的ip為192.168.10.1,子網(wǎng)掩碼255.255.255.0,在Windows下可通過(guò)NI-USRP Configuration Utility軟件修改USRP設(shè)備的IP。在本次驗(yàn)證中,使用了超過(guò)1臺(tái)的USRP,需要通過(guò)交換機(jī)和上位機(jī)通信,在處于同一個(gè)子網(wǎng)的PC上查看PC的IP地址:windows徽標(biāo)鍵+R -》 輸入cmd回車 -》 輸入ipconfig回車,找到自己的本地網(wǎng)卡的IPv4地址,如10.144.97.17,將兩臺(tái)USRP的IP設(shè)置到同一個(gè)子網(wǎng)下,如10.144.97.123和10.144.97.124 。

在Linux下可通過(guò)以下方法修改設(shè)備IP [4] ,cd 到/usr/local/lib/uhd/utils目錄下,運(yùn)行

sudo 。/usrp2_recovery.py --ifc=eth0 --new-ip=10.144.97.123回車

以上方法需要防火墻允許UDP廣播。需要注意的是,在虛擬機(jī)中運(yùn)行Linux的話,需要將虛擬機(jī)的網(wǎng)卡配置為直連或者與主機(jī)共用IP。

如何在Linux下搭建GNU Radio平臺(tái)及它的應(yīng)用分析

圖6 虛擬機(jī)網(wǎng)卡配置

設(shè)置IP后,可以ping一下USRP,命令行輸入:

ping 10.144.97.123回車

此時(shí)應(yīng)當(dāng)看到ping通的信息,按Ctrl + Z可以退出ping的狀態(tài)。

3.2 更新firmware image和FPGA image

如開篇所述,這兩個(gè)鏡像在Windows和Linux下是通用的,只要版本和驅(qū)動(dòng)版本一致即可。NI-USRP 15.5提供的鏡像和UHD 3.11.0提供的鏡像是一致的。如果你的USRP在Windows下更新過(guò)鏡像,可以跳過(guò)這一步。

在Ubuntu命令行中輸入:

sudo uhd_images_downloader回車

這樣可以自動(dòng)地將網(wǎng)絡(luò)上合適的鏡像下載到本地計(jì)算機(jī)中。

再輸入

uhd_image_loader --args=“type=usrp2,addr=,reset”回車

將鏡像下載到USRP設(shè)備中并重啟設(shè)備,這里的鏡像是自動(dòng)選擇版本的。

3.3在GNU Radio中編程

首先,在命令行中輸入

gnuradio-companion回車

運(yùn)行GNU Radio開發(fā)環(huán)境,該環(huán)境也是使用圖形化模塊編程的,詳細(xì)使用教程可以在網(wǎng)絡(luò)上搜索。這里可以編寫一個(gè)程序,在兩臺(tái)USRP-2922之間傳文件。使用隨機(jī)自帶的天線,工作在915M ISM頻段上。也可通過(guò)衰減器將兩個(gè)USRP的TX/RX接口直連。注意:使用USRP發(fā)射無(wú)線電信號(hào)需遵守當(dāng)?shù)叵嚓P(guān)法律法規(guī)。

如何在Linux下搭建GNU Radio平臺(tái)及它的應(yīng)用分析

圖7 一個(gè)GRC程序

如何在Linux下搭建GNU Radio平臺(tái)及它的應(yīng)用分析

圖8 程序運(yùn)行界面

如何在Linux下搭建GNU Radio平臺(tái)及它的應(yīng)用分析

圖9 程序運(yùn)行結(jié)果

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1630

    文章

    21796

    瀏覽量

    605999
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11345

    瀏覽量

    210391
  • 無(wú)線電
    +關(guān)注

    關(guān)注

    60

    文章

    2148

    瀏覽量

    116808
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    軟件無(wú)線電安全之GNU Radio基礎(chǔ)知識(shí)

    GNU Radio是一款開源的軟件工具集,專注于軟件定義無(wú)線電(SDR)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。該工具集支持多種SDR硬件平臺(tái),包括USRP、HackRF One和RTL-SDR等。用戶可以通過(guò)GN
    的頭像 發(fā)表于 02-25 10:20 ?5058次閱讀
    軟件無(wú)線電安全之<b class='flag-5'>GNU</b> <b class='flag-5'>Radio</b>基礎(chǔ)知識(shí)

    什么是GNU Radio開源軟件無(wú)線電平臺(tái)

    GNU Radio開源軟件無(wú)線電平臺(tái)究竟是什么?
    發(fā)表于 08-02 08:18

    什么是GNU Radio

    什么是GNU Radio? 開放的軟件無(wú)線電平臺(tái)有什么優(yōu)勢(shì)?
    發(fā)表于 08-02 08:13

    GNU radio 和USRP入門指導(dǎo)

    GNU radio 和USRP入門指導(dǎo)
    發(fā)表于 12-10 13:33 ?42次下載

    GNU-Radio的安裝

    GNU-Radio的安裝
    發(fā)表于 03-27 08:44 ?1次下載

    GNU_radio_和USRP_學(xué)習(xí)手冊(cè)

    GNU_radio_和USRP_學(xué)習(xí)手冊(cè)
    發(fā)表于 03-27 09:15 ?11次下載

    LinuxGNU Radio平臺(tái)搭建以及該如何使用NI USRP設(shè)備

    GNU Radio是一個(gè)開源的軟件無(wú)線電開發(fā)平臺(tái),可以通過(guò)圖形化界面或C++、Python等文本語(yǔ)言快速開發(fā)軟件無(wú)線電應(yīng)用,本文介紹了Linux
    發(fā)表于 11-15 19:29 ?1w次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>下</b><b class='flag-5'>GNU</b> <b class='flag-5'>Radio</b><b class='flag-5'>平臺(tái)</b>的<b class='flag-5'>搭建</b>以及該如何使用NI USRP設(shè)備

    了解GNU Radio

    Gilmore 發(fā)起并捐助 $320,000.00 (US) 給 Eric Blossom 用來(lái)構(gòu)建代碼和維護(hù)。GNU Radio遵循 GNU 的 GPL的條款分發(fā),的目的是給普通
    發(fā)表于 11-21 20:34 ?4593次閱讀

    何在Linux環(huán)境搭建51單片機(jī)的開發(fā)燒寫環(huán)境

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何在Linux環(huán)境搭建51單片機(jī)的開發(fā)燒寫環(huán)境。
    發(fā)表于 08-15 17:32 ?2次下載
    如<b class='flag-5'>何在</b><b class='flag-5'>Linux</b>環(huán)境<b class='flag-5'>下</b><b class='flag-5'>搭建</b>51單片機(jī)的開發(fā)燒寫環(huán)境

    學(xué)習(xí)GNU Radio需要應(yīng)該如何準(zhǔn)備

    學(xué)習(xí)開源軟件無(wú)線電(GNU Radio)需要有一定電腦基礎(chǔ)和深入的通信與信號(hào)處理知識(shí),本文列舉了一些有用的資源,包括教程、網(wǎng)頁(yè)鏈接和一些在線教程。本教程的目的是幫助GNU Radio愛(ài)
    發(fā)表于 11-18 10:31 ?2次下載
    學(xué)習(xí)<b class='flag-5'>GNU</b> <b class='flag-5'>Radio</b>需要應(yīng)該如何準(zhǔn)備

    GNU Radio開源軟件無(wú)線電平臺(tái)的簡(jiǎn)介

    Gilmore 發(fā)起并捐助 $320,000.00 (US) 給 Eric Blossom 用來(lái)構(gòu)建代碼和維護(hù)。GNU Radio遵循 GNU 的 GPL的條款分發(fā),的目的是給普通
    發(fā)表于 10-26 10:41 ?1次下載
    <b class='flag-5'>GNU</b> <b class='flag-5'>Radio</b>開源軟件無(wú)線電<b class='flag-5'>平臺(tái)</b>的簡(jiǎn)介

    何在Linux環(huán)境實(shí)現(xiàn)Python環(huán)境的搭建

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何在Linux環(huán)境實(shí)現(xiàn)Python環(huán)境的搭建
    發(fā)表于 08-24 12:12 ?14次下載
    如<b class='flag-5'>何在</b><b class='flag-5'>Linux</b>環(huán)境<b class='flag-5'>下</b>實(shí)現(xiàn)Python環(huán)境的<b class='flag-5'>搭建</b>

    GNU Radio:開放的軟件無(wú)線電平臺(tái)

    GNU Radio:開放的軟件無(wú)線電平臺(tái)介紹。
    發(fā)表于 05-27 11:07 ?10次下載

    GNU/LinuxLinux的區(qū)別在哪?

    GNUGNU/LinuxLinux 之間到底是什么關(guān)系?什么是自由軟件?什么是GPL協(xié)議?什么是自由軟件基金會(huì)?什么是GNU恥辱榜?有多
    的頭像 發(fā)表于 02-17 09:36 ?1724次閱讀

    什么是 GNU/Linux

    Linus本人曾經(jīng)爭(zhēng)辯說(shuō),將Linux稱為GNU/Linux簡(jiǎn)直是荒謬的。
    發(fā)表于 06-13 09:14 ?4109次閱讀
    什么是 <b class='flag-5'>GNU</b>/<b class='flag-5'>Linux</b>?
    百家乐官网技巧论坛| 盛世国际娱乐场| 百家乐分析软件下| 网络百家乐官网免费试玩| 威尼斯人娱乐城免费注册| 百家乐官网详情| 拉斯维加斯国际娱乐| 百家乐玩法教程| 百家乐官网国际娱乐场| 京城娱乐城开户| 百家乐赢退输进有哪些| 速博百家乐官网的玩法技巧和规则| 百家乐官网中的概率| 励骏会百家乐的玩法技巧和规则| 德晋百家乐官网的玩法技巧和规则| 增城市| 太阳城俱乐部| 蓝盾百家乐平台租用| 广州百家乐官网牌具公司| 色达县| 大发888注册送58网站| 百家乐平注常赢打法| 斗地主百家乐官网的玩法技巧和规则 | 大发888娱乐场下| 百家乐h游戏怎么玩| 百家乐官网金海岸软件| 白水县| 大发888真人体育| 金花百家乐的玩法技巧和规则| 属兔魔羯女在哪个方位做生意| 百家乐官网五子棋| 汾阳市| 博彩业| 百家乐缩水软件| 百家乐玄机| 百家乐官网追号软件| 百家乐官网讯特| 百家乐官网投注助手| 凤凰娱乐开户| 大发888游戏破解软件| 百家乐软件辅助器|