03-20-2012 02:50 AM - edited 03-20-2012 06:10 AM
I am designing Multiboot function on the BPI flash of SP605 board.
But after image download, it goes to Golden image directly, not to Multiboot image.
Can anyone please check my scripts?
The images are fine. I have checked it indivisually using IMPACT and they are working well.
promgen -w -p mcs -data_width 16 -r boot_header.hex -o boot_header.mcs
promgen -w -p mcs -c FF -s 32768 -bpi_dc parallel -data_width 16 -u 8000 golden_sp605.bit -u 200000 multiboot_sp605.bit -o incomplete_dual_image_SP605.mcs
type boot_header.mcs incomplete_dual_image_SP605.mcs > header_golden_multiboot.mcs
03-21-2012 05:14 AM
Are you sure that it is going straight to Golden and not just failing the Multiboot image and falling back?
I don't know if it makes a great difference but -bpi_dc parallel
Is the BPI flash connected in a parallel daisy chain on the SP605? The schematics suggest otherwise but I don't have that board, so I can't be sure. Do you need the -bpi_dc switch for your PROMGEN command?
Also, your header:
3261 - GENERAL1 - 0x0000. Lower 16 bits of Multiboot.
3281 - GENERAL2 - 0x0340. SPI read command, Upper 8 bits of Multiboot.
Firstly, do you need the SPI read command here if your are targeting a BPI flash?
Secondly, your Multiboot address in the header is 0x400000 but the promgen command sets it 0x200000.
I know that the address is doubled for a 16 bit BPI interface but I don't think you need to do this in the header. Try setting the promgen command to -u 400000 multiboot_sp605.bit to match your header.
Similarly for GENERAL 3 and 4 - check the addressing.
Let me know if this helps because I'm generally trying to do the same thing for a custom board!
03-21-2012 06:03 AM
One more thing - you'll need to make sure that the header.hex data gets bit swapped, i.e. the sync words AA99 5566 will need to become 9955 66AA so that the BPI configuration can read them correctly (and so on for the rest of the file). This is not done automatically by the promgen -r command.
I hope that that sentence is understandable :smileyhappy:
03-21-2012 03:36 PM - edited 03-21-2012 03:39 PM
Thank you for your response and thanks for your very detail explanation.
I am sure that it is going to Golden image.
I found that actually it is going to Lowest address image(not only golden image).
The header file address was totally wrong and also needs bit swap as you mentioned.
I could not find any description except this forum and I spent 1 week to find this.
I think it will be same to all people to someone who wants to implement BPI flash multiboot on SP605.
Why no detail documents or examples from Xilinx?
I finally found http://forums.xilinx.com/t5/Spartan-Family-FPGAs/Spartan-6-multiboot-configuration-header/m-p/199937 this discussion and it was the solution. But that was to hard to find it by myself especially as a beginner of Multiboot design.
Thanks again Howard.
03-22-2012 12:06 AM
I'm sure that's going top help me out, too. It is heartening to know that others know and can find out what's going on!
Good luck :smileyhappy:
03-22-2012 09:17 PM
03-23-2012 12:15 AM
I've lost count of the number fo times I have read that document and not really understood it :smileyhappy:
The understanding of what information is in the config stream is no problem, however, I have (previously) been unable to place the golden and multiboot streams exactly where I want in external memory (preferably sector aligned in Flash). Weirdly, though, I have had multiboot from HWICAP working previously. Hmm.
With our discussion and the thread that you pointed out, I have been successful, so now I am happy. Possibly more importantly, so is my project manager :smileyhappy: