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

Major A andras.g.major at gmail.com
Tue Apr 28 00:00:26 CEST 2020


Hi Michal,

Thanks for your script, I tried it, it can extract the PMU config object 
from the FSBL generated by Vitis, but the SD card I prepare this way 
still doesn't boot.

It does one thing differently than before, though: the line

    ### ERROR ### Please RESET the board ###

appears EVERY time, not just occasionally.

Any ideas what I'm doing wrong?

Cheers,

   András


On 24/04/2020 14:14, Michal Simek wrote:
> 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