usrp在windows下用labview可以進行開發,在ubuntu下用的則是gnuradio。
在windows界面下,labview有配套的NI-Driver能夠直接把固件燒進usrp,在此不在贅述。主要來說在ubuntu下怎麼用指令燒寫固件。
首先要確定在ubuntu下已經安裝好了UHD+GNU radio,然後確定使用uhd_find_devices
能夠發現設備,記住顯示的address,接下來會用到,不過一般情況下默認的是192.168.10.2。第三步是要確定images是否完整,一般情況下images需要從官網下載,具體地址是ettus官網images下載地址 ,下載後解壓到任意目錄都可以,但是前提是你自己要記得解壓到了哪裏, 然後要找到uhd提供的utils,我的utils文件夾目錄如下/uhd/host/utils
,這是因爲我直接把uhd裝到了根目錄下,在utils文件夾中使用ls命令查看包含文件,得到結果如下:
b2xx_fx3_utils.cpp octoclock_burn_eeprom.cpp uhd_image_loader.cpp usrp_burn_mb_eeprom.cpp
b2xx_side_channel.py octoclock_firmware_burner.cpp uhd_images_downloader.py.in usrp_cal_utils.hpp
CMakeLists.txt query_gpsdo_sensors.cpp uhd_usrp_probe.cpp usrp_e3x0_network_mode.cpp
converter_benchmark.cpp uhd_cal_rx_iq_balance.cpp uhd-usrp.rules usrp_n2xx_net_burner_gui.py
converter_benchmark.py uhd_cal_tx_dc_offset.cpp usrp2_card_burner_gui.py usrp_n2xx_net_burner.py
FastSendDatagramThreshold.reg uhd_cal_tx_iq_balance.cpp usrp2_card_burner.py usrp_n2xx_simple_net_burner.cpp
fx2_init_eeprom.cpp uhd_config_info.cpp usrp2_recovery.py usrp_x3xx_fpga_burner.cpp
latency uhd_find_devices.cpp usrp_burn_db_eeprom.cpp
需要特別指出的是,只有.py結尾的文件纔可以直接用./命令運行,我使用了usrp_n2xx_net_burner.py來燒寫固件,具體的指令如下
./usrp_n2xx_net_burner.py --addr="192.168.10.2" --fw /usr/share/gnuradio/images/usrp_n210_fw.bin --fpga /usr/share/gnuradio/images/usrp_n210_r4_fpga.bin
請注意空格,否則系統會報錯。
燒寫成功後的提示如下:
USRP-N2XX found.
************************************************************************************************
WARNING: This utility will be removed in an upcoming version of UHD. In the future, use
this command:
uhd_image_loader --args="type=usrp2,addr=192.168.10.2" \
--fw-path="/usr/share/gnuradio/images/usrp_n210_fw.bin" \
--fpga-path="/usr/share/gnuradio/images/usrp_n210_r4_fpga.bin"
************************************************************************************************
Hardware type: n210_r4
Flash size: 4194304
Sector size: 65536
Begin FPGA write: this should take about 1 minute...
Erasing 1572864 bytes at 1572864
Writing image
Verifying data
Read back 1299084 bytes
Success.
Time elapsed: 50.462293 seconds
Begin firmware write: this should take about 1 second...
Erasing 31744 bytes at 3145728
Writing image
Verifying data
Read back 16383 bytes
Success.
Time elapsed: 1.096099 seconds
好了,現在可以開始學習例程啦!
額,最終發現,用這個方法燒進去的固件不可用,usrp並不能自動識別,不過好在,有了之前無數次失敗的經驗,終於解決了這個問題。
在ubuntu下有一個命令真的是特別好用,就是locate。我使用了locate uhd_images_downloader.py
命令來查找這個文件,找到後按照所示目錄進入文件夾,文件夾裏的內容有這些:
fx2_init_eeprom uhd-usrp.rules usrp2_recovery.py usrp_n2xx_net_burner_gui.py
query_gpsdo_sensors usrp2_card_burner_gui.py usrp_burn_db_eeprom usrp_n2xx_net_burner.py
uhd_images_downloader.py usrp2_card_burner.py usrp_burn_mb_eeprom usrp_n2xx_simple_net_burner
運行./uhd_images_downloader.py後就可以開始下載所需要的iamges,接下來運行./usrp_n2xx_net_burner_gui.py,能夠看到引導界面,找到所需要的文件,選定設備後點擊最下面的按鈕,burn images開始燒寫鏡像。