3 Replies Latest reply on Feb 14, 2020 1:33 AM by dexterous.me82

    MicroZed + Yocto : with official "microzed-zynq7" machine, U-Boot does not start from SD card

    gsavaton

      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?
        • Re: MicroZed + Yocto : with official "microzed-zynq7" machine, U-Boot does not start from SD card
          dexterous.me82

          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

          Header Dump

          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

          Checksum: 0xF7F93EE7

          Application

          Handoff Address: 0x04000000

          In FsblHookBeforeHandoff function

          SUCCESSFUL_HANDOFF

          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 ###