当前位置: 首页 > news >正文

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

本例程基于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

相关文章:

  • OSPF实验
  • imx6ull/linux应用编程学习(16)emqx ,mqtt创建连接mqtt.fx
  • 全网最全AI绘画 StablDiffusion系列进阶篇-ControlNet插件介绍
  • java设计模式(十五)命令模式(Command Pattern)
  • 视频减小技巧:十大顶级视频压缩软件
  • OpenGL笔记七之顶点数据绘制命令和绘制模式
  • 制造工厂环保管理的痛点与智慧环保的解决之道
  • cuda安装使用问题,print(torch.cuda.is_available()),仍然输出false,如何解决?
  • AI新手指南:从小白到AI共创者的创业攻略
  • 经验分享|如何维护自己的大数据信用?
  • 移动端Vant-list的二次封装,查询参数重置
  • HUAWEI VRRP 实验
  • 哈弗架构和冯诺伊曼架构
  • 自动化一些操作
  • 【Redis】简单了解Redis中常用的命令与数据结构
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • HTTP 简介
  • JAVA多线程机制解析-volatilesynchronized
  • Java面向对象及其三大特征
  • python 装饰器(一)
  • spring + angular 实现导出excel
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Tornado学习笔记(1)
  • vue中实现单选
  • Web标准制定过程
  • yii2中session跨域名的问题
  • 初识 webpack
  • 服务器之间,相同帐号,实现免密钥登录
  • 基于 Babel 的 npm 包最小化设置
  • 聊聊directory traversal attack
  • 前端性能优化——回流与重绘
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • # centos7下FFmpeg环境部署记录
  • #162 (Div. 2)
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (Ruby)Ubuntu12.04安装Rails环境
  • (搬运以学习)flask 上下文的实现
  • (二)WCF的Binding模型
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (南京观海微电子)——I3C协议介绍
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十一)c52学习之旅-动态数码管
  • (四)Controller接口控制器详解(三)
  • (四)库存超卖案例实战——优化redis分布式锁
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)ORM
  • (转)创业的注意事项
  • (转)项目管理杂谈-我所期望的新人
  • *1 计算机基础和操作系统基础及几大协议
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .net MySql
  • .NET 服务 ServiceController