ZynqMP boot: no messages from SPL other than "Debug uart enabled"

Michal Simek michal.simek at xilinx.com
Fri Apr 24 14:14:40 CEST 2020


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


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
# Written by Michal Simek


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_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}"

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.


More information about the U-Boot mailing list