12-18-2013 08:03 AM
I'm at the moment trying to implement multiboot (no fallback) from an SPI-flash for an Artix7 device.
I can set the WBSTAR register and issue an IPROG command to trigger reloading of another bitstream, that works perfectly... UNLESS I enable the 32bit adress mode for the initial bitfile.
In that case, whenever I issue an IPROG, the FPGA always reloads from address 0 and ignores whatever address I put into WBSTAR. The FPGA logic is identical, I just use different settings for generating the bitfile (I load my post-route checkpoint and run write_bitstream twice, once with 32bit-mode enabled, once without.). So this is the exact same bitfile, it just puts the SPI configuration interface in 32bit-mode, which seems to break the WBSTAR-mechanism somehow.
Is there any difference in the mutiboot sequence from ug470 (p. 126) or in setting WBSTAR depending on what adressing mode the SPI is in?
12-18-2013 09:47 PM
12-18-2013 09:47 PM
12-19-2013 06:29 AM
thanks for the quick response! Shifting the address fixed it. Why is this not mentioned in the documentation, or did I miss something?
I suppose this is because WBSTAR only has space for 29 address bits? The lower address byte is skipped and the configuration logic automatically adds 0x00. So I suppose all bitstreams must start at addresses that are aligned to 256-byte-boundaries?
Makes sense, but this really should be mentioned in ug470 somewhere...
01-12-2014 08:01 PM
02-03-2014 06:39 AM
Thanks for posting this, I have just been struggling with exactly the same problem. I agree that this really should be detailed in the documentation.
02-03-2014 07:00 AM
12-09-2014 08:52 PM
12-10-2014 10:03 AM
Agreed, is there documentation any where on this now. It looks like an 8 bit shift for a 32 bit aligned address, surely it should be 5 bits. And is there a consistancy of documentation, I see commands and byte swapped commands interleaved and it gets confusing to separate the two.
In my case I have an image located at 0x00A0_0000, what bit shift should I do for 32 bit addressing (0x0000_A000?) and what does it become when it is byte swapped (0x0000_0500?).
02-01-2015 10:11 PM
06-09-2015 02:27 AM
I went into the same issue and the bit swapping and shifting 1 byte right if 32bit addressing - WORKS