XPS Flashwriter tool errors on last location in flash

I have a EDK based design with 8 MB of external flash memory on the PLB via the plb_emc core. This is for a Virtex II Pro using EDK/ISE 7.1i, latest service packs. The flash is addressed at 0xFF800000 -

0xFFFFFFFF. Thus our plan is to have the processor reset vector in the flash and execute directly from flash.

I am able to successfully use the XPS flash programming tool to burn the flash on my board in most cases I have tried. It reports the CFI info properly. However I have observed these failures (that seem to me to be related).

  1. If I try to burn a full 8MB image, I get an immediate parameter check that the file is larger than the flash. I have carefullly examined the file and it is exactly 8MB (8388608 bytes). If I make it
16 bytes smaller and use an offset of 0 it burns OK.
  1. Using the "16 bytes less than 8MB" image, if I set the offset to
16, the burn fails with the error message below about not erasing correctly. Offsets between 0 and 15 (inclusive) work correctly (except as noted in number 4).
  1. Using a 256KB image, I can burn it at any offset (well I think so

- I haven't tried them all :) ) up to 0x7BFFFF. This is up to but not including the last byte of the flash address space. If I use an offset of 0x7C0000 (This is the configuration I really need, a 256K image at the high end of flash address space. I must include the reset vector.) it fails with the error message below.

  1. With either size image, the offset seems to be modulo 4 i.e. offsets of 0, 1, 2, and 3 all start at the first byte of the flash address space. I suppose this is not necessarily wrong, but it is unexpected.

The error message reported is: Flashwriter Application reported and error: The flash block erase operation errored out!

I opened a web case with Xilinx and was told this:

0xFFFFFFFF is hard-coded for the reset vector and cannot be accessed. It cannot be overwritten. That is why you are getting this error.

This seems wrong to me. I say this for the following reasons:

  1. I can load an FPGA design with BRAM at address 0xFFFFFFFC and then write any value I want to that address using a simple PPC program.
  2. I can load an FPGA design with Flash at address 0xFFFFFFFC and the program that location successfully with my own test code running on the PPC
  3. If I load an FPGA design that places the flash at 0x08000000, the XPS tool errors out in the same way as I described in the original problem statment. It reports an error trying to erase blocks, if the programming range includes the last 32 bit word.

Does anyone have any insight or experience that could help here?

Thanks, Steve

Reply to
Loading thread data ...


Answers inline.

I believe both issues 1 and 2 were bugs in the tool that were fixed in EDK


Most likely same issue as above.

What is your flash bus width? If your flash is 16-bits wide, you can only program in 16-bits at a time (and hence offsets 1 and 3 do not make sense. If it is 32-bits, offsets 1,2,3 do not make sense.

This is the wrong conclusion.

Hopefully, EDK 8.2i is an option available to you.


Reply to
Vasanth Asokan

Thanks for the reply and confirmation that it is a bug.

Unfortunately not, other companies on the project insist on 7.1

I'm just going to have to improve my own test code to be a reliable tool for burning flash.

(Further communication from Xilinx regarding the webcase has only produced more conflicting information. *SIGH*)

Reply to

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.