Showing results for 
Search instead for 
Did you mean: 
Registered: ‎05-14-2019

Generate U-Boot configuration for custom board


I have a custom ZynqMP board (i.e., custom FPGA design and custom PCB) and want to boot Linux on it. To gain more flexibility and control over the software stack, I'm building FSBL, U-Boot, etc. myself (as described in the Wiki) instead of using PetaLinux.

I'm kind of stuck at configuring U-Boot. PetaLinux uses the ZCU102 as a one-size-fits-all configuration for U-Boot, but it also generates the platform-top.h and platform-auto.h header files from the *.hdf file. How can I do this without PetaLinux? Is there a tool in the SDK that creates an appropriate U-Boot configuration for my design?

Should I instead create a U-Boot configuration manually, based on the ZCU102 template? I guess I have to copy psu_init_gpl.c/.h to the appropriate folders in the U-Boot source tree, is that correct?

0 Kudos
2 Replies
Xilinx Employee
Xilinx Employee
Registered: ‎09-01-2014

Re: Generate U-Boot configuration for custom board

We don’t recommend to build the kernel out of Petalinux flow since there is plenty of setting.
We had a lot of experiences that customers thought they could build Linux by themselves but finally returned to Petalinux flow.
Because it’s hard to find the problem if your Linux is not booting.

If you want to build our own kernel and u-boot with petalinux, Petalinux also supports external source. Please check “Configuring Out-of-tree Build” section

0 Kudos
Registered: ‎09-12-2007

Re: Generate U-Boot configuration for custom board

Correct, the Petalinux does alot of config work for the user. In the case with the u-boot, it extracts the info from the HDF, and creates the platform-user.h.

If you are using the OSL flow, then you could create this manually. However, most of this is board level info that you would need to create manually anyway for a custom board.

For your custom u-boot, you would need to manually create the 


Update the Makefile to add your DTS:



u-boot-xlnx\include\configs\<CUSTOM_BOARD>.h (this is referenced in the defconfig)

The OSL flow is covered here:

0 Kudos