【东枫科技】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 apt install 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_BLOCKS | GRC 模块描述路径(仅当使用 --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-name | RFNoC 镜像的名称,默认使用 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 镜像
相关文章:

【东枫科技】usrp rfnoc 开发环境搭建
作者 太原市东枫电子科技有限公司 ,代理销售 USRP,Nvidia,等产品与技术支持,培训服务。 环境 Ubuntu 20.04 依赖包 sudo apt-get updatesudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils …...

【JAVA资料,C#资料,人工智能资料,Python资料】全网最全编程学习文档合集,从入门到全栈,保姆级整理!
文章目录 前言一、编程学习前的准备1.1 明确学习目标1.2 评估自身基础 二、编程语言的选择2.1 热门编程语言介绍2.2 如何根据目标选择语言 三、编程基础学习3.1 变量与数据类型3.2 控制结构3.3 函数 四、面向对象编程(OOP)4.1 OOP…...

[IMX] 05.串口 - UART
目录 1.通信格式 2.电平标准 3.IMX UART 模块 4.时钟寄存器 - CCM_CSCDR1 5.控制寄存器 5.1.UART_UCR1 5.2.UART_UCR2 5.3.UART_UCR3 6.状态寄存器 6.1.UART_USR1 6.2.UART_USR2 7.FIFO 控制寄存器 - UART_UFCR 8.波特率寄存器 8.1.分母 - UART_UBIR 8.2.分子 -…...

使用Tkinter写一个发送kafka消息的工具
文章目录 背景工具界面展示功能代码讲解运行环境创建GUI程序搭建前端样式编写功能实现代码 背景 公司是做AR实景产品的,近几年无人机特别的火,一来公司比较关注低空经济这个新型领域,二来很多政企、事业单位都采购了无人机用于日常工作。那么…...

MongoDB 与 EF Core 深度整合实战:打造结构清晰的 Web API 应用
题纲 MongoDB 字符串连接 URIC# 连接字符串实例 实现一个电影信息查询 demo创建项目创建实体实现 DbContext 上下文仓储实现服务实现控制器实现服务注册快照注入数据库连接配置1. 注册配置类2. 注入 IOptionsSnapshot<MongoDbSettings>3. 配置文件 appsettings.json 示例…...
JAVA|后端编码规范
目录 零、引言 一、基础 二、集合 三、并发 四、日志 五、安全 零、引言 规范等级: 【强制】:强制遵守,来源于线上历史故障,将通过工具进行检查。【推荐】:推荐遵守,来源于日常代码审查、开发人员反馈…...

重写B站(网页、后端、小程序)
1. 网页端 1.1 框架 Vue ElementUI axios 1.2 框架搭建步骤 搭建Vue 1.3 配置文件 main.js import {createApp} from vue import ElementUi from element-plus import element-plus/dist/index.css; import axios from "axios"; import router from…...

文档债务拖累交付速度?5大优化策略文档自动化
开发者在追求开发速度的过程中,往往会忽视文档的编写,如省略设计文档、代码注释或API文档等。这种做法往往导致在后期调试阶段需要花费三倍以上的时间来理解代码逻辑,进而形成所谓的文档债务,严重拖累交付速度并造成资源浪费。而积…...

【数据结构与算法】LeetCode 每日三题
如果你已经对数据结构与算法略知一二,现在正在复习数据结构与算法的一些重点知识 ------------------------------------------------------------------------------------------------------------------------- 关注我🌈,每天更新总结文章…...

基于深度学习的电力负荷预测研究
一、深度学习模型框架 在当今数字化时代,基于深度学习的电力负荷预测研究正成为保障电力系统稳定、高效运行的关键领域。其模型构建是一个复杂而精妙的过程,涉及多学科知识与前沿技术的融合应用。首先,要明确电力负荷预测的目标,…...

篇章十 消息持久化(二)
目录 1.消息持久化-创建MessageFileManger类 1.1 创建一个类 1.2 创建关于路径的方法 1.3 定义内部类 1.4 实现消息统计文件读写 1.5 实现创建消息目录和文件 1.6 实现删除消息目录和文件 1.7 实现消息序列化 1. 消息序列化的一些概念: 2. 方案选择…...

【IDEA】删除/替换文件中所有包含某个字符串的行
目录 前言 正则表达式 示例 使用方法 前言 在日常开发中,频繁地删除无用代码或清理空行是不可避免的操作。许多开发者希望找到一种高效的方式,避免手动选中代码再删除的繁琐过程。 使用正则表达式是处理字符串的一个非常有效的方法。 正则表达式 …...

基于深度学习的不良驾驶行为为识别检测
一.研究目的 随着全球汽车保有量持续增长,交通安全问题日益严峻,由不良驾驶行为(如疲劳驾驶、接打电话、急加速/急刹车等)引发的交通事故频发,不仅威胁生命财产安全,还加剧交通拥堵与环境污染。传统识别方…...
FD+Mysql的Insert时的字段赋值乱码问题
方法一 FDQuery4.SQL.Text : INSERT INTO 信息表 (中心, 分组) values(:中心,:分组); FDQuery4.Params[0].DataType : ftWideString; //必须加这个数据类型的定义,否则会有乱码 FDQuery4.Params[1].DataType : ftWideString; //ftstring就不行,必须是…...

第十周作业
一、CSRF 1、DVWA-High等级 2、使用Burp生成CSRF利用POC并实现攻击 二、SSRF:file_get_content实验,要求获取ssrf.php的源码 三、RCE 1、 ThinkPHP 2、 Weblogic 3、Shiro...

Python操作PDF书签详解 - 添加、修改、提取和删除
目录 简介 使用工具 Python 向 PDF 添加书签 添加书签 添加嵌套书签 Python 修改 PDF 书签 Python 展开或折叠 PDF 书签 Python 提取 PDF 书签 Python 删除 PDF 书签 简介 PDF 书签是 PDF 文件中的导航工具,通常包含一个标题和一个跳转位置(如…...
One-shot和Zero-shot的区别以及使用场景
Zero-shot是模型在没有任务相关训练数据的情况下进行预测,依赖预训练知识。 One-shot则是提供一个示例,帮助模型理解任务。两者的核心区别在于是否提供示例,以及模型如何利用这些信息。 在机器学习和自然语言处理中,Zero-Shot 和…...
微软 Build 2025:开启 AI 智能体时代的产业革命
在 2025 年 5 月 19 日的微软 Build 开发者大会上,萨提亚・纳德拉以 "我们已进入 AI 智能体时代" 的宣言,正式拉开了人工智能发展的新纪元。这场汇聚了奥特曼、黄仁勋、马斯克三位科技领袖的盛会,不仅发布了 50 余项创新产品&#…...

集星獭 | 重塑集成体验:新版编排重构仿真电商订单数据入库
概要介绍 新版服务编排以可视化模式驱动电商订单入库流程升级,实现订单、客户、库存、发票、发货等环节的自动化处理。流程中通过循环节点、判断逻辑与数据查询的编排,完成了低代码构建业务逻辑,极大提升订单处理效率与业务响应速度。 背景…...

多模态大语言模型arxiv论文略读(八十八)
MammothModa: Multi-Modal Large Language Model ➡️ 论文标题:MammothModa: Multi-Modal Large Language Model ➡️ 论文作者:Qi She, Junwen Pan, Xin Wan, Rui Zhang, Dawei Lu, Kai Huang ➡️ 研究机构: ByteDance, Beijing, China ➡️ 问题背景…...
创建Workforce
创建你的Workforce 3.3.1 简单实践 1. 创建 Workforce 实例 想要使用 Workforce,首先需要创建一个 Workforce 实例。下面是最简单的示例: from camel.agents import ChatAgent from camel.models import ModelFactory from camel.types import Model…...
Cribl 中 Parser 扮演着重要的角色 + 例子
先看文档: Parser | Cribl Docs Parser The Parser Function can be used to extract fields out of events or reserialize (rewrite) events with a subset of fields. Reserialization will preserve the format of the events. For example, if an event contains comma…...

WebSocket 从入门到进阶实战
好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受. 聊天系统是WebSocket的最佳实践,以下是使用WebSocket技术实现的一个聊天系统的关键代码,可以通过这些关键代码ÿ…...

CSS:vertical-align用法以及布局小案例(较难)
文章目录 一、vertical-align说明二、布局案例 一、vertical-align说明 上面的文字介绍,估计大家也看不懂 二、布局案例...
Linux 正则表达式 扩展正则表达式 gawk
什么是正则表达式 正则表达式是我们所定义的模式模板(pattern template),Linux工具用它来过滤文本。Linux工具(比如sed编辑器或gawk程序)能够在处理数据时,使用正则表达式对数据进行模式匹配。如果数据匹配…...

Java转Go日记(五十四):gin路由
1. 基本路由 gin 框架中采用的路由库是基于httprouter做的 地址为:https://github.com/julienschmidt/httprouter package mainimport ("net/http""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/", func(c …...

【解决】自己的域名任何端口都访问不到,公网地址正常访问,服务器报错500。
一、问题描述 后端项目部署在服务器上,通过域名访问接口服务器报错500,通过浏览器访问域名的任何端口都是无法访问此网站。 但是通过公网地址访问是可以正常访问到的,感觉是域名出现了问题 二、解决过程 先说结论:问题原因是…...
探秘鸿蒙 HarmonyOS NEXT:Navigation 组件的全面解析
鸿蒙 ArkTS 语言中 Navigation 组件的全面解析 一、引言 本文章基于HarmonyOS NEXT操作系统,API12以上的版本。 在鸿蒙应用开发中,ArkTS 作为一种简洁、高效的开发语言,为开发者提供了丰富的组件库。其中,Navigation 组件在构建…...
订单导入(常见问题和sql)
1.印章取行,有几行取几行 union select PARAM07 name, case when regexp_count(PO_PARAM_20, chr(10)) > 0 then substr(PO_PARAM_20, 0, instr(PO_PARAM_20, chr(10)) - 1) else PO_PARAM_20 end value,PO_ID …...
PyTorch中diag_embed和transpose函数使用详解
torch.diag_embed 是 PyTorch 中用于将一个向量(或批量向量)**嵌入为对角矩阵(或批量对角矩阵)**的函数。它常用于图神经网络(GNN)或线性代数中生成对角矩阵。 函数原型 torch.diag_embed(input, offset0,…...