On 13/07/21, Jorge Ramirez-Ortiz, Foundries wrote: > On 13/07/21, Michal Simek wrote: > > > > > > On 7/13/21 11:25 AM, Jorge Ramirez-Ortiz, Foundries wrote: > > > On 13/07/21, Jorge Ramirez-Ortiz, Foundries wrote: > > >> On 13/07/21, Michal Simek wrote: > > >>> Hi, > > >>> > > >>> On 7/12/21 7:40 PM, Jorge Ramirez-Ortiz, Foundries wrote: > > >>>> hi Michal, > > >>>> > > >>>> Would you have some sample/reference code to generate a SPL boot image > > >>>> using zynqmpbif instead of zynqmpimage? I cant find any documentation > > >>>> and I see no option to enable it (I was expecting to find some config > > >>>> in Makefile.spl but I see none). > > >>>> > > >>>> What is the expected way of building these images? > > >>> > > >>> Alex implemented it for Xilinx bif format after origin zynqmpimage > > >>> format. But usage is just like this. > > >>> > > >>> [u-boot](debian-sent)$ ./tools/mkimage -T zynqmpbif -d /tmp/bif > > >>> /tmp/boot.bin > > >>> Image Type : Xilinx ZynqMP Boot Image support > > >>> Image Offset : 0x000009c0 > > >>> Image Size : 147216 bytes (147216 bytes packed) > > >>> PMUFW Size : 129792 bytes (129792 bytes packed) > > >>> Image Load : 0xfffc0000 > > >>> Checksum : 0xfd15d661 > > >>> [u-boot](debian-sent)$ cat /tmp/bif > > >>> image : { > > >>> [pmufw_image, load=0xffdc0000] > > >>> /mnt/disk/u-boot-bins/zynqmp/pmu.elf > > >>> [destination_cpu=a53-0, load=0xfffc0000, bootloader] > > >>> spl/u-boot-spl.bin > > >>> } > > >> > > >> awesome, exactly what I needed to start with. > > > > > > So I can boot using the steps you mentioned above. > > > > > > But shouldnt the same bif work with bootgen? > > > > > > ****** Xilinx Bootgen v2019.2 > > > **** Build date : Oct 23 2019-22:59:42 > > > ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved. > > > > > > [TRACE] : Command Line parsing started > > > [TRACE] : Command: -arch zynqmp -image ./bif -w -o bootbif.bin -log trace > > > [INFO] : Command line parsing completed successfully > > > [TRACE] : BIF File: ./bif > > > [TRACE] : BIF file parsing started > > > [TRACE] : Setting PMU FW Image file as pmu.elf > > > [INFO] : BIF file parsing completed successfully > > > [INFO] : Parsing Partition Data to Image > > > [INFO] : Building image - image > > > [INFO] : Building the Partition Header Table > > > [INFO] : After build > > > -- Dump of Binary Image ---- > > > 00000000 Len: 000008b8 Res: 00000000 "BootHeader" > > > 00000000 Len: 00000040 Res: 00000000 "ImageHeaderTable" > > > 00000000 Len: 00000024 Res: 00000800 "ImageHeader > > > u-boot-spl.bin" > > > 00000000 Len: 00000040 Res: 00000000 "PartitionHeader > > > u-boot-spl.bin.0" > > > 00000000 Len: 00000040 Res: 000016c0 "PartitionHeader Null" > > > 00000000 Len: 00020574 Res: 00000000 "u-boot-spl.bin.0" > > > -- End of Dump > > > [INFO] : After align > > > -- Dump of Binary Image ---- > > > 00000000 Len: 000008b8 Res: 00000000 "BootHeader" > > > 000008c0 Len: 00000040 Res: 00000000 "ImageHeaderTable" > > > 00000900 Len: 00000024 Res: 00000800 "ImageHeader > > > u-boot-spl.bin" > > > 00001100 Len: 00000040 Res: 00000000 "PartitionHeader > > > u-boot-spl.bin.0" > > > 00001140 Len: 00000040 Res: 000016c0 "PartitionHeader Null" > > > 00002800 Len: 00020574 Res: 00000000 "u-boot-spl.bin.0" > > > -- End of Dump > > > [INFO] : Partition Information: > > > [INFO] : Image: u-boot-spl.bin > > > [INFO] : Partition 0: u-boot-spl.bin.0, Size: 132467 > > > [INFO] : After Link > > > -- Dump of Binary Image ---- > > > 00000000 Len: 000008b8 Res: 00000000 "BootHeader" > > > 000008c0 Len: 00000040 Res: 00000000 "ImageHeaderTable" > > > 00000900 Len: 00000024 Res: 00000800 "ImageHeader > > > u-boot-spl.bin" > > > 00001100 Len: 00000040 Res: 00000000 "PartitionHeader > > > u-boot-spl.bin.0" > > > 00001140 Len: 00000040 Res: 000016c0 "PartitionHeader Null" > > > 00002800 Len: 00020574 Res: 00000000 "u-boot-spl.bin.0" > > > -- End of Dump > > > > > > > > > however when I boot and inspect the processor state, xsdb returns "APU > > > L2 cache is held in reset" > > > > > > Since the functionality to support RSA authentication is missing from > > > mkimage (I'll have to add that), I would first like to see it > > > functional with SPL using bootgen. > > > > > > However the same bif doesnt even boot - is this to be expected? > > > > > > also the layouts generated from the bif using mkimage and bootgen are > > > completely different (it seems that naively I expected them to be the > > > same); is there any information on the different layouts used for the > > > bootrom? > > > > > > I tested it and it works fine for me. Take a look at the code what > > exactly is > > > > [u-boot]$ cat /tmp/bif > > image : { > > [pmufw_image] /mnt/disk/u-boot-bins/zynqmp/pmu.bin > > [destination_cpu=a53-0, load=0xfffc0000, bootloader] > > spl/u-boot-spl-align.bin > > } > > > > Didn't try the latest bootgen but format is changing over years but none > > is updating this tool. Feel free to take a look at it. > > weird, I can not boot the bin when using bootgen 2019 nor 2021. > > please can you send me the output of the following command so I can compare? > vivado@trex:~/deploy/bootgen_bif$ bootgen -read boot.bin > > also, are you booting from QSPI? > > thanks a lot!
just for reference: $ cat bif the_ROM_image: { [pmufw_image, load=0xffdc0000] pmu.elf [destination_cpu=a53-1, load=0xfffc0000, bootloader] u-boot-spl-align.bin } BOOTGEN ======== $./bootgen -arch zynqmp -image ./bif -w -o bootbif.bin will generate this image: $ ./bootgen -read bootbif.bin ****** Xilinx Bootgen v2021.1 **** Build date : Jun 18 2021-09:23:50 ** Copyright 1986-2021 Xilinx, Inc. All Rights Reserved. -------------------------------------------------------------------------------- BOOT HEADER -------------------------------------------------------------------------------- boot_vectors (0x00) : 0x1400000014000000140000001400000014000000140000001400000014000000 width_detection (0x20) : 0xaa995566 image_id (0x24) : 0x584c4e58 encryption_keystore (0x28) : 0x00000000 header_version (0x2c) : 0x00000000 fsbl_sourceoffset (0x30) : 0x00002800 fsbl_length (0x34) : 0x00000000 fsbl_load_address (0x38) : 0x00000000 fsbl_exec_address (0x3C) : 0x00000000 fsbl_total_length (0x40) : 0x00000000 qspi_config-word (0x44) : 0x00000800 checksum (0x48) : 0xfd1a2c41 iht_offset (0x98) : 0x000008c0 pht_offset (0x9c) : 0x00001100 -------------------------------------------------------------------------------- IMAGE HEADER TABLE -------------------------------------------------------------------------------- version (0x00) : 0x01020000 total_images (0x04) : 0x00000001 pht_offset (0x08) : 0x00001100 ih_offset (0x0c) : 0x00000900 hdr_ac_offset (0x10) : 0x00000000 -------------------------------------------------------------------------------- IMAGE HEADER (u-boot-spl-align.bin) -------------------------------------------------------------------------------- next_ih(W) (0x00) : 0x00000000 next_pht(W) (0x04) : 0x00000440 total_partitions (0x08) : 0x00000000 total_partitions (0x0c) : 0x00000001 name (0x10) : u-boot-spl-align.bin -------------------------------------------------------------------------------- PARTITION HEADER TABLE (u-boot-spl-align.bin.0) -------------------------------------------------------------------------------- encrypted_length (0x00) : 0x0000815d unencrypted_length (0x04) : 0x0000815d total_length (0x08) : 0x0000815d load_addr (0x0c) : 0x00000000 exec_addr (0x10) : 0x00000000 partition_offset (0x14) : 0x00000000 attributes (0x18) : 0xfffc0000 section_count (0x1C) : 0x00000000 checksum_offset (0x20) : 0x00000a00 iht_offset (0x24) : 0x00000216 ac_offset (0x28) : 0x00000001 checksum (0x3c) : 0x00026d91 attribute list - trustzone [non-secure] el [el-0] exec_state [aarch-64] dest_device [none] encryption [no] core [none] -------------------------------------------------------------------------------- AUTHENTICATION CERTIFICATE (u-boot-spl-align.bin.0) -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- which will NOT boot (the fsbl information in the bootheader seems a source of concern but I dont know...hence why I was asking before about the one it worked for you) MKIMAGE ======== Using mkimage - as you indicated- we can generate an image that will boot from QSPI ./mkimage -T zynqmpbif -d bif bootbif.bin Image Type : Xilinx ZynqMP Boot Image support Image Offset : 0x000009c0 Image Size : 132468 bytes (132468 bytes packed) PMUFW Size : 129792 bytes (129792 bytes packed) Image Load : 0xfffc0000 Checksum : 0xfd164999 But the bin image is NOT readable by bootgen jramirez@trex bootgen_bif (master *%)$ ./bootgen -read bootbif.bin ****** Xilinx Bootgen v2021.1 **** Build date : Jun 18 2021-09:23:50 ** Copyright 1986-2021 Xilinx, Inc. All Rights Reserved. [ERROR] : Error reading Image header So both utilities do generate different bootheaders and layouts. The layout that doesnt boot - the one generated with bootgen - is the one documented in https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_2/ug1283-bootgen-user-guide.pdf And the one that does work - using a boot header not readable by bootgen!- is not documented anywhere AFAIK. I am confused at this point. Is there any public information about the bootrom? does the above information make sense to you? > > > > > Thanks, > > Michal > >