Hi, On 23. 04. 20 11:02, Major A wrote: > Hi Michal, > > I've had to take a break because, as it turned out, my ZCU102 was > defective. Now that I have a working one, I can go on with my > frustrating quest for a bootable image. > > So now that the patches to u-boot for the ZCU102 Rev. 1.1 are in git > master, I started again from scratch, building ATF, PMUFW with patch and > config object, and u-boot. > > Once the builds finish, I place the files > > spl/boot.bin > > and > > u-boot.itb > > on the SD card and try to boot. Sadly, as before, the only result I get > on the first UART channel is a line > > Debug uart enabled > > sometimes followed by > > ### ERROR ### Please RESET the board ### > > but nothing else. > > My suspicion is that the PMUFW or its configuration object isn't right. > I use Luca's code from here to build both: > > https://github.com/lucaceresoli/zynqmp-pmufw-builder.git > > I also found an issue here: > > > https://forums.xilinx.com/t5/ACAP-and-SoC-Boot-and/Booting-ZCU-102-from-SD-Card/td-p/926649 > > > It appears that there are at least two incompatible subrevisions of the > board, both labeled Rev. 1.1. Could it be that the current PMUFW (or > whatever) just won't work with the current revision? > > How do I figure out what the h*** is going on?
That boards should have just different DDR memory because origin was EOL. Take a look at this mainline commit. commit 47cc45a91ccc86c718fef7e8a00188e1047cf3dd arm64: zynqmp Add support for zcu102 rev1.1 You need to also add pmu.bin and pmu_obj.bin CONFIG_PMUFW_INIT_FILE="pmu.bin" CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE="pmu_obj.bin" pmu.bin is just binary from pmu.elf which you can take from petalinux or build it yourself. pmu_obj.bin based on Luca's way. I personally is taking it from petalinux fsbl. I didn't try it for a while but this was sort of latest version. $ cat extract-pmufw #!/bin/bash # Written by Michal Simek FSBL=fsbl PMCFG=pmu_obj.bin PM_END=`aarch64-linux-gnu-objdump -D ${FSBL}.elf | sed -n '/<XPm_ConfigObject>:/,/^$/p' | tail -n 2 | head -n 1 | cut -c 5-12 | awk '{printf ("0x%s",$1)}'` PM_START=`aarch64-linux-gnu-objdump -D ${FSBL}.elf | sed -n '/<XPm_ConfigObject>:/,/^$/p' | head -n 1 | awk '{printf ("0x%s",$1)}'` FSBL_START=`aarch64-linux-gnu-readelf -a ${FSBL}.elf | grep "Entry point address" | awk '{print $4}'` PM_OBJECT_START=`echo $((${PM_START} - ${FSBL_START}))` PM_OBJECT_SIZE=`echo $((${PM_END} - ${PM_START}))` PM_OBJECT_SIZE=`echo $((${PM_OBJECT_SIZE} + 4))` echo "FSBL starting address ${FSBL_START}" echo "FSBL object addresses ${PM_START} ${PM_END}" echo "OBJECT start ${PM_OBJECT_START} size ${PM_OBJECT_SIZE}" aarch64-linux-gnu-objcopy -O binary ${FSBL}.elf ${FSBL}.bin # Extracting config object dd if=${FSBL}.bin of=${PMCFG} bs=1 skip=${PM_OBJECT_START} count=${PM_OBJECT_SIZE} > /dev/null 2>&1 And then simply build it like this. export DEVICE_TREE=zynqmp-zcu102-rev1.1 make xilinx_zynqmp_virt_defconfig make -j8 If you want to have ATF just copy bl31.bin to u-boot root ro use BL31 variable to generate u-boot.itb with it. And that should be it. Thanks, Michal