Post Go back to editing

pmufw.elf not generated

Category: Software
Product Number: zc706

Hi,

I'm trying to build BOOT.BIN for the ZC706 using the build_zynqmp_boot_bin.sh script https://wiki.analog.com/resources/tools-software/linux-software/build-the-zynqmp-boot-image.

The script constructs a TCL script named create_fsbl_project.tcl and runs it us xsct. According to the script documentation, this should create two files named fsbl.elf and pmufw.elf.

In my case, the script runs to completion, apparently without error, but only fsbl.elf is generated. The pmufw.elf file is not generated.

I'd appreciate someone helping me out here!

Thanks,

Keith

Parents
  • I reboot the system it does not fully reboot into Linux, but instead stops at the Zynq> prompt

    Could you paste here the full log that is printed from when you power on the board until the Zynq prompt? Did you copy the devicetree.dtb and the uImage as well?

    Also, when it starts booting, there's a countdown saying that will prompt you there if you hit any key. I presume you didn't hit a key, right?

  • Hmm, it seems to me (from the log) that you're trying something with Petalinux...

    Can you put the BOOT.BIN and the devicetree.dtb from /boot/zynq-zc706-adv7511-adrv937x and the uImage from /boot/zynq-common folder? To check if this is working for you.

  • Hi, sorry for the delay. I'm not working on this full time.

    Yes, the BOOT.BIN and the devicetree.dtb from /boot/zynq-zc706-adv7511-adrv937x and the uImage from /boot/zynq-common folder work fine. The board boots perfectly with these.

    I went back and rebuilt everything from scratch using Vivado 2022_R2. For u-boot, I checked out tag xilinx-v2022.2 and set the CROSS_COMPILE and ARCH appropriate for the Zynq. Everything built seemingly correctly, including BOOT.BIN, but again when I try to boot with the clean BOOT.BIN I get the following:

    root@analog:/boot# [  OK  ] Unmounted /run/user/1000/gvfs.
    [  OK  ] Started Show Plymouth Reboot Screen.
    [  OK  ] Stopped User Login Management.
    [  OK  ] Stopped User Manager for UID 1000.
             Stopping User Runtime Directory /run/user/1000...
    [  OK  ] Unmounted /run/user/1000.
    [  OK  ] Stopped User Runtime Directory /run/user/1000.
    [  OK  ] Removed slice User Slice of UID 1000.
             Stopping Permit User Sessions...
    [  OK  ] Stopped Permit User Sessions.
    [  OK  ] Stopped target Network.
    [  OK  ] Stopped target Remote File Systems.
    [  OK  ] Stopped target Remote File Systems (Pre).
    [  OK  ] Stopped target NFS client services.
             Stopping Raise network interfaces...
             Stopping WPA supplicant...
    [  OK  ] Stopped WPA supplicant.
             Stopping D-Bus System Message Bus...
    [  OK  ] Stopped D-Bus System Message Bus.
    [  OK  ] Stopped target Basic System.
    [  OK  ] Stopped Forward Password R…s to Plymouth Directory Watch.
    [  OK  ] Stopped target Paths.
    [  OK  ] Stopped CUPS Scheduler.
    [  OK  ] Stopped target Slices.
    [  OK  ] Removed slice User and Session Slice.
    [  OK  ] Stopped target Sockets.
    [  OK  ] Closed Avahi mDNS/DNS-SD Stack Activation Socket.
    [  OK  ] Closed CUPS Scheduler.
    [  OK  ] Closed D-Bus System Message Bus Socket.
    [  OK  ] Closed Erlang Port Mapper Daemon Activation Socket.
    [  OK  ] Closed GPS (Global Positioning System) Daemon Sockets.
    [  OK  ] Closed Syslog Socket.
    [  OK  ] Closed triggerhappy.socket.
    [  OK  ] Stopped target System Initialization.
    [  OK  ] Stopped target Local Encrypted Volumes.
    [  OK  ] Stopped Forward Password R…uests to Wall Directory Watch.
    [  OK  ] Stopped target Swap.
             Stopping Restore / save the current clock...
             Stopping Network Time Synchronization...
             Stopping Update UTMP about System Boot/Shutdown...
    [  OK  ] Stopped Restore / save the current clock.
    [  OK  ] Stopped Raise network interfaces.
    [  OK  ] Stopped Apply Kernel Variables.
    [  OK  ] Stopped Update UTMP about System Boot/Shutdown.
    [  OK  ] Stopped Network Time Synchronization.
    [  OK  ] Stopped Create Volatile Files and Directories.
    [  OK  ] Stopped target Local File Systems.
             Unmounting /boot...
    [  OK  ] Unmounted /boot.
    [  OK  ] Reached target Unmount All Filesystems.
    [  OK  ] Stopped File System Check …/disk/by-partuuid/3c47d971-01.
    [  OK  ] Removed slice system-systemd\x2dfsck.slice.
    [  OK  ] Stopped target Local File Systems (Pre).
    [  OK  ] Stopped Create Static Device Nodes in /dev.
    [  OK  ] Stopped Create System Users.
    [  OK  ] Stopped Remount Root and Kernel File Systems.
    [  OK  ] Reached target Shutdown.
    [  OK  ] Reached target Final Step.
    [  OK  ] Finished Reboot.
    [  OK  ] Reached target Reboot.
    reboot: Restarting system
    
    
    U-Boot 2022.01 (Feb 28 2024 - 22:27:51 -0600)
    
    CPU:   Zynq 7z045
    Silicon: v3.1
    Model: Xilinx ZC706 board
    DRAM:  ECC disabled 1 GiB
    Flash: 0 Bytes
    NAND:  0 MiB
    MMC:   mmc@e0100000: 0
    Loading Environment from FAT... *** Error - No Valid Environment Area found
    *** Warning - bad env area, using default environment
    
    In:    serial@e0001000
    Out:   serial@e0001000
    Err:   serial@e0001000
    Net:   FEC: can't find phy-handle
    
    ZYNQ GEM: e000b000, mdio bus e000b000, phyaddr 7, interface rgmii-id
    
    Warning: ethernet@e000b000 (eth0) using random MAC address - ee:7c:27:14:c8:6e
    eth0: ethernet@e000b000
    Hit any key to stop autoboot:  0 
    switch to partitions #0, OK
    mmc0 is current device
    Scanning mmc 0:1...
    libfdt fdt_check_header(): FDT_ERR_BADMAGIC
    Scanning disk mmc@e0100000.blk...
    Found 4 disks
    No EFI system partition
    DFU alt info setting: done
    BootOrder not defined
    EFI boot manager: Cannot load any image
    JTAG: Trying to boot script at 3000000
    ## Executing script at 03000000
    Wrong image format for "source" command
    JTAG: SCRIPT FAILED: continuing...
    switch to partitions #0, OK
    mmc0 is current device
    Scanning mmc 0:1...
    libfdt fdt_check_header(): FDT_ERR_BADMAGIC
    BootOrder not defined
    EFI boot manager: Cannot load any image
    MMC Device 1 not found
    no mmc device at slot 1
    SF: Detected s25fl128s with page size 512 Bytes, erase size 128 KiB, total 32 MiB
    device 0 offset 0xfc0000, size 0x40000
    SF: 262144 bytes @ 0xfc0000 Read: OK
    QSPI: Trying to boot script at 3000000
    ## Executing script at 03000000
    Wrong image format for "source" command
    QSPI: SCRIPT FAILED: continuing...
    
    
    no devices available
    NAND: SCRIPT FAILED: continuing...
    NOR: Trying to boot script at 3000000
    ## Executing script at 03000000
    Wrong image format for "source" command
    NOR: SCRIPT FAILED: continuing...
    starting USB...
    Bus usb@e0002000: USB EHCI 1.00
    scanning bus usb@e0002000 for devices... 1 USB Device(s) found
           scanning usb for storage devices... 0 Storage Device(s) found
    
    Device 0: unknown device
    
    Device 1: unknown device
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    missing environment variable: pxeuuid
    Retrieving file: pxelinux.cfg/01-ee-7c-27-14-c8-6e
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/00000000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/0000000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/000000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/00000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/0000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/00
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/0
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/default-arm-zynq-zynq
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/default-arm-zynq
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/default-arm
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/default
    *** ERROR: `serverip' not set
    Config file not found
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    

    For a good boot, I get the following:

    U-Boot 2018.01-21441-ga6ab387 (Aug 31 2022 - 11:41:38 +0100) Xilinx Zynq ZC706, Build: jenkins-development-build_uboot-2
    
    Model: Zynq ZC706 Development Board
    Board: Xilinx Zynq
    Silicon: v3.1
    I2C:   ready
    DRAM:  ECC disabled 1 GiB
    MMC:   sdhci@e0100000: 0 (SD)
    SF: Detected s25fl128s_64k with page size 512 Bytes, erase size 128 KiB, total 32 MiB
    *** Warning - bad CRC, using default environment
    
    In:    serial@e0001000
    Out:   serial@e0001000
    Err:   serial@e0001000
    Net:   ZYNQ GEM: e000b000, phyaddr 7, interface rgmii-id
    eth0: ethernet@e000b000
    reading uEnv.txt
    407 bytes read in 19 ms (20.5 KiB/s)
    Importing environment from SD ...
    Hit any key to stop autoboot:  0
    Device: sdhci@e0100000
    Manufacturer ID: 3
    OEM: 5344
    Name: SL64G
    Tran Speed: 50000000
    Rd Block Len: 512
    SD version 3.0
    High Capacity: Yes
    Capacity: 59.5 GiB
    Bus Width: 4-bit
    Erase Group Size: 512 Bytes
    reading uEnv.txt
    407 bytes read in 19 ms (20.5 KiB/s)
    Loaded environment from uEnv.txt
    Importing environment from SD ...
    Running uenvcmd ...
    Copying Linux from SD to RAM...
    reading uImage
    8030624 bytes read in 462 ms (16.6 MiB/s)
    reading devicetree.dtb
    30939 bytes read in 26 ms (1.1 MiB/s)
    ** Unable to read file uramdisk.image.gz **
    ## Booting kernel from Legacy Image at 03000000 ...
       Image Name:   Linux-5.15.0-175919-g427c94e8faa
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    8030560 Bytes = 7.7 MiB
       Load Address: 00008000
       Entry Point:  00008000
       Verifying Checksum ... OK
    ## Flattened Device Tree blob at 02a00000
       Booting using the fdt blob at 0x2a00000
       Loading Kernel Image ... OK
       Loading Device Tree to 1fff5000, end 1ffff8da ... OK
    
    Starting kernel ...
    

    One thing I notice is the difference in beginning U-Boot message (U-Boot 2022.01 (bad) versus U-Boot 2018.01.21331-ga6ab387 (good)). Am I not using the right tag for u-boot?

    Thanks!

    Keith

  • I was just wondering: do I need to also use the generated device tree blob zync_zc706.dtb along with the generated BOOT.BIN?

Reply Children
  • do I need to also use the generated device tree blob zync_zc706.dtb along with the generated BOOT.BIN?

    Only if you did changes in HDL that require software support or to be accessed from software.

    I wanted you to try with the release files so I could cross down the eventuality of some hardware settings not properly made.

    Could you try building the u-boot from the master branch from here? https://github.com/analogdevicesinc/u-boot-xlnx Because Xilinx keeps updating these and the flow is a bit different, and with this we are a little behind. Here and here you can find information on how to build it.

  • Okay, I tried with the u-boot from main. Unfortunately, it still fails to boot. The first line is as follows:

    U-Boot 2023.01-00031-g6e81b6ca3c (Feb 29 2024 - 11:19:33 -0600)

    With the ADI-provided BOOT.BIN (which boots good), the first line is as follows:

    U-Boot 2018.01-21441-ga6ab387 (Aug 31 2022 - 11:41:38 +0100) Xilinx Zynq ZC706, Build: jenkins-development-build_uboot-2

    Based on this observation, I tried to rebuild u-boot from the xilinx-v2018.1 tag in u-boot-xlnx.git. Unfortunately, that is leading to the following compilation error:

    /usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
    collect2: error: ld returned 1 exit status
    make[2]: *** [scripts/Makefile.host:108: scripts/dtc/dtc] Error 1
    make[1]: *** [scripts/Makefile.build:425: scripts/dtc] Error 2
    make: *** [Makefile:491: scripts] Error 2
    

    Could I be doing something else wrong, or is it just a matter of finding the right u-boot?

  • Hi Iulia,

    I just wanted to let you know that I was able to build a bootable image by using my generated system_top.xsa and the u-boot-zc706.elf you provide in the bootgen_sysfiles.tgz tarball. I suppose this is okay for now because I don't need to change the device tree. Eventually, I'll need to understand what is going wrong with my u-boot generation.

    Thanks,

    Keith