【东枫科技】usrp rfnoc 开发环境搭建

作者

太原市东枫电子科技有限公司 ,代理销售 USRP,Nvidia,等产品与技术支持,培训服务。

环境

Ubuntu 20.04

依赖包

sudo apt-get update
sudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool \
g++ git inetutils-tools libboost-all-dev libncurses5 libncurses5-dev libusb-1.0-0 libusb-1.0-0-dev \
libusb-dev python3-dev python3-mako python3-numpy python3-requests python3-scipy python3-setuptools \
python3-ruamel.yaml 
sudo apt-get -y install autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool fort77 g++ gir1.2-gtk-3.0 git gobject-introspection gpsd gpsd-clients inetutils-tools libasound2-dev libboost-all-dev libcomedi-dev libcppunit-dev libfftw3-bin libfftw3-dev libfftw3-doc libfontconfig1-dev libgmp-dev libgps-dev libgsl-dev liblog4cpp5-dev libncurses5 libncurses5-dev libpulse-dev libqt5opengl5-dev libqwt-qt5-dev libsdl1.2-dev libtool libudev-dev libusb-1.0-0 libusb-1.0-0-dev libusb-dev libxi-dev libxrender-dev libzmq3-dev libzmq5 ncurses-bin python3-cheetah python3-click python3-click-plugins python3-click-threading python3-dev python3-docutils python3-gi python3-gi-cairo python3-gps python3-lxml python3-mako python3-numpy python3-numpy-dbg python3-opengl python3-pyqt5 python3-requests python3-scipy python3-setuptools python3-six python3-sphinx python3-yaml python3-zmq python3-ruamel.yaml swig wget vim net-tools

pip3安装

sudo apt install python3-pip

【错误】不要安装的python包

pip3 install dash parse jsonschema

安装 vivado 2021.1

sudo dpkg-reconfigure dash	##更改dash模式,选择nosudo apt-get install libstdc++6
sudo apt-get install libncurses5
sudo apt-get install libtinfo5
sudo apt-get install opencl-headers
sudo apt-get install ocl-icd-libopencl1
sudo apt-get install ocl-icd-opencl-dev

安装nas并挂载

sudo apt update
sudo aptinstall nfs-common
sudo mount -t nfs 192.168.0.100:/volume2/Software ~/Music

拷贝安装包到linux里面
在这里插入图片描述
解压vivado安装包之后,进入命令行,安装vivado
在这里插入图片描述
在这里插入图片描述

sudo ./xsetup

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装序列号
在这里插入图片描述
在这里插入图片描述

完成安装。

安装 vivado 补丁

拷贝补丁到patches下

sudo cp -r AR76780_Vivado_2021_1_preliminary_rev1 /opt/Xilinx/Vivado/2021.1/patches/

验证ip核
在这里插入图片描述

安装 UHD

git clone https://github.com/EttusResearch/uhd.git
cd uhd

在这里插入图片描述
切换版本

git checkout v4.8.0.0

在这里插入图片描述

cd host
mkdir build
cd build
cmake -DENABLE_TESTS=ON  -DENABLE_C_API=ON  -DENABLE_PYTHON_API=ON -DENABLE_MANUAL=ON  ..
make -j$(nproc)
sudo make install
sudo ldconfig

安装镜像文件,验证安装

sudo /usr/local/lib/uhd/utils/uhd_images_downloader.py
//镜像下载
sudo uhd_images_downloader
//查找设备 
sudo uhd_find_devices
//查看设备信息
sudo uhd_usrp_probe

在这里插入图片描述

Python 库索引

cd /usr/lib/python3/dist-packages
sudo vim uhd.pth

文件内容

/usr/local/lib/python3.8/site-packages/
/home/rfnoc/.local/lib/python3.8/site-packages/

保存该文件。

测试python3

python3
import uhd

如果没有报错,那么恭喜你搞定安装了!

安装 gnu radio

sudo add-apt-repository ppa:gnuradio/gnuradio-releases
sudo apt-get update
sudo apt-get install gnuradio python3-packaging

讲解 rfnoc_image_builder 编译工具

optional arguments:-h, --help            show this help message and exit-y YAML_CONFIG, --yaml-config YAML_CONFIGPath to yml configuration file-r GRC_CONFIG, --grc-config GRC_CONFIGPath to grc file to generate config from-C BASE_DIR, --base-dir BASE_DIRPath to the base directory. Defaults to the current directory.-F FPGA_DIR, --fpga-dir FPGA_DIRPath to directory for the FPGA source tree. Defaults to the FPGA source tree of the current repo.-B BUILD_DIR, --build-dir BUILD_DIRPath to directory where the image core and and build artifacts will be generated. Defaults to "build-<image-core-name>"in the base directory.-O BUILD_OUTPUT_DIR, --build-output-dir BUILD_OUTPUT_DIRPath to directory for final FPGA build outputs. Defaults to "build" in the base directory.-E BUILD_IP_DIR, --build-ip-dir BUILD_IP_DIRPath to directory for IP build artifacts. Defaults to "build-ip" in the base directory.-o IMAGE_CORE_OUTPUT, --image-core-output IMAGE_CORE_OUTPUTDEPRECATED! This has been replaced by --build-dir.-x ROUTER_HEX_OUTPUT, --router-hex-output ROUTER_HEX_OUTPUTDEPRECATED! This option will be ignored.-I INCLUDE_DIR, --include-dir INCLUDE_DIRPath to directory of the RFNoC Out-of-Tree module-b GRC_BLOCKS, --grc-blocks GRC_BLOCKSPath to directory of GRC block descriptions (needed for --grc-config only)-l LOG_LEVEL, --log-level LOG_LEVELAdjust log level-R, --reuse           Reuse existing files (do not regenerate image core).-G, --generate-only   Just generate files without building the FPGA-W, --ignore-warningsRun build even when there are warnings in the build process-S SECURE_CORE, --secure-core SECURE_COREBuild a secure image core instead of a bitfile. This argument provides the name of the generated YAML.-K SECURE_KEY, --secure-key SECURE_KEYPath to encryption key file to use for secure core.-d DEVICE, --device DEVICEDevice to be programmed [x300, x310, e310, e320, n300, n310, n320, x410, x440]. Needs to be specified either here, orin the configuration file.-n IMAGE_CORE_NAME, --image-core-name IMAGE_CORE_NAME, --image_core_name IMAGE_CORE_NAMEName to use for the RFNoC image core. Defaults to name of the image core YML file, without the extension.-t TARGET, --target TARGETBuild target (e.g. X310_HG, N320_XG, ...). Needs to be specified either here, on the configuration file.-g, --GUI             Open Vivado GUI during the FPGA building process-Y, --SYNTH           Stop the FPGA build process after Synthesis--CHECK               Run elaboration only to check HDL syntax-s, --save-project    Save Vivado project to disk-P, --ip-only         Build only the required IPs-j JOBS, --jobs JOBS  Number of parallel jobs to use with make-c, --clean-all       Cleans the IP before a new build-p VIVADO_PATH, --vivado-path VIVADO_PATHPath to the base install for Xilinx Vivado if not in default location (e.g., /tools/Xilinx/Vivado).-H, --no-hash         Do not include source YAML hash in the generated source code.-D, --no-date         Do not include date or time in the generated source code.--color {never,auto,always}Enable colorful output. When set to 'auto' will only show color output in TTY environments (e.g., interactive shells)
参数说明
-h, --help显示帮助信息并退出
-y YAML_CONFIG, --yaml-config YAML_CONFIG指定 YAML 配置文件的路径
-r GRC_CONFIG, --grc-config GRC_CONFIG指定 GRC 文件路径(用于自动生成配置)
-C BASE_DIR, --base-dir BASE_DIR设置基础目录路径,默认使用当前目录
-F FPGA_DIR, --fpga-dir FPGA_DIR设置 FPGA 源码路径,默认使用当前仓库中的源码目录
-B BUILD_DIR, --build-dir BUILD_DIR设置构建目录,镜像核心和构建文件将保存在此处。默认是“base目录下的 build-<镜像名称>”
-O BUILD_OUTPUT_DIR, --build-output-dir BUILD_OUTPUT_DIR设置最终 bit 文件等输出的路径,默认是“base目录下的 build”
-E BUILD_IP_DIR, --build-ip-dir BUILD_IP_DIR指定 IP 构建中间文件的保存路径,默认是“base目录下的 build-ip”
-o IMAGE_CORE_OUTPUT已废弃!已被 --build-dir 替代
-x ROUTER_HEX_OUTPUT已废弃!此选项将被忽略
-I INCLUDE_DIR, --include-dir INCLUDE_DIR指定 RFNoC 自定义模块的头文件路径(Out-of-Tree Module)
-b GRC_BLOCKS, --grc-blocks GRC_BLOCKSGRC 模块描述路径(仅当使用 --grc-config 时需要)
-l LOG_LEVEL, --log-level LOG_LEVEL设置日志输出等级(如 DEBUG、INFO 等)
-R, --reuse重用已有文件,不重新生成 image core
-G, --generate-only只生成中间文件,不构建 FPGA(不调用 Vivado)
-W, --ignore-warnings即使出现警告也继续构建
-S SECURE_CORE, --secure-core SECURE_CORE构建“安全核心”镜像(而非普通 bit 文件),此参数为 YAML 输出名称
-K SECURE_KEY, --secure-key SECURE_KEY指定加密所用的密钥文件路径
-d DEVICE, --device DEVICE指定目标设备:[x300, x310, e310, e320, n300, n310, n320, x410, x440],必须在命令或配置文件中指定
-n IMAGE_CORE_NAME, --image-core-nameRFNoC 镜像的名称,默认使用 YAML 文件名(去除扩展名)
-t TARGET, --target TARGET构建目标(如 X310_HG, N320_XG 等),必须指定(命令或 YAML 文件中)
-g, --GUI构建过程中打开 Vivado GUI
-Y, --SYNTH在综合(Synthesis)后中止 FPGA 构建流程
--CHECK仅执行 elaboration(结构展开)检查 HDL 语法,不生成 bit 文件
-s, --save-project保存 Vivado 项目到磁盘(用于后续手动打开)
-P, --ip-only只构建所需的 IP 核,不生成完整工程
-j JOBS, --jobs JOBS设置并行构建使用的线程数
-c, --clean-all清理 IP 构建缓存,重新构建
-p VIVADO_PATH, --vivado-path VIVADO_PATH指定 Vivado 安装路径(如 /tools/Xilinx/Vivado/2021.1
-H, --no-hash不在生成代码中包含 YAML 配置的 hash 值
-D, --no-date不在生成代码中包含时间戳
--color {never,auto,always}控制终端输出是否使用颜色:auto 表示仅在交互终端中启用颜色

编译 e310镜像

cd ~/Documents/uhd/fpga/usrp3/top/e31x
source ./setupenv.sh 
make E310_SG1_IP

编译库文件
在这里插入图片描述
编译镜像

rfnoc_image_builder -y e310_rfnoc_image_core.yml -t E310_SG1 -j$(nproc)

在这里插入图片描述

编译e320镜像

编译 x310镜像

预编译

cd ~/Documents/uhd/fpga/usrp3/top/x300
source ./setupenv.sh
make -j$(nproc) X310_IP

在这里插入图片描述
编译

在这里插入代码片

编译 x410 镜像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/906750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ntfs!ReadIndexBuffer函数分析之根目录读取索引缓冲区的一个例子

Ntfs!ReadIndexBuffer函数分析之根目录读取索引缓冲区的一个例子 第一部分&#xff1a; 0: kd> p Ntfs!ReadIndexBuffer0xdc: f7173962 e829f60300 call Ntfs!NtfsCheckIndexBuffer (f71b2f90) 0: kd> t Ntfs!NtfsCheckIndexBuffer: f71b2f90 55 p…

LumaDot (亮度可调的屏幕圆点)

应用名称 LumaDot &#xff08;源自 “Luminance”&#xff08;亮度&#xff09; “Dot”&#xff08;圆点&#xff09;&#xff0c;强调其核心功能&#xff1a;亮度可调的屏幕圆点&#xff09; 应用说明 LumaDot 是一款轻量级 Windows 桌面工具&#xff0c;专为需要屏幕标记…

HarmonyOS 鸿蒙应用开发基础:EventHub,优雅解决跨组件通信难题

EventHub是鸿蒙开发中用于线程内通信的事件中心模块&#xff0c;基于发布订阅模式实现组件间的高效通信。它完美解决了传统回调方式在多层嵌套场景下的痛点&#xff0c;使得组件间的通信更加灵活和易于管理。 核心特性 事件中心机制&#xff1a;通过事件名进行通信&#xff0c…

前端框架token相关bug,前后端本地联调

今天我搭建框架的时候&#xff0c;我想请求我自己的本地&#xff01;然后我自己想链接我自己的本地后端&#xff0c;我之前用的前端项目&#xff0c;都是链别人的后端&#xff0c;基本上很少情况会链接自己的后端&#xff01;所以我当时想的是&#xff0c;我前后端接口一样&…

【数据结构初阶】顺序表专题

文章目录 顺序表1.数据结构相关概念1、什么是数据结构2、为什么需要数据结构&#xff1f; 2.顺序表1、顺序表的概念及结构2、顺序表分类3、动态顺序表的实现1.定义一个动态顺序表2.顺序表的初始化3.顺序表的销毁4.顺序表达的尾插5.顺序表的头插6.空间大小检查函数7.顺序表的尾删…

从神经生物学到社会心理学:游戏沉迷机制的深度解构

你是否曾在深夜放下手机时惊觉&#xff1a;"明明只想玩10分钟&#xff0c;怎么天都亮了&#xff1f;"这不是意志力薄弱的表现&#xff0c;而是价值数十亿美元的游戏产业用神经科学精心设计的认知陷阱。 当《王者荣耀》的Victory音效让你心跳加速&#xff0c;当《原神…

15.集合框架的学习

一、简介 集合框架&#xff08;Collection Framework&#xff09; 是 Java 提供的一套用于存储、操作和处理数据集合的标准化架构。它主要位于 java.util 包中&#xff0c;提供了一组 接口 和 实现类&#xff0c;用于操作不同类型的数据集合&#xff0c;如列表&#xff08;List…

【方案分享】展厅智能讲解:基于BLE蓝牙Beacon的自动讲解触发技术实现

【方案分享】展厅智能讲解&#xff1a;基于BLE蓝牙Beacon的自动讲解触发技术实现 让观众靠近展品即可自动弹出讲解页面&#xff0c;是智能展厅的核心功能之一。本文将从软硬件技术、BLE Beacon原理、微信小程序实现、优劣对比与拓展方案五个维度&#xff0c;系统讲解“靠近展台…

微前端架构:从单体到模块化的前端新革命

在信息技术&#xff08;IT&#xff09;的迅猛发展中&#xff0c;前端开发领域正迎来一场颠覆性的变革 —— 微前端架构&#xff08;Micro - Frontends&#xff09;。2025 年&#xff0c;随着 Web 应用的复杂性激增、团队协作需求的增长以及用户对无缝体验的期待&#xff0c;微前…

React中常用的钩子函数:

一. 基础钩子 (1)useState 用于在函数组件中添加局部状态。useState可以传递一个参数&#xff0c;做为状态的初始值&#xff0c;返回一个数组&#xff0c;数组的第一个元素是返回的状态变量&#xff0c;第二个是修改状态变量的函数。 const [state, setState] useState(ini…

如何在 Windows 11 或 10 上通过 PowerShell 安装 Docker Desktop

了解如何使用 PowerShell 或命令提示符在 Windows 11 或 10 上安装 Docker CLI 和 Docker Desktop GUI,以创建容器运行虚拟机。无需手动访问网站下载安装程序,所有操作都将在命令终端完成。 Docker 是一个强大的容器化平台,允许开发人员将应用程序及其依赖项打包为轻量级容…

Python实例题:人机对战初体验Python基于Pygame实现四子棋游戏

目录 Python实例题 题目 代码实现 实现原理 游戏逻辑&#xff1a; AI 算法&#xff1a; 界面渲染&#xff1a; 关键代码解析 游戏棋盘渲染 AI 决策算法 胜利条件检查 使用说明 安装依赖&#xff1a; 运行游戏&#xff1a; 游戏操作&#xff1a; 扩展建议 增强…

一文详解 HLS

1 HLS的简介 1.1 HLS的背景 从 RTMP&#xff08;Real-Time Messaging Protocol&#xff0c;实时消息传输协议&#xff09; 到 HLS&#xff08;HTTP Live Streaming&#xff0c;HTTP直播流&#xff09; 的技术演进&#xff0c;本质上是直播协议从 专有协议 向 通用 Web 协议 的…

go 访问 sftp 服务 github.com/pkg/sftp 的使用踩坑,连接未关闭(含 sftp 服务测试环境搭建)

前言 最近在使用 sftp 服务时&#xff0c;被告知发起了海量的连接&#xff0c;直接把服务器搞崩&#xff0c;ip 被封了。 这是啥情况&#xff1f; golang 写的代码&#xff0c;我就正常的访问 sftp 服务&#xff0c;连接使用过后也都关闭了&#xff0c;咋会出现连接一直连着…

Android 直接通过 app_process 启动的应用如何使用 Context

文章目录 一、问题背景二、代码实现三、代码详解 一、问题背景 在 Android 中&#xff0c;可以使用 Android Studio 编写 Java 应用程序&#xff0c;通过编译打包成 apk 文件&#xff0c;然后将文件推送至 /data/local/tmp 等可执行的目录或安装打包出来的应用&#xff0c;随后…

【数据结构与算法】LeetCode 每日三题

如果你已经对数据结构与算法略知一二&#xff0c;现在正在复习数据结构与算法的一些重点知识 ------------------------------------------------------------------------------------------------------------------------- 点赞收藏&#x1f308;&#xff0c;每天更新总结文…

深度“求索”:DeepSeek+Dify构建个人知识库

目录 前言 环境部署 安装Docker 安装Dify 配置Dify 部署知识库 创建应用 前言 在当今数字化信息爆炸的时代&#xff0c;数据隐私和个性化知识管理成为企业和个人关注的焦点。Dify&#xff0c;作为一款备受瞩目的开源 AI 应用开发平台&#xff0c;为用户提供了完整的私有…

【Redis8】最新安装版与手动运行版

目录 一、直接运行 1. 下载 Redis百度网盘 2. 解压后直接运行 redis-server.exe​编辑 二、安装版运行 双击 install_redis_service.bat 输入安装路径&#xff08;请提前创建好安装路径&#xff09;后直接回车​编辑 下一步直接回车即可&#xff0c;因为是使用配置模板…

@Column 注解属性详解

提示&#xff1a;文章旨在说明 Column 注解属性如何在日常开发中使用&#xff0c;数据库类型为 MySql&#xff0c;其他类型数据库可能存在偏差&#xff0c;需要注意。 文章目录 一、name 方法二、unique 方法三、nullable 方法四、insertable 方法五、updatable 方法六、column…

使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第二部分)

建立向量嵌入数据库 from langchain_community.document_loaders import TextLoader from langchain_text_splitters import CharacterTextSplitter from langchain.docstore.document import Document from langchain_chroma.vectorstores import Chromaimport vertexai from…