JTAG configuration and bitstream downloading guide - xjtuecho/EBAZ4205 GitHub Wiki
One of the first things to do after getting the board is to setup JTAG and download bitstream, here's some methods to do this:
TODO: detailed/improved instruction
Since the board has a standard 2x7 JTAG connector, an ordinary Xilinx downloader can be used. You can configure both PS and PL in Vivado and Xilinx SDK, and use things like ILA(integrated logic analyzer, a powerful tool in Vivado). Then you may want to solder on an SD card slot and change boot mode to SD card for further development.
Actually you can use any FT2232H or FT232H with flashed firmware as the downloader, like this one. Flashing instruction is here, note that the firmware is for FT2322H instead of FT232H. Then everything will be same as the canonical way.
TODO: openocd/JLINK/other downloaders? I'm not familiar with these
If you just want to download the bitstream without using advanced things like ILA, no downloader is required: PL can be configured via the u-boot in NAND and ethernet (whether PS can be configured this way needs verification).
First convert bitstream to bin file, using this script:
TODO: detailed instruction
proc gen_bin {bit} {
set filename [file rootname [file tail $bit]].bif
set fileId [open $filename "w"]
puts $fileId "all:"
puts $fileId "{"
puts $fileId " $bit"
puts $fileId "}"
close $fileId
#exec bootgen -w on -image $filename -arch zynqmp -process_bitstream bin
exec bootgen -w on -image $filename -arch zynq -process_bitstream bin
puts "$filename created successfully"
}
Setup a tftp server on computer, connect board's ethernet to computer, and in u-boot:
<press d>
setenv serverip 192.168.6.6
setenv ipaddr 192.168.6.136
tftpboot 0x100000 bd_hello_wrapper.bit.bin
fpga load 0 0x100000 0x1fcba0
You may need to change IP address according to your condition.
You may see a ethernet error after fgpa load
, and have to reset to download a new bitstream, this can be solved. TODO: new page about this
Compiled Linux image can be loaded and booted via this way too:
tftpboot 0 dtb.dtb
tftpboot 8000 uImage
tftpboot 1000000 uramdisk.image.gz
bootm 8000 1000000 0
This method only requires soldering the UART 1x4 pins, which is a good news.
If UART keep receiving garbage or you can't input to UART, check electrical connections! The board often comes in bad condition and you have to solder things onto rusted footprints.