Cadence QSPI xload boot timing issue

Ian Abbott abbotti at mev.co.uk
Fri Dec 2 09:09:31 PST 2016


Hi everyone,

I'm using BareBox and xload 2016.11.0 with custom BSP patches for my 
Altera Cyclone V SoCFPGA based custom board, which boots from QSPI.

The board boots fine, but I ran into a weird boot timing issue when 
playing around with the LOGLEVEL configuration options in xload.  Before 
playing around with them, my initial LOGLEVEL options were as follows:

CONFIG_COMPILE_LOGLEVEL=6
CONFIG_DEFAULT_LOGLEVEL=7

I ran into the boot timing issue when setting them as follows:

CONFIG_COMPILE_LOGLEVEL=6
CONFIG_DEFAULT_LOGLEVEL=5

The symptoms were that xload reported the following errors:

mtd0: failed to get image size
mtd0: failed to detect barebox and it's image size so use 1048576

It then went on to load and boot the barebox image successfully.

To debug the problem, I hex-dumped the barebox image header to the 
terminal after it had been read by read_image_head() in 
"lib/bootstrap/devfs.c" and found it to contain only '\xFF' bytes. 
However, if I insert a small delay by calling mdelay(1) before reading 
the barebox image header, it is read correctly and I don't get the error 
messages.

It seems like a small delay is required after the Cadence QSPI driver 
("drivers/mtd/spi-nor/cadence_quadspi.c") has set up the flash chip 
before it is in a useable state.  Adding a call mdelay(1) just before 
cqspi_probe() returns fixes the problem for me, but I'm not sure if 
that's the best way to fix it!

For reference, my flash chip is a Spansion s25fl256s1 (32768 Kbytes) and 
the Cadence QSPI controller built in to the SoCFPGA is being clocked at 
400 MHz.

-- 
-=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti at mev.co.uk> )=-
-=(                          Web: http://www.mev.co.uk/  )=-



More information about the barebox mailing list