This Repository is used to make Microphase software radio device firmware.
The Firmware is built with the Xilinx Vivado 2019.1(v0.34) or (Xilinx Vivado 2021.1)(v0.35). You need to install the correct Vivado version in you Linux PC, and then,you can follow the instructions below to generate the firmware for ANTSDR E310 or ANTSDR E200 and then.
sudo apt-get install git build-essential fakeroot libncurses5-dev libssl-dev ccache
sudo apt-get install dfu-util u-boot-tools device-tree-compiler mtools
sudo apt-get install bc python cpio zip unzip rsync file wget
sudo apt-get install libtinfo5 device-tree-compiler bison flex u-boot-tools
sudo apt-get purge gcc-arm-linux-gnueabihf
sudo apt-get remove libfdt-de
get source from git
v0.34
git clone -b v0.34 --recursive https://github.com/MicroPhase/antsdr-fw-patch.git
v0.35
git clone -b v0.35 --recursive https://github.com/MicroPhase/antsdr-fw-patch.git
setup bash
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/opt/Xilinx/SDK/2019.1/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin
export VIVADO_SETTINGS=/opt/Xilinx/Vivado/2019.1/settings64.sh
export PERL_MM_OPT=
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/opt/Xilinx/SDK/2019.1/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin
export VIVADO_SETTINGS=/opt/Xilinx/Vivado/2021.1/settings64.sh
export PERL_MM_OPT=
ant e310
export TARGET=ant
ant e200
export TARGET=antsdre200
ant e310v2
export TARGET=e310v2
After completing the above steps, start to Patch.
cd antsdr-fw-patch
ant e310
sh patch.sh ant
ant e200
sh patch.sh e200
ant e310v2
sh patch.sh e310v2
If you patch is successfully applied, you can see the following information.
jcc@jcc:~/work/Git/mp/antsdr-fw-patch$ sh patch.sh e200
Patch check...
...
...
Makefile | 29 +++++++-
scripts/antsdre200.its | 174 ++++++++++++++++++++++++++++++++++++++++++++++++
scripts/antsdre200.mk | 10 +++
3 files changed, 211 insertions(+), 2 deletions(-)
Patch...
...
...
patch finish
Then you can make firmware.
cd plutosdr-fw
make
After the firmware building finished, you will see below file in the build folder. These files are used for flash updating.(This is e200 device)
jcc@jcc:~/work/Git/mp/antsdr-fw-patch/plutosdr-fw$ ls -AGhl build
总用量 319M
-rw-rw-r-- 1 jcc 12M 12月 26 11:06 antsdre200.dfu
-rw-rw-r-- 1 jcc 12M 12月 26 11:06 antsdre200.frm
-rw-rw-r-- 1 jcc 33 12月 26 11:06 antsdre200.frm.md5
-rw-rw-r-- 1 jcc 12M 12月 26 11:06 antsdre200.itb
-rw-rw-r-- 1 jcc 20M 12月 26 11:06 antsdr-fw-v0.34-dirty.zip
-rw-rw-r-- 1 jcc 670K 12月 26 11:06 antsdr-jtag-bootstrap-v0.34-dirty.zip
-rw-rw-r-- 1 jcc 69 12月 26 11:06 boot.bif
-rw-rw-r-- 1 jcc 508K 12月 26 11:06 boot.bin
-rw-rw-r-- 1 jcc 508K 12月 26 11:06 boot.dfu
-rw-rw-r-- 1 jcc 637K 12月 26 11:06 boot.frm
-rw-rw-r-- 1 jcc 245M 12月 26 11:06 legal-info-v0.34-dirty.tar.gz
-rw-rw-r-- 1 jcc 527K 12月 26 10:51 LICENSE.html
-rw-rw-r-- 1 jcc 524K 12月 26 11:05 ps7_init.c
-rw-rw-r-- 1 jcc 524K 12月 26 11:05 ps7_init_gpl.c
-rw-rw-r-- 1 jcc 4.2K 12月 26 11:05 ps7_init_gpl.h
-rw-rw-r-- 1 jcc 4.8K 12月 26 11:05 ps7_init.h
-rw-rw-r-- 1 jcc 2.8M 12月 26 11:05 ps7_init.html
-rw-rw-r-- 1 jcc 35K 12月 26 11:05 ps7_init.tcl
-rw-r--r-- 1 jcc 5.4M 12月 26 10:56 rootfs.cpio.gz
drwxrwxr-x 6 jcc 4.0K 12月 26 11:06 sdk
-rw-rw-r-- 1 jcc 2.3M 12月 26 11:06 system_top.bit
-rw-rw-r-- 1 jcc 568K 12月 26 11:05 system_top.hdf
-rwxrwxr-x 1 jcc 471K 12月 26 11:06 u-boot.elf
-rw-rw---- 1 jcc 128K 12月 26 11:06 uboot-env.bin
-rw-rw---- 1 jcc 129K 12月 26 11:06 uboot-env.dfu
-rw-rw-r-- 1 jcc 6.8K 12月 26 11:06 uboot-env.txt
-rwxrwxr-x 1 jcc 4.0M 12月 26 10:45 zImage
-rw-rw-r-- 1 jcc 19K 12月 26 10:56 zynq-antsdre200.dtb
After the firmware building finished, you can build the SD card boot image for device. Just type the following command.
make sdimg
You will see the SD boot image in the build_sdimg folder. You can just copy all these files in that folder into a SD card, plug the SD card into the ANTSDR, set the jumper into SD card boot mode.
DFU mode is just for ant e310, e200 is unsupport. If your device is e310, You can update the flash by DFU. Set the jumper into Flash Boot mode. When device is power up, push the DFU button, and then, you will see the both led in the device will turn green, now it's time to update the flash. You should change into the build folder first,and plug a micro USB into the OTG interface. After that, you should run the following command.
sudo dfu-util -a firmware.dfu -D ./ant.dfu
sudo dfu-util -a boot.dfu -D ./boot.dfu
sudo dfu-util -a uboot-env.dfu -D ./uboot-env.dfu
sudo dfu-util -a uboot-extra-env.dfu -U ./uboot-extra-env.dfu
Now you can repower device.
If you want to use 2r2t mode, you need to enter the system and run the following command to write the mode configuradion into the nor flash. But there is a little difference in sd card boot mode and qspi boot mode
fw_setenv attr_name compatible
fw_setenv attr_val ad9361
fw_setenv compatible ad9361
fw_setenv mode 2r2t
reboot
After restarting, use the command to detect whether the variable in the flash has been written. If the write is successful, then the 2r2t mode can be used.
Of course, thers is another way to configure the 2r2t mode, and use the command to write to the flash under uboot, such as
setenv attr_name compatible
setenv attr_val ad9361
setenv compatible ad9361
setenv mode 2r2t
saveenv
reset
You need to modify some parameters in uEnv.txt file.
before fixing:
adi_loadvals=fdt addr ${fit_load_address}......
after fixing:
adi_loadvals=fdt addr ${devicetree_load_address}......
before fixing:
maxcpus=1
mode=1r1t
after fixing:
maxcpus=1
mode=2r2t
before fixing:
sdboot=if mmcinfo; then run uenvboot; echo Copying Linux from SD to RAM... && load mmc 0 ${fit_load_address} ${kernel_image} && load mmc 0 ${devicetree_load_address} ${devicetree_image} && load mmc 0 ${ramdisk_load_address} ${ramdisk_image} bootm ${fit_load_address} ${ramdisk_load_address} ${devicetree_load_address}; fi
after fixing:
sdboot=if mmcinfo; then run uenvboot; echo Copying Linux from SD to RAM... && load mmc 0 ${fit_load_address} ${kernel_image} && load mmc 0 ${devicetree_load_address} ${devicetree_image} && load mmc 0 ${ramdisk_load_address} ${ramdisk_image} && run adi_loadvals;bootm ${fit_load_address} ${ramdisk_load_address} ${devicetree_load_address}#{fit_config}; fi
before fixing:
usbboot=if usb start; then run uenvboot; echo Copying Linux from USB to RAM... && load usb 0 ${fit_load_address} ${kernel_image} && load usb 0 ${devicetree_load_address} ${devicetree_image} && load usb 0 ${ramdisk_load_address} ${ramdisk_image} && bootm ${fit_load_address} ${ramdisk_load_address} ${devicetree_load_address}; fi
after fixing:
usbboot=if usb start; then run uenvboot; echo Copying Linux from USB to RAM... && load usb 0 ${fit_load_address} ${kernel_image} && load usb 0 ${devicetree_load_address} ${devicetree_image} && load usb 0 ${ramdisk_load_address} ${ramdisk_image} && bootm ${fit_load_address} ${ramdisk_load_address} ${devicetree_load_address}; fi
attr_name=compatible
attr_val=ad9361
compatible=ad9361
Then you can enjoy the 2r2t mode.