红联Linux门户
Linux帮助

在ubuntu下使用指令烧写固件到usrp N210

发布时间:2016-11-23 10:50:07来源:linux网站作者:atnanyang
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下载地址(http://files.ettus.com/binaries/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开始烧写镜像。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/26253.html