openwifi編譯步驟記錄

祈愿树下發表於2024-10-20

這邊還是簡單記一下步驟

1、首先是下載openwifi-hw

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

2、配置vivado環境變數

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

3、在.bashrc裡面配置加一些變數

export XILINX_DIR=/tools/Xilinx
export BOARD_NAME=antsdr

4、設定變數後執行編譯指令碼

./prepare_adi_lib.sh $XILINX_DIR

編譯時間挺長的

5、使用的是微相科技的E310,板子antsdr,配置板子ip命令,這個好像時間很長

./prepare_adi_board_ip.sh $XILINX_DIR $BOARD_NAME

看到下面的句子就可以ctrl+c結束了

(Don't need to wait till the building end. When you see "Building ABCD project [...", you can stop it.)
6、然後將openwifi_rx新增到IP目錄(只在openofdm更新時候執行一次)
./get_ip_openofdm_rx.sh
7、然後進入板子目錄執行程式
cd openwifi-hw/boards/$BOARD_NAME/
../create_ip_repo.sh $XILINX_DIR
第二個指令碼會自動開啟vivado檔案
8、等指令碼執行完畢,在vivado裡面的TCL命令列開啟工程
source ./openwifi.tcl
生成bit流之後,匯出硬體檔案+bit流檔案到vitis資料夾,用vitis建立硬體平臺並build
就生成了bit檔案和fsbl檔案,生成BOOT.BIN檔案還需要一個elf檔案
這裡因為要引導LINUX系統啟動,因此是UBOOT,這個UBOOT在ZYNQ裡面比較通用的。我們也可以使用OPENWIFI中其他ZYNQ板子的UBOOT來替換。下載命令如下:
git clone --recursive https://github.com/open-sdr/openwifi
我下載失敗了幾次,大機率是網路問題,因為比較大,所以最後我透過gitee上別人的下載的,自己看網路如何。

編譯openwifi工程,我用的微相科技的E310板子,在openwifi裡面是antsdr板子

一些具體細節可以參考https://blog.csdn.net/mcupro/article/details/140346371

在openwifi-hw下編譯自己的板子檔案../create_ip_repo.sh $XILINX_DIR

下載完成後進入目錄:openwifi/kernel_boot/board/antsdr 可以看到裡面有個u-boot.elf檔案,複製檔案到openwifi-hw目錄,建立一個BootFile資料夾,放置生成BOOT.BIN所需的檔案。放三個檔案,一個是剛才那個u-boot.elf檔案,一個是vivado生成的bit流檔案system_top.bit,一個是vitis生成的fsbl.elf檔案.

然後開啟vitis,xilinx-create boot image-zynq and zynq ultrascale

openwifi編譯步驟記錄

在下面的boot image partitions新增上面的三個檔案BootFile裡面的,選擇輸出bif存放也在裡面,最後生成BOOT.bin和output.bif檔案

此boot.bin檔案可以直接代替openwifi啟動盤中的boot.bin檔案

openwifi編譯步驟記錄

下載然後燒錄到卡里先,燒錄完成之後

openwifi編譯步驟記錄

到BOOT/openwifi/antsdr下面將三個檔案複製到BOOT主目錄下(這邊的BOOT.BIN檔案換成我們vitis生成的BOOT.bin檔案先,再三個複製)

然後插上SD卡,啟動


更新FPGA,也就是更新FPGA這邊的程式碼,之後,更新整個板子

export XILINX_DIR=your_Xilinx_install_directory
(Example: export XILINX_DIR=/opt/Xilinx. The Xilinx directory should include sth like: Downloads, Vitis, etc.)
export OPENWIFI_HW_IMG_DIR=your_openwifi-hw-img_directory
(The directory where you get the open-sdr/openwifi-hw-img repo via git clone)
export BOARD_NAME=your_board_name

首先在.bashrc裡面先設定好環境

然後從openwifi-hw-img中拾取FPGA位元流,生成system_top.bit.bin,透過ssh通道傳輸到板上:

cd openwifi/user_space; ./boot_bin_gen.sh $XILINX_DIR $BOARD_NAME $OPENWIFI_HW_IMG_DIR/boards/$BOARD_NAME/sdk/system_top.xsa
scp ./system_top.bit.bin root@192.168.10.122:openwifi/

這邊還是有點奇怪的,因為是vivado21所以應該是vitis才對,檔案下面也並沒有sdk,所以應該是需要修改的

首先就是需要再.bashrc下面加上export XSA_FILE=/home/cjl520/openwifi/openwifi-hw/boards/antsdr/openwifi_antsdr/vitis

因為之前vitis生成的system_top.xsa檔案就在這個下面(這是我的地址,每個人下載的可能不一樣,cjl520是我的工程目錄)

./boot_bin_gen.sh $XILINX_DIR $BOARD_NAME /home/cjl520/openwifi/openwifi-hw/boards/antsdr/openwifi_antsdr/vitis/system_top.xsa

生成新的system_top.bit.bin

然後複製該檔案到SD卡上(用下面命令的好處就是可以直接在SDR還啟動的時候,複製過去,如果用的虛擬機器把橋接改共用net,不然ssh沒用)

scp ./system_top.bit.bin root@192.168.10.122:openwifi/

更新driver驅動,應該就是sdr的lib/module裡面核心的驅動那些ko檔案之類的了

首先是環境準備,我們是zynq7020所以是32

sudo apt install flex bison libssl-dev device-tree-compiler u-boot-tools -y
cd openwifi/user_space; ./prepare_kernel.sh $XILINX_DIR ARCH_BIT
(For Zynq 7000, ARCH_BIT should be 32, for Zynq MPSoC, ARCH_BIT should be 64)

然後就是編譯最新的openwifi驅動檔案

cd openwifi/driver; ./make_all.sh $XILINX_DIR ARCH_BIT
(For Zynq 7000, ARCH_BIT should be 32, for Zynq MPSoC, ARCH_BIT should be 64)
(More arguments (max 5) beyond above two will be converted to "#define argument" in pre_def.h for conditional compiling)

最後複製過去,就是所有.ko檔案,包括子資料夾裡面的,最後發現其實就是那幾個關鍵的ko檔案

cd openwifi/driver; scp `find ./ -name \*.ko` root@192.168.10.122:openwifi/

openwifi編譯步驟記錄

最後就可以重新使用./wgd.sh指令碼來載入更新驅動。

相關文章