项目场景:
使用USRP配合GNU Radio做通信仿真实验。
问题描述
在安装UHD(版本003.009.004)并成功为USRP烧录了UHD提供的FPGA程序后,接着安装了radioconda环境。尽管UHD能够识别USRP设备,并能通过uhd_usrp_probe成功输出设备的详细信息,但在GNU Radio中设计流图并运行时,却会出现找不到USRP设备或报错提示未正确加载FPGA镜像的问题。
原因分析:
当前USRP烧入的FPGA程序(版本:003.009.004)和radioconda的uhd版本不匹配。
解决方案:
- 在Anaconda Prompt中输入
conda env list
找到radioconda的环境(没有名称,只有所在位置),通过conda activate 所在位置
激活。
- 通过
conda list
检查安装的GNU Radio和uhd版本。
- 从上图留意到uhd是4.6.0.0的版本,基于此,在radioconda文件夹中搜索“uhd_4.6.0.0”,可以找到uhd装在了D:\你存放radioconda的根目录\radioconda\pkgs\uhd-4.6.0.0-py311h0c75be5_0。
- 进入此文件夹的Library,可以发现文件夹结构和之前安装的UHD的文件夹结构相似。
- 打开cmd显示终端,运行更换目录命令
cd D:\你存放radioconda的根目录\radioconda\pkgs\uhd-4.6.0.0-py311h0c75be5_0\Lib\site-packages\uhd
- 运行该目录下的uhd_images_downloader.py,使用的X3xx系列USRP就在命令后面加指定type,运行指令如下:
python ./uhd_images_downloader.py --types x3.*
。 - 如果没有提前修改uhd_images_downloader.py里面的保存路径,image会被安装到D:\bld\uhd_1699954723137_h_env\Library\share。
- 将这个share文件夹复制到D:\你存放radioconda的根目录\radioconda\pkgs\uhd-4.6.0.0-py311h0c75be5_0\Library下。
- 此时,运行更换目录命令:
cd D:\你存放radioconda的根目录\radioconda\pkgs\uhd-4.6.0.0-py311h0c75be5_0\Library\bin
。 - 输入
./uhd_find_devices.exe
来确认设备的type、addr和fpga。 - 确定后根据输出的type、addr和fpga,运行
./uhd_image_loader.exe --args=“type=x300,addr=192.168.10.2,fpga=HG”
- 等待镜像加载完成后,输入
./uhd_usrp_probe.exe
,成功输出设备详细信息可视为连接成功。 - 返回GNU Radio,运行流图,检查连接情况,输出类似于下图,则连接成功。