I tried the same. I have the microzed zynqboard from AVNET.
Next, I have opened xilinx sdk to create fsbl project.
Next, I have created the bootimage using -
fsbl image and the uboot.elf generated from the yocto.
However, when I have put this boot.bin, I get the following error.
I have added debug info for fsbl too. I have tried adding even the dtb file but it didn't help.
Do I need to rename the file before adding that in the xilinx sdk?
Does it have any sequence like fsbl first then uboot.elf and then dtb file?
What am I missing here, please help?
Xilinx First Stage Boot Loader
Release 2018.1 Feb 12 2020-16:06:04
Devcfg driver initialized
Silicon Version 3.1
Boot mode is SD
SD: rc= 0
SD Init Done
Flash Base Address: 0xE0100000
Reboot status register: 0x60600000
Multiboot Register: 0x0000C000
Image Start Address: 0x00000000
Partition Header Offset:0x00000C80
Partition Count: 2
Partition Number: 1
Image Word Len: 0x0002184D
Data Word Len: 0x0002184D
Partition Word Len:0x0002184D
Load Addr: 0x04000000
Exec Addr: 0x04000000
Partition Start: 0x000075D0
Partition Attr: 0x00000010
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Handoff Address: 0x04000000
In FsblHookBeforeHandoff function
FSBL Status = 0x1
No valid device tree binary found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d <file.dtb>
initcall sequence 0405f82c failed at call 04055fc8 (err=-1)
### ERROR ### Please RESET the board ###
We at Avnet don't normally do our Linux development with a native yocto flow, so this isn't something we can support. We use Xilinx PetaLinux. Think of PetaLinux as a productivity layer between you and yocto "under the covers". That said, I do not know what is defined in the "microzed-zynq7" machine.
Your best bet may be to start with something known-good like our posted BSPs for the MicroZed:
We have BSPs for most recent versions of PetaLinux.
Consult Xilinx UG1144 for how to "install" the BSP:
My basic question is let say I want to just build u-boot for microzed-zynq7 board. how can I do so?
I don't want to use petalinux or yocto. I just want some plain steps that will work and will generate the correct u-boot.elf.
Basically, the basic make command to generate the u-boot.elf. From where I should clone the u-boot code and next from where I
should download the cross compiler/sdk to build the u-boot code.
I am building a Yocto Linux image for the MicroZed using the official meta-xilinx layer (Yocto branch "rocko" + meta-xilinx layer with branch "rel-v2018.3").
Using MACHINE = "microzed-zynq7" in my local.conf generates an image that fails to boot from SD card:
- At startup, the blue LED indicates that the PL is configured.
- The USB-UART port does not output anything.
As a workaround, I have created a custom machine configuration based on the official microzed-zynq7.conf with the following modifications:
# Use the ZedBoard configuration for U-Boot instead of MicroZed
UBOOT_MACHINE = "zynq_zed_config"
# Keep the device tree of the MicroZed KERNEL_DEVICETREE = "zynq-microzed.dtb"
# Enable the "u-boot-xlnx" recipe (with U-Boot 2018.3)
# instead of the "u-boot" recipe (that provides U-Boot 2017.09).
PREFERRED_PROVIDER_virtual/bootloader = "u-boot-xlnx"
The bootloader generated with this machine definition works correctly and I get a fully working Linux system.
In both attempts, the u-boot.elf file from the Yocto build is added to the same bitstream and FSBL generated by Vivado + SDK using the officiel MicroZed board files.
- Do you know why the microzed-zynq7 machine definition does not generate a working bootloader in my case?
- Do you think my workaround is safe to use? Should I try something else?