07-13-2015 05:53 AM
Hi,we have a Artix Design with AXI QSPI and Microblaze. I updated to SDK 2015.2.
The AXI QSPI is clocked at 100MHz.
I use the bootloader example from SDK, i need about 22 seconds to load a SREC of 900KB.
I tried with AXI QSPI configured as performance mode(with AXI4 instead AXI4 lite), btw, Vivado suggests as connection automation the AXI4lite interconnect, so i manually connected the AXI QSPI to the AXI4 interconnect. With no result, same boot time.
I tried to understand the bootloader code, i find that it reads 1 byte at the time with the function:
Status = XIsf_Read(&Isf, XISF_READ, (void*) &ReadParam);
I tried to replace XISF_READ with XISF_QUAD_OP_FAST_READ, but it doesn't work at all.
These boot times are expected? How to improve them?
07-13-2015 07:43 AM
How many bytes are you reading per transfer?
I had a similar issue with the Avnet LX9 SREC bootloader where it would only transfer one byte at a time. Typically a transfer for a SPI flash device is four to five control bytes then all subsuquent bytes are data. Obiously if the bootloader is transfering one byte at a time it will take a while to read the entire SREC. If you read more bytes from the SPI flash per transfer you can speed up the bootloader signifigantly.
In my case I ended up changing the bootloader to read the first four bytes of a srec line to get the line length, then issued another transfer to read the rest of the line.
Hopefully this is the solution you are looking for. :)
07-13-2015 07:43 AM
How many bytes are you reading per transfer?
I had a similar issue with the Avnet LX9 SREC bootloader where it would only transfer one byte at a time. Typically a transfer for a SPI flash device is four to five control bytes then all subsuquent bytes are data. Obiously if the bootloader is transfering one byte at a time it will take a while to read the entire SREC. If you read more bytes from the SPI flash per transfer you can speed up the bootloader signifigantly.
In my case I ended up changing the bootloader to read the first four bytes of a srec line to get the line length, then issued another transfer to read the rest of the line.
Hopefully this is the solution you are looking for. :)
07-13-2015 11:14 PM
Hi, thanks you for your reply!
I don't know if i'll have time to rewrite the bootloader.
Have you used the library's functions?
Could you share the code?
Thanks!
06-21-2016 03:06 PM
Can you share this code?
12-08-2017 12:02 AM
Hi asm2750,
How did you solve this problem ? I also met this problem, my boot period is more than 32s.