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
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
More information about the U-Boot
mailing list