這邊還是簡單記一下步驟
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.)
./get_ip_openofdm_rx.sh
cd openwifi-hw/boards/$BOARD_NAME/
../create_ip_repo.sh $XILINX_DIR
source ./openwifi.tcl
git clone --recursive https://github.com/open-sdr/openwifi
編譯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
在下面的boot image partitions新增上面的三個檔案BootFile裡面的,選擇輸出bif存放也在裡面,最後生成BOOT.bin和output.bif檔案
此boot.bin檔案可以直接代替openwifi啟動盤中的boot.bin檔案
下載然後燒錄到卡里先,燒錄完成之後
到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/
最後就可以重新使用./wgd.sh指令碼來載入更新驅動。