TQSDRPI开发板教程:编译openwifi工程

news2024/7/30 16:44:53

本例程基于SDRPI开发板,在Ubuntu中使用vivado编译openwifi工程,最终生成BOOT.BIN文件。需要拥有安装vivado2021.1版本的ubuntu系统或虚拟机。

首先需要下载openwifi的编译文件,可以在GitHub中搜索openwifi-hw,网址如下所示:https://github.com/open-sdr/openwifi-hw

也可以直接在ubuntu系统中使用git工具下载,使用如下命令:

git clone --recursive https://github.com/open-sdr/openwifi-hw

同时在文件末尾我也会提供下载好的网盘链接。

下载完成后进入openwifi-hw目录,打开命令行窗口。

在命令行中配置vivado的环境变量,这个要根据安装地址进行设置。例如我这里的安装地址在/tools/Xilinx/文件夹中,使用如下命令配置vivado的环境变量:

source /tools/Xilinx/Vivado/2021.1/settings64.sh

然后需要定义一个变量,变量名称为XILINX_DIR,值为vivado的安装目录,例如在这里安装目录为/tools/Xilinx/,使用如下命令设置变量

export  XILINX_DIR=/tools/Xilinx

设置变量完成后运行 prepare_adi_lib.sh 脚本,参数为XILINX_DIR,使用如下命令:

./prepare_adi_lib.sh $XILINX_DIR

编译时间有点长,耐心等待编译完成。若编译失败,重新编译几次大概率会通过,下图是我第一次编译失败,直接进行第二次编译。

编译成功后设置开发板名称的变量,使用export命令定义变量名称BOARD_NAME,值为本次实验的硬件平台sdrpi,使用如下命令:

export BOARD_NAME=sdrpi

若使用其他硬件平台,可以在上面下载网址中寻找对应的名称,截图如下所示

例如若使用的是zedborad+ad9361,BOARD_NAME的值为zed_fmcs2。设置好变量后运行prepare_adi_board_ip.sh脚本,参数为XILINX_DIR和OARD_NAME,在命令行输入如下命令:

./prepare_adi_board_ip.sh $XILINX_DIR $BOARD_NAME

运行上面这个条命令后,出现如下所示的界面时由于等待时间很长,可以使用ctrl+c中断此脚本的运行,这个操作不会对结果产生影响。

继续运行get_ip_openofdm_rx.sh脚本,在命令行中运行如下命令:

./get_ip_openofdm_rx.sh

进入工程目录

cd boards/$BOARD_NAME/

运行create_ip_repo.sh脚本,参数为XILINX_DIR

../create_ip_repo.sh $XILINX_DIR

此脚本会自动打开vivado进行配置,不要主动操作打断脚本。

等待脚本运行完成,vivado会回到初始界面,在下方命令行中运行如下命令打开工程。

source ./openwifi.tcl

打开工程后,若需要修改vivado内容在这一步进行。修改完成或无需修改,生成bit文件。

若编译报错,点击system.xdc:31到转跳处,注释此行,如下图所示。若编译成功则无需此步骤。修改完成后保存。先点击Run Synthesis重新编译,在生成bit文件。

导出XSA文件,File-->Export-->Export Hardware...

默认选项下一步到选择保存地址,在当前地址上加 /vitis 并复制全部地址,后面需要用到。默认下一步到完成即可。

打开vitis,Tools-->Launch...

工作空间选择上面复制的地址,启动vitis

创建平台项目

设置名称

选择上面导出的XSA文件,完成创建

选择项目-->编译

到此我们就生成了bit文件和fsbl文件,生成BOOT.BIN文件还需要一个elf文件,这里因为要引导LINUX系统启动,因此是UBOOT,这个UBOOT在ZYNQ里面比较通用的。我们也可以使用OPENWIFI中其他ZYNQ板子的UBOOT来替换。下载命令如下:

git clone --recursive https://github.com/open-sdr/openwifi

下载完成后进入目录:openwifi/kernel_boot/board/sdrpi 可以看到里面有个u-boot.elf文件,复制文件到openwifi-hw目录,创建一个BootFile文件夹,放置生成BOOT.BIN所需的文件。UBOOT文件可以使用我提供的网盘链接中的文件。

进入目录:openwifi-hw/board/sdrpi/openwifi_sdri/openwifi_sdri.runs/impl_1

复制system_top.bit文件到BootFile中,

进入目录:openwifi-hw/board/sdrpi/openwifi_sdri/vitis/fsbl/zynq_fsbl

复制fsbl.elf文件到BootFile中。

打开sdk 生成BOOT.BIN文件:Xilinx-->create...-->zynq...

保存地址选择BootFile-->添加文件-->按顺序添加图中的三个文件-->生成BOOT.BIN文件。

此boot.bin文件可以直接代替openwifi启动盘中的boot.bin文件,关于sdrpi的openwifi的启动盘制作与使用,可以参考如下链接:

https://blog.csdn.net/mcupro/article/details/138193494

提供的链接中sdrpi_openwifi-hw_ok.zip是编译完成后的文件,BootFile文件夹也在其中。openwifi-hw_new.zip是没编译过的文件。

链接:https://pan.baidu.com/s/14frYS1gWJL4wmf5n1CECMA
提取码:11rk

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

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

相关文章

Python基础教学之一:入门篇——迈入编程世界的第一步

Python基础教学之一:入门篇——迈入编程世界的第一步 一、Python简介:历史与现状 Python,一种解释型、高级和通用的编程语言,由Guido van Rossum在1989年圣诞节期间创造,并于1991年首次发布。设计哲学强调代码的可读性…

Centos9安装部署及静态ip配置方案

一、获取centos9的iso镜像 去官网 点击download 官网 点击x86,下载centos9 二、创建虚拟机 1、点击新建虚拟机 2、选择自定义 下一步 3、点击下一步 4、选择稍后安装操作系统 点击下一步 5、选择linux 选择要安装的centos 版本 这里选择centos7 6、设置虚拟…

顺序结构 ( 五 ) —— 数据输入输出 【互三互三】

文章目录 🍁序 🍁一、字符输入函数getchar 🍁二、字符输出函数putchar 🍁三、通过cout流输出数据 🍁四、通过cin流读入数据 🍁五、格式化输入函数scanf 🍁六、格式化输出函数printf &…

最简单的vue3组件之间传值

localStorage 是 HTML5 引入的一个 Web Storage API 的一部分,它允许网页在用户的浏览器上存储数据。localStorage 提供了一种持久化的本地存储方案,数据不会因为浏览器关闭而丢失,除非用户或脚本显式地删除它们。 localStorage 是一种非常实…

代码架构你想过吗?

过去的一段时间,我常发现我接手的服务、自己从0开始搭建起来的服务,整个服务代码的架构都比较混乱,很难去维护迭代。常见的有两种 平铺在根目录的。层次不清晰的,逻辑分别散落在各个层次中 我经过一段时间的分析,我总…

实现分布式锁的常用三种方式

分布式锁概述 我们的系统都是分布式部署的,日常开发中,秒杀下单、抢购商品等等业务场景,为了防⽌库存超卖,都需要用到分布式锁。 分布式锁其实就是,控制分布式系统不同进程共同访问共享资源的一种锁的实现。如果不同的…

【VUE实战项目】使用typescript重构项目

前言 本文是博主vue实战系列中的一篇,本系列不是专业的前端教程,是专门针对后端熟悉前端的。前面我们用vue实现了一个基础的管理系统,前文专栏地址: https://blog.csdn.net/joker_zjn/category_12469788.html?spm1001.2014.300…

java线程锁synchronized的几种情况

一、对象方法锁 1、成员方法加锁 同一个对象成员方法有3个synchronized修饰的方法,通过睡眠模拟业务操作 public class CaseOne {public synchronized void m1(){try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace()…

七款好用的公司电脑监控软件推荐|2024年电脑监控软件干货整理!

在现代企业管理中,电脑监控软件成为提高员工生产力、确保数据安全和防止信息泄露的重要工具。以下是七款适合公司使用的电脑监控软件推荐 固信软件https://www.gooxion.com/ 1. 固信软件 功能特点: 实时屏幕监控和行为分析。 网站访问历史记录和详细…

pytorch-RNN存在的问题

这里写目录标题 1. RNN存在哪些问题呢?1.1 梯度弥散和梯度爆炸1.2 RNN为什么会出现梯度弥散和梯度爆炸呢? 2. 解决梯度爆炸方法3. Gradient Clipping的实现4. 解决梯度弥散的方法 1. RNN存在哪些问题呢? 1.1 梯度弥散和梯度爆炸 梯度弥散是…

C++超市外卖小程序-计算机毕业设计源码62482

摘要 随着社会生活节奏加快和消费习惯的变化,外卖服务成为人们日常生活中不可或缺的一部分。超市外卖作为新兴业态备受关注,然而传统外卖平台在推荐精准度和用户体验方面存在挑战。 本研究旨在基于协同过滤算法,结合C语言和MySQL数据库&#…

信息化安全管理怎么做

企业如何做好安全管理工作?检查频次多了怕影响子正常生产经营,效益低下,检查频次少了又担心管控不住。”这是安全管理部综合业务室的困惑,也是很多企业的困惑。面对企业在安全管理中的困惑与挑战,采用信息化平台与精细化管理策略…

Java研学-Shiro安全框架(四)

六 SpringBoot集成Shiro认证 1 分析 Shiro提供认证授权功能,所以SpringBoot中不需再编写自定义注解,权限拦截,登录拦截,登录登出。Shiro 环境中有三个封装对象Subject ,SecurityManager和Realms,SpringBoo…

hcip暑假第二次作业

ip配置如下 配置缺省路由 [R1]ip route-static 0.0.0.0 0 12.0.0.2 -------设置缺省路由 [R1]ip route-static 0.0.0.0 0 21.0.0.2 [R2]ip route-static 0.0.0.0 0 22.0.0.2 [R3]ip route-static 0.0.0.0 0 23.0.0.2 [R4]ip route-static 0.0.0.0 0 24.0.0.2 [R5]ip route…

python如何计算两个时间相差多少秒钟,分钟,小时,天,月,年

使用场景:在做上课记录系统的时候,有上课开始时间和上课结束时间,需要计算这两个时间的插值,以分钟为单位。 封装方法如下: from datetime import datetimedef sub_seconds(date1: str "2024-07-11 12:33:33&q…

编程范式之事件驱动编程

目录 前言1. 定义2. 特点2.1 异步性2.2 解耦2.3 可扩展性2.4 高度响应 3. 适用场景3.1 用户界面开发3.2 网络编程3.3 游戏开发3.4 物联网(IoT) 4. 优点4.1 提高效率4.2 灵活性和可扩展性4.3 解耦和模块化4.4 高响应性 5. 缺点5.1 复杂性增加5.2 调试困难…

Spring中如何操作Redis

Spring毕竟是Java中的一个主流框架,如何在这个框架中使用Redis呢? 创建项目并引入相关依赖 然后进行创建。 至此就将Redis的相关依赖引入进来了。 编写Redis配置 将application.properties修改成application.yml 然后编写如下配置: spr…

昇思学习打卡-16-热门LLM及其他AI应用/K近邻算法实现红酒聚类

文章目录 算法原理距离定义模型构建 算法原理 K近邻算法可以用在分类问题和回归问题上,它的原理如下:要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接近的k个样本,统计出这些样本的类别并…

青否数字人手机端APP抖音开播完整教程!

1.开播--所需硬件 安卓手机设备--支持 直播手机推荐型号:配备了麒麟980,骁龙865,天玑1000以上的处理器的安卓手机,运营内存不低于6G 网络宽带:上下行宽带稳定在10Mbps以上(普通家用1000M宽带的上行速度大约为30Mbps,最…