Sorry, you need to enable JavaScript to visit this website.

Creating boot image Quad SPI flash memory

Zedboard forums is currently read-only while it under goes maintenance.

Unsolved
12 posts / 0 new
yahniukov
Junior(0)
Creating boot image Quad SPI flash memory

I already created the topic (http://zedboard.org/content/creating-boot-image-sd-card) when I tried to create boot image for SD card.
 
I do the same actions but for create .msc for Quad SPI flash memory but it doesn't work.
 
There are any difference from booting from SD?

JFoster
Moderator(75)
Hello Yahniukov,

Hello Yahniukov,

The same procedure that was used to create your .bin SD card image is the same to create the .mcs QSPI boot image. All you have to change is for it to be the .mcs file format. Are you saying that it never generated the file or that after you programmed it to flash it never booted from QSPI?

--Josh

yahniukov
Junior(0)
I mean it never booted from

I mean it never booted from QSPI after programmed it to flash.
I saw this during booting from SD: /sites/default/files/u132941/qspi_boot_picozed_screen.PNG
That's screen from Create Boot Image: /sites/default/files/u132941/qspi_create_boot_image_partitions_screen.PNG
That's screen from Program flash: /sites/default/files/u132941/qspi_program_mcs.PNG
I set the files in Create Boot Image in the not correct order?
Or I set wrong files?
Do I should indicate the address QSPI in window Create Boot Image as on the first picture?

yahniukov
Junior(0)
Then I tried this structure

Then I tried this structure of .bif file (SD structure like):
the_ROM_image:
{
    [bootloader]D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\zynq_fsbl_0.elf
    D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\system.bit
    D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\u-boot-picozed.elf
    D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\uEnv.txt
    D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\uImage
    D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\devicetree.dtb
    D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\Card-Filesystem-Repair\uramdisk.image.gz
}
 
It doesn't help me too. Linux is not booting and FPGA is not programmed

JFoster
Moderator(75)
Hello Yahniukov,

Hello Yahniukov,

Take a look at this Video https://www.xilinx.com/video/soc/create-zynq-boot-image-using-xilinx-sdk...

In particular take a look aroung minute 5:43, it shows how the .mcs file is setupt in the SDK Create Zynq Boot Image.

--Josh

yahniukov
Junior(0)
Sorry I didn't see your

Sorry I didn't see your message and wrote the previous post. Thank you! Later I will tell about result.

yahniukov
Junior(0)
Result after the video

So, there's result:

1) I done everything what I saw in the video

2) There is my .bif file:

the_ROM_image:
{
    [bootloader]D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\zynq_fsbl_0.elf
    D:\yahniukov\files\documents\task_10\hdl_master\projects\pzsdr\ccfmc\ccfmc_pzsdr.runs\impl_1\system_top.bit
    D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\u-boot-picozed.elf
    [offset = 0x600000]D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\uImage
    [offset = 0x970000]D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\devicetree.dtb
    [offset = 0x990000]D:\yahniukov\files\documents\task_9_FPGA_Implemetation_from_Simulink\boot_files\Card-Filesystem-Repair\uramdisk.image.gz
}

3) It doesn't work. PL is configured but Linux is not booting. (/sites/default/files/u132941/boot_linux_failed.PNG)

4) Am I doing right that I use default Picozed's fsbl or I should change it if I changed .bit file?

zedhed
Moderator(30)
RE: Result after the video

Hi Yahniukov,

I don't see what the offset is within your BIF for the PL Bitstream file, system_top.bit, where is that file located in memory within the Flash? According to your screenshot, it looks like you are trying to load the Bistream from U-Boot from Flash offset 0x1300000, but I think that it would already be loaded by the FSBL so that step should not be necessary, correct?

Can you please post what your U-Boot environment variables look like?

Regards,

-Kevin

yahniukov
Junior(0)
U-Boot environment variables?

Yes, after switching on power on the board PL is configured by system_top.bit and I don't know why u-boot try to see another .bit
I tried to set .bit offset in .bif file equals 0x1300000 (see content of .bif file below) but during boot the same situation.
the_ROM_image:
{
    [bootloader]zynq_fsbl_0.elf
    u-boot-picozed.elf
    [offset = 0x100000]uImage
    [offset = 0x600000]devicetree.dtb
    [offset = 0x620000]uramdisk.image.gz
    [offset = 0x1300000]system_top.bit
}
It's not me created u-boot.elf. I found it on SD card with Picozed SDR SOM 2x2. And I don't know how I can see u-boot environment variables. Can you tell me please?

yahniukov
Junior(0)
Topic up

Up
The problem doesn't gone
I dont know how to boot Picozed (Linux and PL) from QSPI
Anybody tried to do that?

yahniukov
Junior(0)
Am I doing rigth that use the

Am I doing rigth that use the same u-boot.elf file to boot both from SD and QSPI?

zedhed
Moderator(30)
RE: adi_loadvals=if test -n $

Hi yahniukov,

Where are you deriving these offsets for the BIF from?

 

the_ROM_image: {

[bootloader]zynq_fsbl_0.elf u-boot-picozed.elf

[offset = 0x100000]uImage

[offset = 0x600000]devicetree.dtb

[offset = 0x620000]uramdisk.image.gz

[offset = 0x1300000]system_top.bit

}

 

The offset used in the BIF should be the offset that U-Boot is expecting to load that information from (the source address within QSPI flash). In U-Boot if you run the command 'sf' you will see the suggested command usage for 'sf' command.

 

In particular I looked at the 'sf read' subcommand usage: sf read addr offset len - read `len' bytes starting at `offset' to memory at `addr' That means when the qspiboot macro is run in U-Boot, the following eventually gets executed:

... sf read ${loadbit_addr} 0x1300000 ${bitstream_size} ...

 

And I can see that loadbit_addr=0x100000 so that looks correct.

 

Now where does your Bitstream come from? Is it the one that comes with the SD card or is it a custom one that you made?

For the bitstream image that you are loading, can you verify that it actually matches the length represented by bitstream_size=0xD00000?

 

Regards,

 

-Kevin