USRP 2954(X310)在ubuntu系统下版本不兼容的问题

文章讲述了在运行Gnuradio时遇到的FPGA版本不兼容错误,介绍了如何通过uhd_images_downloader下载并烧录USRPX310FPGA镜像,包括两种下载方法和烧录步骤,最后提醒烧录后需重启设备以确保兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题:运行Gnuradio时报错

RuntimeError: RuntimeError: Expected FPGA compatibility number 38, but got 39:
The FPGA image on your device is not compatible with this host code build.
Download the appropriate FPGA images for this version of UHD.
Please run:

 "/lib/x86_64-linux-gnu/uhd/utils/uhd_images_downloader.py"

这是由于FPGA版本不兼容,2954(x310)系列比较烦人的是内部有一个linux系统,也要配置环境。 如果内部系统用的FPGA版本和外部控制电脑不一致,虽然UHD驱动仍然可以找到设备,调试的时候就会报错。所以就需要给2954烧录镜像。

二、解决办法:参考USRP X310使用的准备工作--Linux进行FPGA image烧录_心雨如雾的博客-优快云博客

        1、我采用的是方法一,如果你已经安装好了UHD,那么就只需要从第三步开始,下载镜像并烧录。下载镜像文件有两种方法,第一种就是参考里面的方法,在网址files.ettus.com:/binaries/uhd_stable/latest_release/

        当中选择所需要的版本,如果你是uhd4.1.0,那就选择4.1.0即可。解压下载好的压缩文件,打开文件夹下的目录/host/utils,然后右键选择在终端中打开,输入ls即可看到所有文件,再输入

sudo uhd_images_downloader 即可下载USRP的镜像bit,然后进行镜像的烧录.

默认目录会在终端当中有提示,我的在/usr/local/share/uhd,如果是安装在默认位置,就运行以下命令进行烧录:

uhd_image_loader --args="type=x300,addr=192.168.10.3,fpga=HG"

注意在运行之前,先输入uhd_find_devices查看2954的ip地址;

如果没有在默认位置,就运行:

uhd_image_loader --args="type=x300,addr=192.168.10.2" --fpga-path="<path_to_images>/usrp_x310_fpga_HG.bit"

其中<path_to_images>就是路径。

        2、另一种下载镜像的办法,https://files.ettus.com/binaries/cache/x3xx/,在这个网站里面选择对应版本的FPGA镜像,直接下载,解压后采用非默认位置的烧录命令进行烧录,不过这种方法我还不知道怎么判断所需版本,我是试了两个就可以了。

        注意:烧录完之后需要重启2954再运行gnuradio。

### USRP X310 硬件介绍 USRP X300/X310 是 NI Ettus Research 推出的一款高性能软件定义无线电平台,适用于广泛的无线通信研究和开发场景。该设备具有强大的硬件性能和灵活的接口设计,能够满足多种复杂的应用需求。 #### 硬件规格 USRP X310 提供了卓越的射频性能和数据吞吐能力,以下是其主要硬件规格[^1]: - **频率范围**: 从直流至 6 GHz。 - **带宽**: 单通道最大支持 160 MHz 带宽。 - **采样率**: 最高可达 125 MSPS(每秒百万样本),适合高频信号采集与生成。 - **ADC/DAC分辨率**: 14-bit ADC 和 DAC,确保高质量的信号转换。 - **通道数**: 双通道收发结构,允许独立或同步操作两个射频路径。 - **网络接口**: 配备双 10 GbE SFP+ 光纤接口,用于高速数据传输。 - **扩展性**: 支持外接子板(Daughterboards)以覆盖更广的频段,例如 UBX-160 子板可以进一步提升工作频率上限。 #### 功能特点 USRP X310 不仅提供了出色的硬件性能,在功能性方面也表现出极大的灵活性[^2]: - **多频段支持**: 结合不同的子板,可以在低频到微波范围内自由切换。 - **大带宽处理**: 利用高达 160 MHz 的瞬时带宽执行复杂的调制解调任务。 - **时间戳与时钟同步**: 内置精确的时间戳机制以及对外部参考时钟的支持(如 10 MHz 和 PPS 输入),非常适合分布式系统的协同作业。 - **开放生态系统**: 完全兼容开源工具链,包括 GNU Radio、Python-UHD 库以及其他第三方应用程序接口(API),便于快速原型构建和技术验证。 #### 使用说明 为了充分发挥 USRP X310 的潜力,使用者需遵循一定的指导原则并合理配置相关组件: ##### 实验准备事项 当开展涉及毫米波频段(如 60GHz)的近场 MIMO 测试时需要注意以下几点[^2]: - **频率设置**: 如果计划超出默认的最大频率,则需要借助额外的变频模块将中心频率抬升至目标区间。 - **功率管理**: 控制发射功率不超过安全阈值以防损坏敏感元件;通常建议维持在低于 10 dBm 的水平下运作。 - **天线校准**: 对于近距离通讯而言,精准对齐双方天线至关重要,因为任何偏差都会显著削弱有效信号强度。 - **同步策略**: 当涉及到多节点间协调动作时,请考虑引入统一的标准时基源比如来自 OctoClock-G 设备所提供的服务。 ##### 编程实践案例 下面给出一段基于 Python 的简单脚本示例展示如何初始化 USRP X310 并完成基本的数据流交互过程[^2]: ```python import uhd from scipy import signal def setup_usrp(): usrp = uhd.usrp.MultiUSRP("addr=192.168.10.2") # 替换为实际IP地址 usrp.set_rx_rate(1e6) # 设置接收速率(MHz) usrp.set_tx_rate(1e6) # 设置发送速率(MHz) freq = 2.4e9 # 中心频率(GHz) gain = 30 # 天线增益(dB) usrp.set_rx_freq(freq) usrp.set_tx_freq(freq) usrp.set_rx_gain(gain) usrp.set_tx_gain(gain) return usrp if __name__ == "__main__": device = setup_usrp() samples_to_send = np.array([complex(np.cos(i),np.sin(i)) for i in range(100)], dtype=np.complex64) streamer = device.get_tx_stream(uhd.stream_args(&#39;fc32&#39;)) metadata = uhd.types.TXMetadata() buffer_sizer = min(int(device.get_tx_num_channels() * 1e3), len(samples_to_send)) tx_buff = np.zeros(buffer_sizer, dtype=np.complex64) tx_buff[:] = samples_to_send[:buffer_sizer] streamer.send(tx_buff,metadata) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值