1The **wgd.sh** (running on board) supports reloading driver and/or FPGA image dynamically without rebooting/power-cycle. It can work in different modes in a 2flexible way. 3 4- [[Reload driver only](#Reload-driver-only)] 5- [[Reload driver and FPGA](#Reload-driver-and-FPGA)] 6- [[Reload driver and FPGA in target directory](#Reload-driver-and-FPGA-in-target-directory)] 7- [[Reload driver and FPGA from a single package file](#Reload-driver-and-FPGA-from-a-single-package-file)] 8- [[Detailed full usage info](#Detailed-full-usage-info)] 9 10## Reload driver only 11This is the original way. To let **wgd.sh** only loads the driver without touching FPGA, please ensure FPGA image file **system_top.bit.bin** does **NOT** 12present in the directory. If wgd.sh can not find the FPGA image, it will skip reloading it. 13 14## Reload driver and FPGA 15- Generate the reloadable FPGA file **system_top.bit.bin**. In the Linux host computer: 16 ``` 17 cd openwifi/user_space 18 ./drv_and_fpga_package_gen.sh $OPENWIFI_HW_DIR $XILINX_DIR $BOARD_NAME 19 ``` 20 Then **system_top.bit.bin** will be generated in openwifi/user_space 21- Put **system_top.bit.bin** on board in the same directory as wgd.sh and other driver files (.ko) 22- Run **wgd.sh** on board as usual 23 24## Reload driver and FPGA in target directory 25Put **system_top.bit.bin** on board together with other driver files (.ko) in a directory ($TARGET_DIR), then run on board: 26``` 27./wgd.sh $TARGET_DIR 28``` 29In this way, different versions/variants of driver/FPGA can be put in different directories. Then **wgd.sh** can be used to switch 30between them without rebooting/power-cycle. 31 32## Reload driver and FPGA from a single package file 33The openwifi/user_space/**drv_and_fpga_package_gen.sh** also generates a single package file **drv_and_fpga.tar.gz**, which includes driver files (.ko), 34FPGA image and many other rich source files/infos that are related. You can rename it with a more meaningful name (such as add version or variant info), and put 35the renamed **drv_and_fpga_MEANINGFUL_POSTFIX.tar.gz** on board in the same directory as **wgd.sh**, and let **wgd.sh** load it: 36``` 37./wgd.sh ./drv_and_fpga_MEANINGFUL_POSTFIX.tar.gz 38``` 39In this way, different version/variants of driver/FPGA can be packaged as different files. Then **wgd.sh** can be used to switch 40between them without rebooting/power-cycle. 41 42## Detailed full usage info 43Run the "./wgd.sh -h" on board or open wgd.sh to see full usage info: 44``` 45usage: 46 Script for load (or download+load) different driver and FPGA img without rebooting 47 no argument: Load .ko driver files and FPGA img (if system_top.bit.bin exist) in current dir with test_mode=0. 48 1st argument: If it is a NUMBER, it will be assigned to test_mode. Then load everything from current dir. 49 1st argument: If it is a string called "remote", it will download driver/FPGA and load everything. 50 - 2nd argument (if exist) is the target directory name for downloading and reloading 51 - 3rd argument (if exist) is the value for test_mode 52 1st argument: neither NUMBER nor "remote" nor a .tar.gz file, it is regarded as a directory and load everything from it. 53 - 2nd argument (if exist) is the value for test_mode 54 1st argument: a .tar.gz file, it will be unpacked then load from that unpacked directory 55 - 2nd argument (if exist) is the value for test_mode 56``` 57