最近帮朋友一起研究了USRP系列硬件的上位机配置,USRP在Linux下非常友好,在windows下,就不太友好了。还是踩了几个坑,我把必要的文件打包到云盘。
链接https://pan.baidu.com/s/1rMJyQEYQHCI8k8qEXsHKyQ: 提取码:1234

1 USRP的加载流程

朋友公司有B210、N210等板子. B210不通过网络接口,因此只要驱动安装好,供电、速率都搞定了,就妥了。另外,B210射频部分和基带部分是整合好的,靠AD936X系列芯片(有些兼容板卡在936X的小系列上偷工减料)直接从射频到基带,集成化程度高。网络板,如N210,X310等,是带子母板的,通过千兆或者万兆网连接,可根据需求换不同的射频子板,灵活性好。

驱动USB版,需要1. 识别USB,2.传送FPGA固件,即编译好的门文件。
驱动网络版,需要1. 加载网络。2.传送FPGA固件。

USRP的驱动UHD(USRP Hardware Driver)对各类接口支持的很好,只要环境变量设置好(在Linux下默认设置无需操作),就会统一自动执行下列步骤:

  1. 枚举设备
  2. 兼容性检查:如果是带有Flash的板卡(如X300系列),会检查Flash内的FPGA固件版本和上位机UHD是不是兼容。如果不兼容,就会提示用户下载相应版本并上传固件(uhd_image_loader)。
  3. 加载网络接口:一旦设备兼容检查通过,根据–args=“type=XXX,addr=XXX” 参数选定的当前设备,检查是不是需要加载 RFNoC。如果需要,到/usr/share/uhd/rfnoc文件夹下加载。
  4. 加载固件:如果是不带FLASH的版本,则加载/usr/share/uhd/uhd/images下对应型号的固件。一般对于带FLASH的版本,这个时候设备就Ready啦。
  5. 加载校准文件:校准文件是运行uhd_cal_rx_iq_balance、uhd_cal_tx_dc_offset、uhd_cal_tx_iq_balance三个工具后为当前设备产生的精确校准文件,用于IQ均衡、直流去除等等。这一步不是必须的。

这个步骤比较通用,但对于网络板的板子,有些额外的细节要注意。

  1. 网卡MTU限制。MTU是最大传输单元,原本越大越好。但是,太大的MTU会超过FastSendDatagramThreshold,导致传输延迟超过实时控制的需求。此时,就会获得警告。在发射时,会不断提示下面的错误,即使采样率很低,发射也会断续、卡顿。
[Error] [tx_flow_ctrl_ack] timeout getting a send buffer

因此,要双击PothosSDR\share\uhd下的FastSendDatagramThreshold.reg,或者修改注册表:

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AFD\Parameters]
"FastSendDatagramThreshold"=dword:00002000

x310建议设置为8192(0x2000)。

  1. 采样率不要超过传输能力,否则会出现错误提示。IQ基带双字节格式,1个样点就占 4 字节,32比特。因此,Mbps的带宽要除以32,基本得到最大单工速率。双工,还要继续/2。若是浮点型数据,则要除以64。USB3.0相对1Gbps网卡而言还是好多了。

2 windows下的讨巧配置

对于常见的Linux发行版,USRP的驱动UHD(USRP Hardware Driver)基本都是傻瓜一条命令搞定,比如apt-get, yum, pacman等等,连着开发包、python、GNU-Radio、GQRX等等通吃,基本没有什么门槛。一旦安装完毕,默认的 /usr/share/uhd文件夹下,就有对应版本的RFNoC、images两个文件夹,运行uhd_usrp_probe即可完成测试。

但在windows下,就很麻烦了。经过一番折腾,把较优方案写在下面。

2.1 USB驱动

windows下,若是USB的板卡,需要安装USB驱动。我在网站 https://www.ettus.com.cn/Download/software/windows_install.html 下载windows的USB驱动。

注意,win-10下安装没有问题,win7没有试过。据说会有问题。

这篇教程https://www.ettus.com.cn/peixun/33/也有帮助,但只看驱动部分即可。

2.2 安装配置PothosSDR

PothosSDR是一款软件无线电的一揽子方案,可以支持市面上大部分的大众SDR产品,免去了环境配置、编译的大部分工作,可谓居家必备。

2.2.1 安装PothosSDR

我安装的是 PothosSDR-2020.01.26-vc14-x64,对应的UHD 镜像为 3.15。
** 注意,错误的镜像版本会影响到使用 **
也可以下载最新版
https://downloads.myriadrf.org/builds/PothosSDR/
安装后,文件夹与Linux的usr文件夹类似:

2.2.2 拷入或者下载FPGA镜像

环境变量基本都设置好了,不过share里木有images文件夹,因此要把对应版本的images拷贝过来。拷贝过来后,文件夹这个样子:

执行脚本uhd_images_downloader.py也可以直接下载。

2.2.3 设置环境变量

环境变量中,已经有了

UHD_PKG_PATH= 路径到\Pothos安装文件夹
VOLK_PREFIX=  路径到\Pothos安装文件夹

如果是要使用带有射频交换网的高级板子(比如X310的FPGA内可拖动模块),还要新加上

UHD_RFNOC_DIR=路径到\rfnoc

新加入后,别忘记重启cmd和其他程序。

2.3 设置MTU

如果TX没有问题,跳过这一步。非网卡的也不用看。若一直报错:

[Error] [tx_flow_ctrl_ack] timeout getting a send buffer

则执行:

  1. 查看网络连接
netsh interface ipv4 show subinterfaces
  1. 设置MTU,比如8000
netsh interface ipv4 set subinterface "本地连接 1" mtu=8000 store=persistent

当然,如果没有专用于USRP的网卡,建议把 store=persistent 去掉,以免影响上网。设置为8000的MTU同时,也要确保注册表的UDP快速传输门限也得到了修改:

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AFD\Parameters]
"FastSendDatagramThreshold"=dword:00002000

2.4 安装python

安装python2.7,用于GNURadio。
https://www.python.org/downloads/windows/
为后续方便,还要安装
GTK2-Runtime Win64,在链接https://pan.baidu.com/s/1rMJyQEYQHCI8k8qEXsHKyQ: 提取码:1234 ,文件名
gtk2-runtime-2.22.1-2014-02-01-ts-win64.exe

2.5 烧写FLASH

只有具备FLASH的板子要看这个步骤。B210每次uhd驱动加载时,会自己处理的,当然也可以执行。
获取设备

uhd_find_devices.exe

烧写

uhd_image_loader.exe --args="type=类型名,addr=X.X.X.X"

烧完后,重启板卡,运行uhd_usrp_probe.exe即可看到板卡的参数。如果遇到问题或者警告,其提示信息里会有详细的应对说明,不用慌。

2.6 运行gqrx测试效果

到了这一步,即可运行gqrx啦!

注意,音频设备里面,我的计算机有两个Default,选择第一个会崩溃(Bug?)

启动开始菜单里面的 PothosSDR 的 gqrx,听听广播!

2.7 运行校准

每个硬件在0-6G范围内的射频特性不一样,由工艺决定。UHD有校准功能,可以尽可能校准各类参数。这一步比较耗时间,也可以不做。用射频直连线连接RX,TX,把外接的GPS、时钟(如果有的话)都接好,而后运行
uhd_cal_rx_iq_balance.exe
uhd_cal_tx_dc_offset.exe
uhd_cal_tx_iq_balance.exe
进行校准。该工作不是必须,且只用做一次。做完后,在“我的文档”里,会产生几个csv文件,存储了全频段范围的微调参数。下次加载uhd驱动时,程序会自动读取。

3 搭建第一个GNU-Radio实验

运行 开始菜单的PothosSDR的GNURadio Companion,首次提示下载依赖,有点慢, 建议夜里挂机。经过两三次检查,即可顺利启动。万一启动不了,查看提示即可。

windows下的Companion和Linux差不多,不过,由于Pothos做了深度定制,支持的硬件多多。双击可以引入模块,我的计算机里,拖拽似乎不行。

4 搭建VC++开发环境

如果要使用UHD库的底层功能,还需要VC++或者GNUC++编译器。
设置Inlcude路径时,加入路径
PothosSDR\include
连接时,加入路径
PothosSDR\lib
最后,链接uhd.lib即可。但受到编译器的版本影响,若使用了不同版本的Visual C++编译器,则主要考虑使用C接口API而不是C++…C++接口API因为boost和stl库的二进制内存结构差异,会导致诡异的runtime error

具体示例代码参考
https://github.com/EttusResearch/uhd/tree/master/host/examples
这里需要注意的是,usrp的C++支持需要boost库。
可以参考
https://www.ettus.com.cn/peixun/33/

5 mingw + Qt 编译器

如果使用了mingw编译器的Qt,比如 msys2的Qt,请务必注意要把 PothosSDR Include里的 pthread.h 改名为pthread.hpp,否则会因为Mingw配置不同导致失败。

同时,由于boost库是C++库,即使使用了mingw编译器的boost,也不代表可以用 Pothos的libuhd,因为 它的libuhd是VC++ 编译的。有两个解决方案:
(1) 自行编译libuhd
(2) 使用 libuhd 的 C API。

6 后记

我把必要的文件打包到云盘。
链接https://pan.baidu.com/s/1rMJyQEYQHCI8k8qEXsHKyQ: 提取码:1234

USRP 套件在windows下的快速引入相关推荐

  1. Windows下如何快速查看并导出系统详细信息(计算机名、操作系统、系统制造商、系统型号、BIOS、CPU及内存大小)

    Windows下如何快速查看并导出系统详细信息 使用dxdiag 正文 Win + R键打开命令行 输入dxdiag回车,就可以看到如下系统信息. 通过下一页按钮可以查看显卡.声卡及输入输出设备及驱动 ...

  2. windows下右键快速新建md文件

    windows下右键快速新建md文件 转载自Keavnn'Blog 今天新建Markdown文件的时候发现很不方便,之前我是将typora固定到任务栏,点击图标就可以打开新建Markdown文件,今天 ...

  3. 在windows下如何快速搭建web.py开发框架

    用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方便和顺手,就是web.py.它由一名黑客所创建,但是 ...

  4. Windows下实现快速访问GitHub

    如何在window是系统中,进行快速的访问GitHub 我们都知道,在Windows系统环境下,访问GitHub是一件很神奇的事情,有时候,访问很流畅,但是,在有的时候,访问GitHub是件很麻烦的事 ...

  5. windows 下 c++ 快速截屏

    https://www.cnblogs.com/haibindev/p/8072409.html

  6. Windows下快速部署PHP开发环境

    初学开发时,开发环境的部署实在是让人比较头大的事情,本文简单介绍在Windows下如何快速部署PHP的开发环境,使得大家能在短时间内尽快部署环境,学习开发. 本文主要介绍Windows环境下部署Apa ...

  7. Windows 下,使用 Pycharm + Anaconda(NumPy,SciPy 等集成包)的环境配置

    注:本文启发自 Pycharm 安装 NumPy, SciPy 等科学计算包(Anaconda)for mac OS X 这篇文章省去了我很多麻烦,因此把它改写成适用于 Windows 系统的,希望能 ...

  8. windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境)

    推荐几款一键快速搭建PHP本地运行环境的好工具(含php7.0及apache,nigix,mysql) 首推phpstudy2016和wampServer3.0.6     理由支持php7.0 目前 ...

  9. 在windows下对android进行实时快速录屏和模拟点击(二)——win32 API操控模拟器

    从上一节在windows下对android进行实时快速录屏和模拟点击(一)--使用adb命令行当中,描述了适合于所有情况下的通用方法--adb.而通用方法的最大缺点就是:速度非常慢,在有些时候是远远不 ...

最新文章

  1. android继承父类的界面,Android调用父类方法,进行子界面刷新
  2. 2010夏令营——还孩子快乐成长的空间
  3. 公司的计算机邮箱找不到了,找不到我现在的邮箱
  4. Myeclipse修改设置Default VM Arguments
  5. Python把docx文档中的题库导入SQLite数据库
  6. VisualStudio 2010从分析到实施(3)——使用Use Case Diagram设计系统交互
  7. CF676A Nicholas and Permutation 题解
  8. 跨平台调用之一——java调用so库
  9. 如何用python做比分网_python爬虫足球比分-yltg888
  10. Dialog常用写法
  11. Ranking 排行
  12. 新闻列表中,常用的文字超出后显示省略号..
  13. 戴尔 服务器重装后蓝屏,dell inspiron 5490重新安装win10 1903专业工作站版系统后开机频繁蓝屏...
  14. 西安100w就可以财务自由?靠工资如何崛起!
  15. Lidar based off-road negative obstacle detection and analysis(论文翻译)
  16. 遮挡人脸识别:基于Python3.8+Tensorflow2.2人脸遮挡情况的人脸识别
  17. 对国产板子有阴影这些软硬件开源的ARM开发板可以学习Linux驱动
  18. 免费建站平台测评分析
  19. Lintcode 背包专题:最小调整代价,杆子分割,换硬币
  20. 全球及中国微生物主动空气监测系统行业前景动态及投资规划分析报告(2022-2027)

热门文章

  1. Hanselminutes播客55-MonoRail作为替代ASP.NET
  2. 用意念打字,中国脑机接口新纪录诞生!
  3. G - RMQ and RAQ (cugb2023-s)
  4. [C语言]逆序一个字符串的内容
  5. 常见波形的傅里叶级数展开式
  6. 崛起于Springboot2.X之集成规则引擎Drools(41)
  7. 51nod 1113 矩阵快速幂 (矩阵的n次方)
  8. idea html特别卡,完美解决idea突然间很卡的问题
  9. html显示word大段空白,word 文档中间出现很大一段空白,中间没有其他东
  10. GitHub 标星 1000+ 的开源电子书