Closed barbedo closed 1 year ago
Great Work! I'll try to apply PRs in chronological order or when there is no discussions remarks about content. Thanks!
Everything to support the VCU118 is now merged. Thanks for everything!
I'll just keep this issue open until I add the missing documentation on doc/xilinx.rst
Well, I think that's all for now, so closing this issue.
Thanks a lot!
Thanks for your contribution too!
Hey again,
This is a followup from #283, since I've got access to a full Vivado license.
Adding support for the dual QSPI flash on this board was more difficult than I had expected, so I'll try to document all the modifications and the rationale behind them here and break down the code modifications in multiple PRs to ease a bit the review.
If these modifications are merged, it can potentially open the door to support other Xilinx UltraScale-based boards with Dual QSPI Flash, like the KCU105, KCU1116, VCU110, ZCU102, etc.
Changes
Add support for the MT25QU01 QSPI flash chip.
Add support for flash chips with more than 128 Mb by adding 4-byte addressing when writing to flash addresses higher than
0xFFFFFF
.Modify the
spiOverJtag
module to take into account the new differences introduced by the UltraScale series.STARTUPE3
module.USER1
for the first flash,USER2
for the second flash.BSCANE2
blocks are now instanced.virtexultrascale
flag is present.Make the instruction register codes variable according to the Xilinx FPGA being used.
default
orxcvu9p
for now.xcvu9p_flga2104.bsd
boundary scan file of a Vivado installation.Add a new pair of CLI options
--secondary-bitstream
and--target-flash
.--target-flash
indicates the target of write/read/dump flash operations and can beprimary
,secondary
orboth
. The default isprimary
.--secondary-bitstream
points to the bit file to load or to be dumped when--target-flash
issecondary
orboth
. Iftarget-flash=both
, then--bitstream
also needs to be specified.openFPGALoader -f --board vcu118 --target-flash both --bitstream my_design_spix8_primary.mcs --secondary-bitstream my_design_spix8_secondary.mcs
openFPGALoader -f --board vcu118 --target-flash primary --bitstream my_design.mcs
openFPGALoader -f --board vcu118 --target-flash secondary --secondary-bitstream my_data
USERx
instruction is set to be used depending on the flash chip being targeted.--board vcu118 --bitstream xxx
--board vcu118 -f --target-flash primary --bitstream xxx
--board vcu118 -f --target-flash secondary --bitstream xxx
--board vcu118 -f --target-flash both --bitstream xxx --secondary-bitstream yyy
--board arty_a7_100t --bitstream xxx
--board arty_a7_100t -f --bitstream xxx
Here's the branch with the full working version: https://github.com/barbedo/openFPGALoader/tree/vcu118-flash
PRs
I tried my best to create non-dependent PRs. Only the last one will depend on the other ones.
vcu118-flash-qspi-chip
: #294vcu118-flash-4B-address
: #295vcu118-flash-spi-over-jtag
: #296vcu118-flash-ir-codes
: #297vcu118-flash-cli-options
: #298doc/vendors/xilinx.rst
: #308