【東楓科技】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_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
繁體地址,請注明出處:http://hk.pswp.cn/news/906750.shtml
英文地址,請注明出處:http://en.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…