xref: /openwifi/user_space/update_sdcard.sh (revision 7e3e6749ba63e81244c3172a4484f0094bf6a722)
1b73660adSXianjun Jiao
2b73660adSXianjun Jiao#!/bin/bash
3a6085186SLina Ceballos
420aa12c2SJiao Xianjun# Author: Xianjun Jiao
520aa12c2SJiao Xianjun# SPDX-FileCopyrightText: 2019 UGent
6a6085186SLina Ceballos# SPDX-License-Identifier: AGPL-3.0-or-later
7a6085186SLina Ceballos
8b73660adSXianjun Jiaoif [ "$#" -ne 4 ]; then
9b73660adSXianjun Jiao    echo "You have input $# arguments."
10abdb610fSJiao Xianjun    echo "You must enter exactly 4 arguments: \$OPENWIFI_HW_DIR \$XILINX_DIR \$BOARD_NAME \$SDCARD_DIR"
11b73660adSXianjun Jiao    exit 1
12b73660adSXianjun Jiaofi
13b73660adSXianjun Jiao
14abdb610fSJiao XianjunOPENWIFI_HW_DIR=$1
15b73660adSXianjun JiaoXILINX_DIR=$2
16b73660adSXianjun JiaoBOARD_NAME=$3
17b73660adSXianjun JiaoSDCARD_DIR=$4
18b73660adSXianjun Jiao
19abdb610fSJiao XianjunOPENWIFI_DIR=$(pwd)/../
20abdb610fSJiao Xianjun
21abdb610fSJiao Xianjunecho OPENWIFI_DIR $OPENWIFI_DIR
22abdb610fSJiao Xianjunecho OPENWIFI_HW_DIR $OPENWIFI_HW_DIR
23abdb610fSJiao Xianjun
24b73660adSXianjun Jiaoif [ -f "$OPENWIFI_DIR/LICENSE" ]; then
25b73660adSXianjun Jiao    echo "\$OPENWIFI_DIR is found!"
26b73660adSXianjun Jiaoelse
27b73660adSXianjun Jiao    echo "\$OPENWIFI_DIR is not correct. Please check!"
28b73660adSXianjun Jiao    exit 1
29b73660adSXianjun Jiaofi
30b73660adSXianjun Jiao
31b73660adSXianjun Jiaoif [ -d "$XILINX_DIR/SDK" ]; then
32b73660adSXianjun Jiao    echo "\$XILINX_DIR is found!"
33b73660adSXianjun Jiaoelse
34b73660adSXianjun Jiao    echo "\$XILINX_DIR is not correct. Please check!"
35b73660adSXianjun Jiao    exit 1
36b73660adSXianjun Jiaofi
37b73660adSXianjun Jiao
38ad0b112aSblack-pigeonif [ "$BOARD_NAME" != "antsdr" ] && [ "$BOARD_NAME" != "zc706_fmcs2" ] && [ "$BOARD_NAME" != "zc702_fmcs2" ] && [ "$BOARD_NAME" != "zed_fmcs2" ] && [ "$BOARD_NAME" != "adrv9361z7035" ] && [ "$BOARD_NAME" != "adrv9364z7020" ] && [ "$BOARD_NAME" != "zcu102_fmcs2" ] && [ "$BOARD_NAME" != "zcu102_9371" ]; then
39b73660adSXianjun Jiao    echo "\$BOARD_NAME is not correct. Please check!"
40b73660adSXianjun Jiao    exit 1
41b73660adSXianjun Jiaoelse
42b73660adSXianjun Jiao    echo "\$BOARD_NAME is found!"
43b73660adSXianjun Jiaofi
44b73660adSXianjun Jiao
45abdb610fSJiao Xianjunif [ -d "$OPENWIFI_HW_DIR/boards/$BOARD_NAME" ]; then
46abdb610fSJiao Xianjun    echo "\$OPENWIFI_HW_DIR is found!"
47abdb610fSJiao Xianjunelse
48abdb610fSJiao Xianjun    echo "\$OPENWIFI_HW_DIR is not correct. Please check!"
49abdb610fSJiao Xianjun    exit 1
50abdb610fSJiao Xianjunfi
51abdb610fSJiao Xianjun
52b73660adSXianjun Jiao# detect SD card mounting status
53b73660adSXianjun Jiaoif [ -d "$SDCARD_DIR/BOOT/" ]; then
54b73660adSXianjun Jiao    echo "$SDCARD_DIR/BOOT/"
550a92505dSXianjun Jiao    sudo mkdir $SDCARD_DIR/BOOT/openwifi
560a92505dSXianjun Jiao    sudo rm -rf $SDCARD_DIR/BOOT/README.txt
57b73660adSXianjun Jiaoelse
58b73660adSXianjun Jiao    echo "$SDCARD_DIR/BOOT/ does not exist!"
59b73660adSXianjun Jiao    exit 1
60b73660adSXianjun Jiaofi
61b73660adSXianjun Jiao
62b73660adSXianjun Jiaoif [ -d "$SDCARD_DIR/rootfs/" ]; then
63b73660adSXianjun Jiao    echo "$SDCARD_DIR/rootfs/"
64b73660adSXianjun Jiaoelse
65b73660adSXianjun Jiao    echo "$SDCARD_DIR/rootfs/ does not exist!"
66b73660adSXianjun Jiao    exit 1
67b73660adSXianjun Jiaofi
68b73660adSXianjun Jiao
69febc5adfSXianjun Jiaoif [ "$BOARD_NAME" == "zcu102_fmcs2" ] || [ "$BOARD_NAME" == "zcu102_9371" ]; then
70febc5adfSXianjun Jiao    dtb_filename="system.dtb"
71febc5adfSXianjun Jiao    dts_filename="system.dts"
72febc5adfSXianjun Jiaoelse
73febc5adfSXianjun Jiao    dtb_filename="devicetree.dtb"
74febc5adfSXianjun Jiao    dts_filename="devicetree.dts"
75febc5adfSXianjun Jiaofi
76febc5adfSXianjun Jiaoecho $dtb_filename
77febc5adfSXianjun Jiaoecho $dts_filename
78febc5adfSXianjun Jiao
79febc5adfSXianjun Jiaosudo true
80251f6958SXianjun Jiao
81b73660adSXianjun Jiaohome_dir=$(pwd)
82b73660adSXianjun Jiao
83b73660adSXianjun Jiaoset -x
84b73660adSXianjun Jiao
85febc5adfSXianjun JiaoLINUX_KERNEL_SRC_DIR_NAME32=adi-linux
86febc5adfSXianjun JiaoLINUX_KERNEL_SRC_DIR_NAME64=adi-linux-64
87b73660adSXianjun Jiao
889634f24eSXianjun Jiaocd $OPENWIFI_DIR/user_space/
89abdb610fSJiao Xianjun./prepare_kernel.sh $XILINX_DIR 32 build
909634f24eSXianjun Jiaosudo true
91abdb610fSJiao Xianjun./prepare_kernel.sh $XILINX_DIR 64 build
929634f24eSXianjun Jiaosudo true
939634f24eSXianjun Jiao
94ad0b112aSblack-pigeonBOARD_NAME_ALL="antsdr zc706_fmcs2 zed_fmcs2 zc702_fmcs2 adrv9361z7035 adrv9364z7020 zcu102_fmcs2 zcu102_9371"
95febc5adfSXianjun Jiao# BOARD_NAME_ALL="zcu102_fmcs2"
96febc5adfSXianjun Jiao# BOARD_NAME_ALL="adrv9361z7035"
97b73660adSXianjun Jiaofor BOARD_NAME_TMP in $BOARD_NAME_ALL
98b73660adSXianjun Jiaodo
99febc5adfSXianjun Jiao    if [ "$BOARD_NAME_TMP" == "zcu102_fmcs2" ] || [ "$BOARD_NAME_TMP" == "zcu102_9371" ]; then
100febc5adfSXianjun Jiao        dtb_filename_tmp="system.dtb"
101febc5adfSXianjun Jiao        dts_filename_tmp="system.dts"
102abdb610fSJiao Xianjun        ./boot_bin_gen_zynqmp.sh $OPENWIFI_HW_DIR $XILINX_DIR $BOARD_NAME_TMP
103febc5adfSXianjun Jiao    else
104febc5adfSXianjun Jiao        dtb_filename_tmp="devicetree.dtb"
105febc5adfSXianjun Jiao        dts_filename_tmp="devicetree.dts"
106abdb610fSJiao Xianjun        ./boot_bin_gen.sh $OPENWIFI_HW_DIR $XILINX_DIR $BOARD_NAME_TMP
107febc5adfSXianjun Jiao    fi
108febc5adfSXianjun Jiao    echo $dtb_filename_tmp
109febc5adfSXianjun Jiao    echo $dts_filename_tmp
110febc5adfSXianjun Jiao
111febc5adfSXianjun Jiao    dtc -I dts -O dtb -o $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/$dtb_filename_tmp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/$dts_filename_tmp
1122b6dbfb2SXianjun Jiao    mkdir $SDCARD_DIR/BOOT/openwifi/$BOARD_NAME_TMP
1130a92505dSXianjun Jiao    sudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/$dtb_filename_tmp $SDCARD_DIR/BOOT/openwifi/$BOARD_NAME_TMP
1140a92505dSXianjun Jiao    sudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/output_boot_bin/BOOT.BIN $SDCARD_DIR/BOOT/openwifi/$BOARD_NAME_TMP
115febc5adfSXianjun Jiao    sudo true
116b73660adSXianjun Jiaodone
117b73660adSXianjun Jiao
1180a92505dSXianjun Jiaosudo mkdir $SDCARD_DIR/BOOT/openwifi/zynq-common
1190a92505dSXianjun Jiaosudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/arch/arm/boot/uImage  $SDCARD_DIR/BOOT/openwifi/zynq-common/
1200a92505dSXianjun Jiaosudo mkdir $SDCARD_DIR/BOOT/openwifi/zynqmp-common
1210a92505dSXianjun Jiaosudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64/arch/arm64/boot/Image $SDCARD_DIR/BOOT/openwifi/zynqmp-common/
122febc5adfSXianjun Jiao
12321e7ff91SXianjun Jiaosudo mkdir $SDCARD_DIR/rootfs/root/openwifi
12421e7ff91SXianjun Jiao
12521e7ff91SXianjun Jiao# Copy uImage BOOT.BIN and devicetree to SD card BOOT partition and backup at rootfs/root/openwifi
1260a92505dSXianjun Jiaosudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME/$dtb_filename $SDCARD_DIR/BOOT/
12721e7ff91SXianjun Jiaosudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME/$dtb_filename $SDCARD_DIR/rootfs/root/openwifi/ -rf
1280a92505dSXianjun Jiaosudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME/output_boot_bin/BOOT.BIN $SDCARD_DIR/BOOT/
12921e7ff91SXianjun Jiaosudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME/output_boot_bin/BOOT.BIN $SDCARD_DIR/rootfs/root/openwifi/ -rf
130febc5adfSXianjun Jiaoif [ "$BOARD_NAME" == "zcu102_fmcs2" ] || [ "$BOARD_NAME" == "zcu102_9371" ]; then
1310a92505dSXianjun Jiao    sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64/arch/arm64/boot/Image $SDCARD_DIR/BOOT/
13221e7ff91SXianjun Jiao    sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64/arch/arm64/boot/Image $SDCARD_DIR/rootfs/root/openwifi/ -rf
133febc5adfSXianjun Jiaoelse
134f80c9b32Sweiliu1011    sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/arch/arm/boot/uImage $SDCARD_DIR/BOOT/
13521e7ff91SXianjun Jiao    sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/arch/arm/boot/uImage $SDCARD_DIR/rootfs/root/openwifi/ -rf
136febc5adfSXianjun Jiaofi
137b73660adSXianjun Jiao
138b73660adSXianjun Jiaosudo cp $OPENWIFI_DIR/user_space/* $SDCARD_DIR/rootfs/root/openwifi/ -rf
139b73660adSXianjun Jiaosudo wget -P $SDCARD_DIR/rootfs/root/openwifi/webserver/ https://users.ugent.be/~xjiao/openwifi-low-aac.mp4
140b73660adSXianjun Jiao
141febc5adfSXianjun Jiao# build openwifi driver
142abdb610fSJiao Xianjunsaved_dir=$(pwd)
143abdb610fSJiao Xianjuncd $OPENWIFI_DIR/driver
144abdb610fSJiao Xianjun./make_all.sh $XILINX_DIR 32
145abdb610fSJiao Xianjuncd $OPENWIFI_DIR/driver/side_ch
146abdb610fSJiao Xianjun./make_driver.sh $XILINX_DIR 32
147abdb610fSJiao Xianjuncd $saved_dir
148abdb610fSJiao Xianjun
149febc5adfSXianjun Jiao# Copy files to SD card rootfs partition
150febc5adfSXianjun Jiaosudo mkdir $SDCARD_DIR/rootfs/root/openwifi/drv32
151febc5adfSXianjun Jiaosudo find $OPENWIFI_DIR/driver -name \*.ko -exec cp {} $SDCARD_DIR/rootfs/root/openwifi/drv32 \;
152febc5adfSXianjun Jiao
153febc5adfSXianjun Jiao# build openwifi driver
154abdb610fSJiao Xianjunsaved_dir=$(pwd)
155abdb610fSJiao Xianjuncd $OPENWIFI_DIR/driver
156abdb610fSJiao Xianjun./make_all.sh $XILINX_DIR 64
157abdb610fSJiao Xianjuncd $OPENWIFI_DIR/driver/side_ch
158abdb610fSJiao Xianjun./make_driver.sh $XILINX_DIR 64
159abdb610fSJiao Xianjuncd $saved_dir
160abdb610fSJiao Xianjun
161febc5adfSXianjun Jiao# Copy files to SD card rootfs partition
162febc5adfSXianjun Jiaosudo mkdir $SDCARD_DIR/rootfs/root/openwifi/drv64
163febc5adfSXianjun Jiaosudo find $OPENWIFI_DIR/driver -name \*.ko -exec cp {} $SDCARD_DIR/rootfs/root/openwifi/drv64 \;
164febc5adfSXianjun Jiao
165b73660adSXianjun Jiaosudo mkdir $SDCARD_DIR/rootfs/lib/modules
166febc5adfSXianjun Jiao
167febc5adfSXianjun Jiaosudo mkdir $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME32
168febc5adfSXianjun Jiaosudo find $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32 -name \*.ko -exec cp {} $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME32/ \;
169*7e3e6749Sweiliusudo mv $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME32/xilinx_dma.ko $SDCARD_DIR/rootfs/root/openwifi/drv32
170*7e3e6749Sweiliusudo mv $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME32/ad9361_drv.ko $SDCARD_DIR/rootfs/root/openwifi/drv32
17156fcab20SXianjun Jiaosudo rm $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME32/{axidmatest.ko,adi_axi_hdmi.ko} -f
172febc5adfSXianjun Jiao
173febc5adfSXianjun Jiaosudo mkdir $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME64
174febc5adfSXianjun Jiaosudo find $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64 -name \*.ko -exec cp {} $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME64/ \;
175*7e3e6749Sweiliusudo mv $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME64/xilinx_dma.ko $SDCARD_DIR/rootfs/root/openwifi/drv64
176*7e3e6749Sweiliusudo mv $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME64/ad9361_drv.ko $SDCARD_DIR/rootfs/root/openwifi/drv64
17756fcab20SXianjun Jiaosudo rm $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME64/{axidmatest.ko,adi_axi_hdmi.ko} -f
178b73660adSXianjun Jiao
179b73660adSXianjun Jiaosudo rm $SDCARD_DIR/rootfs/etc/udev/rules.d/70-persistent-net.rules
180b73660adSXianjun Jiaosudo cp $OPENWIFI_DIR/kernel_boot/70-persistent-net.rules $SDCARD_DIR/rootfs/etc/udev/rules.d/
181251f6958SXianjun Jiaosudo mv $SDCARD_DIR/rootfs/lib/udev/rules.d/75-persistent-net-generator.rules $SDCARD_DIR/rootfs/lib/udev/rules.d/75-persistent-net-generator.rules.bak
182b73660adSXianjun Jiao
183b73660adSXianjun Jiao# Some setup
184b73660adSXianjun Jiaosudo echo -e "\nauto lo eth0\niface lo inet loopback\niface eth0 inet static\naddress 192.168.10.122\nnetmask 255.255.255.0\n" | sudo tee -a $SDCARD_DIR/rootfs/etc/network/interfaces
185b73660adSXianjun Jiaosudo echo -e "\nnameserver 8.8.8.8\nnameserver 4.4.4.4\n" | sudo tee -a $SDCARD_DIR/rootfs/etc/resolv.conf
186b73660adSXianjun Jiaosudo echo -e "\nUseDNS no\n" | sudo tee -a $SDCARD_DIR/rootfs/etc/ssh/sshd_config
187b73660adSXianjun Jiaosudo echo -e "\nnet.ipv4.ip_forward=1\n" | sudo tee -a $SDCARD_DIR/rootfs/etc/sysctl.conf
188b73660adSXianjun Jiaosudo chmod -x $SDCARD_DIR/rootfs/etc/update-motd.d/90-updates-available
189b73660adSXianjun Jiaosudo chmod -x $SDCARD_DIR/rootfs/etc/update-motd.d/91-release-upgrade
190b73660adSXianjun Jiao
191b73660adSXianjun Jiaocd $SDCARD_DIR/BOOT
192b73660adSXianjun Jiaosync
193b73660adSXianjun Jiaocd $SDCARD_DIR/rootfs
194b73660adSXianjun Jiaosync
195b73660adSXianjun Jiao
196b73660adSXianjun Jiaocd $home_dir
197b73660adSXianjun Jiao
198b73660adSXianjun Jiaoumount $SDCARD_DIR/BOOT/
199b73660adSXianjun Jiaoumount $SDCARD_DIR/rootfs/
200