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下使用。
圖1 兩套環(huán)境對比
在Windows系統(tǒng)下操作時(shí),可通過NI-USRP Configuration Utility 軟件進(jìn)行固件與FPGA鏡像的寫入/更新,如圖2 。這樣,USRP設(shè)備就能通過NI-USRP驅(qū)動(dòng)與上位機(jī)通信。
圖2 NI-USRP Configuration Utility – N2xx/NI-29xx Image Updater
而在Linux GNU Radio下,UHD驅(qū)動(dòng)代替了NI-USRP驅(qū)動(dòng)的工作 ??梢酝ㄟ^運(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)。
啟動(dòng)虛擬機(jī),按照第一次啟動(dòng)向?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ū)動(dòng)。
2.2 安裝UHD驅(qū)動(dòng)
UHD驅(qū)動(dòng)是以源碼形式提供的。在命令行中輸入
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ū)動(dòng)已經(jīng)安裝完畢,可通過輸入
uhd_find_devices回車
查看驅(qū)動(dòng)的版本,若在同一子網(wǎng)中已有USRP設(shè)備,可看到USRP設(shè)備的信息,如圖4
圖4 驗(yàn)證UHD安裝情況
一個(gè)小技巧:在輸入上條命令時(shí)輸入uhd_fin之后按Tab鍵看看會發(fā)生什么……自動(dòng)填充!對于輸一些比較長的命令時(shí)可以通過自動(dòng)填充功能降低拼寫錯(cuò)誤,省時(shí)省力。
在找到設(shè)備的情況下,可運(yùn)行以下程序查看CDMA移動(dòng)電話的上行頻譜
uhd_fft -a addr=10.144.97.123 -f 835M -s 10M回車
圖5 UHD FFT測試程序
注意,若USRP中的鏡像和UHD版本不匹配的話,無法直接運(yùn)行上述測試程序,可以通過更新firmware image 和 FPGA image使之匹配。更新方法見第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回車
完成后,可以測試安裝是否正確,輸入
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。
圖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下更新過鏡像,可以跳過這一步。
在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è)程序,在兩臺USRP-2922之間傳文件。使用隨機(jī)自帶的天線,工作在915M ISM頻段上。也可通過衰減器將兩個(gè)USRP的TX/RX接口直連。注意:使用USRP發(fā)射無線電信號需遵守當(dāng)?shù)叵嚓P(guān)法律法規(guī)。
圖7 一個(gè)GRC程序
圖8 程序運(yùn)行界面
圖9 程序運(yùn)行結(jié)果
責(zé)任編輯:gt
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602981 -
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209323 -
無線電
+關(guān)注
關(guān)注
59文章
2139瀏覽量
116431
發(fā)布評論請先 登錄
相關(guān)推薦
評論