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

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

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

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

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

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

1. 概念性描述

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

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

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

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

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

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

而在Linux GNU Radio下,UHD驅(qū)動代替了NI-USRP驅(qū)動的工作 ??梢酝ㄟ^運(yùn)行 uhd_images_downloader 從網(wǎng)上下載鏡像到本地,uhd_image_loader 更新鏡像,之后會詳細(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í)也不會導(dǎo)致Windows的崩潰,因此選用方法二。

這里使用了常見的虛擬機(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)。

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

圖3 找到Ubuntu的命令行工具

打開命令行工具,輸入

sudo passwd回車

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

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

sudo apt-get update回車

更新源,會提示輸入管理員密碼,輸入剛才設(shè)置的管理員密碼后點(diǎn)回車。之后輸入(或復(fù)制粘貼,請勿使用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回車

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

2.2 安裝UHD驅(qū)動

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

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

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

cd uhd回車

cd host回車

mkdir build回車

cd build回車

輸入

cmake 。./回車

產(chǎn)生Makefile,輸入

make回車

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

make test回車

sudo make install回車

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

sudo ldconfig回車

export LD_LIBRARY_PATH=/usr/local/lib回車

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

uhd_find_devices回車

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

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

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

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

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

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

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

圖5 UHD FFT測試程序

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

2.3 安裝GNU Radio

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

首先回到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回車

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

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

在Linux下可通過以下方法修改設(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平臺及它的應(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ū)動版本一致即可。NI-USRP 15.5提供的鏡像和UHD 3.11.0提供的鏡像是一致的。如果你的USRP在Windows下更新過鏡像,可以跳過這一步。

在Ubuntu命令行中輸入:

sudo uhd_images_downloader回車

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

再輸入

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

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

3.3在GNU Radio中編程

首先,在命令行中輸入

gnuradio-companion回車

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

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

圖7 一個(gè)GRC程序

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

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

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

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

責(zé)任編輯:gt


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

    關(guān)注

    1625

    文章

    21620

    瀏覽量

    601238
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11207

    瀏覽量

    208717
  • 無線電
    +關(guān)注

    關(guān)注

    59

    文章

    2130

    瀏覽量

    116208
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    什么是GNU Radio開源軟件無線電平臺?

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

    什么是GNU Radio?

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

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

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

    GNU-Radio的安裝

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

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

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

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

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

    了解GNU Radio

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

    何在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í)開源軟件無線電(GNU Radio)需要有一定電腦基礎(chǔ)和深入的通信與信號處理知識,本文列舉了一些有用的資源,包括教程、網(wǎng)頁鏈接和一些在線教程。本教程的目的是幫助GNU Radio
    發(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開源軟件無線電平臺的簡介

    Gilmore 發(fā)起并捐助 $320,000.00 (US) 給 Eric Blossom 用來構(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>開源軟件無線電<b class='flag-5'>平臺</b>的簡介

    何在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:開放的軟件無線電平臺

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

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

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

    什么是 GNU/Linux?

    Linus本人曾經(jīng)爭辯說,將Linux稱為GNU/Linux簡直是荒謬的。
    發(fā)表于 06-13 09:14 ?3893次閱讀
    什么是 <b class='flag-5'>GNU</b>/<b class='flag-5'>Linux</b>?