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

发布于:2024-07-11 ⋅ 阅读:(16) ⋅ 点赞:(0)

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