11-13-2010 11:53 AM
Okay, I have 2 configuration files that work properly on their own, however, I'm trying to impliment them so that in the main file, when a button is pressed, it causes the FPGA to load the second image. Should be easy....
The main file has the Multiboot trigger from the sample files from Xilinx implimented, and when I press the button, it does indeed reset the FPGA, but then it just hangs and doesn't complete the reload. I have set up the "next_config_addr:010000", and also tried 020000 as suggested in the documentation, but the second image does not load. I've used iMPACT to generate a .mcs file with the two bitstreams in, had the error message regarding the file size being too big, which the online help says I should set "power of 2" to on to get rid of that message.
If I set "next_config_addr:000000", then it continuously tries, and sucessfully reloads the first configuration, so I know that part of it is working.
What am I doing wrong please? Any suggestions?
11-13-2010 01:23 PM
To follow up with more info....
I have used promgen from the command line, as per AR31964 (and others) as so:
c:\xilinx\12.3\ise_ds\ise\bin\nt\promgen -w -p mcs -c FF -o c:\x\superco_multiboot -spi -u 0 d:\xilinx\superco_issue1_bootloader\bootloader.bit -u 10000 d:\xilinx\superco_6502i_issue1\mainschem.bit
This produces a .prm file as so:
PROMGEN: Xilinx Prom Generator M.70d
Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved.
promgen -w -p mcs -c FF -o c:\x\superco_multiboot -spi -u 0 d:\xilinx\superco_issue1_bootloader\bootloader.bit -u 10000 d:\xilinx\superco_6502i_issue1\mainschem.bit
PROM c:\x\superco_multiboot.prm map: Sat Nov 13 21:19:56 2010
Calculating PROM checksum with fill value ff
Format Mcs86 (32-bit)
PROM start 0000:0000
PROM end 0001:ffff
PROM checksum 005fef86
Addr1 Addr2 Date File(s)
0000:0000 0000:d5ad Nov 13 21:19:45 2010 d:/xilinx/superco_issue1_bootloader/bootloader.bit
0001:0000 0001:d5ad Nov 13 20:02:43 2010 d:/xilinx/superco_6502i_issue1/mainschem.bit
as expected. In the first .bit file, bootloader, I set the programming file process properties, "next_config_addr" to 0x00010000. This doesn't work. I've tried to at 0x00020000, due to what is suggested in the spi access guide, but that doesn't work either.
12-16-2010 08:16 AM
I had this same problem and was able to resolve it by setting the address to 0x00020000 in bitgen and 0x10800 in promgen. A read command from the internal spi flash with the address set to 0x20000 returns the byte 0x10800 bytes from the beginning of the array due to the 264 byte pages.
03-18-2011 03:18 AM
I was also suffering because of this issue. However if you read
especially page 10 and 11 it is written there how to calculate values for the memory locations in the form of 2's power page structure and in the form of default 528 bytes/pages structure. dharmon also answered through this structures. x10800 is in the form of 2's power, x20000 is in the form of default 528 bytes/pages. As the reference designs, the second bitfile starts at xC0000 adress (but this is in the form of 528bytes/ pages and you enter this value in bitgen) on the other hand you should enter the value of x0C0000 in the form of 2's power (it equals x63000) in prom gen.
At the end of page 11, it is written 34157910 =053664B however it should be 34157910 =05364B (one of the 6's is extra). Be careful about it.
03-18-2011 09:20 AM
Right, PROMGen is going to need the absolute offset into the file as an address. So, you need to multiply the bytes per page times the number of pages for your upper address.
03-23-2011 02:52 AM
I'm pretty much novice when it comes to FPGA. I'm trying to follow the instructions found in the "Spartan-3 Generation Configuration User Guide" (UG332) but I can not seem to find the multiboot option for XC3S50AN in Impact when I select the "create PROM file" option. Can someone shed some light on this?