[PATCH v6 11/11] doc: board/qualcomm: Update RDP build instructions

Balaji Selvanathan balaji.selvanathan at oss.qualcomm.com
Sun Jun 28 15:17:29 CEST 2026


Hi Varada,

On 6/23/2026 12:18 PM, Varadarajan Narayanan wrote:
> Add details about the SPL & U-Boot proper build steps, converting to
> flashable images, source URLs for the needed binaries and scripts.
>
> Signed-off-by: Varadarajan Narayanan <varadarajan.narayanan at oss.qualcomm.com>

Reviewed-by: Balaji Selvanathan <balaji.selvanathan at oss.qualcomm.com>

Regards,

Balaji

> ---
> v5: Fix documentation related build errors
>
> v4: Replace script based image creation with binman based command
>
> v3: Use '-' for sub heading instead of '='
>      Add location for template.its and sort the list alphabetically
> ---
>   doc/board/qualcomm/rdp.rst | 98 ++++++++++++++++++++++++++++++++++++--
>   1 file changed, 93 insertions(+), 5 deletions(-)
>
> diff --git a/doc/board/qualcomm/rdp.rst b/doc/board/qualcomm/rdp.rst
> index 99cf8eba57c..5a0ce92e310 100644
> --- a/doc/board/qualcomm/rdp.rst
> +++ b/doc/board/qualcomm/rdp.rst
> @@ -24,13 +24,17 @@ This will build ``u-boot.elf`` in the configured output directory.
>   The firmware expects the ELF images to be in MBN format. The `elftombn.py` tool
>   can be used to convert the ELF images to MBN format.
>   
> -	IPQ9574: (MBN version 6)
> +IPQ9574: (MBN version 6)
>   
> -		$ python elftombn.py -f u-boot.elf -o u-boot.mbn -v6
> +.. code-block:: bash
>   
> -	IPQ5424: (MBN version 7)
> +    python elftombn.py -f u-boot.elf -o u-boot.mbn -v6
>   
> -		$ python elftombn.py -f u-boot.elf -o u-boot.mbn -v7
> +IPQ5424: (MBN version 7)
> +
> +.. code-block:: bash
> +
> +    python elftombn.py -f u-boot.elf -o u-boot.mbn -v7
>   
>   Then install the resulting ``u-boot.mbn`` to the ``0:APPSBL`` partition
>   on your device with::
> @@ -42,17 +46,101 @@ on your device with::
>   
>   U-Boot should be running after a reboot (``reset``).
>   
> +Build steps for IPQ5210 based Qualcomm Dragonwing F8 & N8 Platforms:
> +--------------------------------------------------------------------
> +
> +Please refer to the following URLs for more details about the platforms.
> +
> +	F8: https://www.qualcomm.com/networking-infrastructure/products/f-series/f8-platform
> +
> +	N8: https://www.qualcomm.com/networking-infrastructure/products/n-series/n8-platform
> +
> +1. Since U-Boot SPL is enabled on these platforms, the build command generates
> +   both the U-Boot SPL and U-Boot proper images. Assuming ${uboot_dir} is the
> +   top of the U-Boot sources and ${out_dir} as the output directory,
> +
> +.. code-block:: bash
> +
> +    cd ${uboot_dir}
> +    export CROSS_COMPILE=<aarch64 toolchain prefix>
> +    make -j8 O=${out_dir} qcom_ipq5210_mmc_defconfig
> +    make -j8 O=${out_dir}
> +
> +U-Boot SPL image:	${out_dir}/spl/u-boot-spl.wrap-elf
> +U-Boot image:	${out_dir}/u-boot.elf
> +
> +2. Convert the SPL image to multi ELF
> +
> +.. code-block:: bash
> +
> +    cd ${out_dir}/spl
> +    python elftombn.py -f u-boot-spl.wrap-elf -o u-boot-spl.mbn -v7
> +    python `create_multielf.py` -f u-boot-spl.mbn,tmel-ipq52xx-patch.elf \
> +					-o u-boot-spl.melf
> +
> +This u-boot-spl.melf should be flashed into 0:SPL partition.
> +Please see below for the location of `tmel-ipq52xx-patch.elf`
> +
> +3. Convert the U-Boot image to bootloader image
> +
> +.. code-block:: bash
> +
> +    cd ${out_dir}
> +    python elftombn.py -f u-boot.elf -o u-boot.mbn -v7
> +
> +The u-boot.mbn has to be combined with `qc_config.elf`, `QCLib.elf`, `TFA`
> +and `OPTEE`. Please see below for the location for these ELFs. TFA and OPTEE
> +can be built from the sources using the following commands
> +
> +TFA:
> +
> +.. code-block:: bash
> +
> +    make PLAT=ipq52xx QTISECLIB_PATH=path/to/`libqtisec_dbg.a` SPD=opteed
> +
> +OPTEE:
> +
> +.. code-block:: bash
> +
> +    make PLATFORM=qcom-ipq52xx -j16
> +
> +These binaries can be combined into a flashable image using `gen_its.py`.
> +
> +.. code-block:: bash
> +
> +	python gen_its.py --arch ipq5210		\
> +		--qclib_path `QCLib.elf`		\
> +		--qcconfig_path `qc_config.elf`		\
> +		--tfa_bl31_path bl31.mbn		\
> +		--uboot_path u-boot.mbn			\
> +		--optee_path tee-raw.mbn		\
> +		-p qcconfig qclib			\
> +		-P tfa_bl31 uboot optee			\
> +		-o output/hm_503_test_uboot.img		\
> +		--template `template.its`
> +
> +This should be flashed into 0:BOOTLDR partition.
> +
>   .. WARNING
>   	Boards with newer software versions would automatically go the emergency
>   	download (EDL) mode if U-Boot is not functioning as expected. If its a
>   	runtime failure at Uboot, the system will get reset (due to watchdog)
>   	and XBL will try to boot from next bank and if Bank B also doesn't have
>   	a functional image and is not booting fine, then the system will enter
> -	EDL.  A tool like bkerler's `edl`_ can be used for flashing with the
> +	EDL.  A tool like bkerler's `edl` can be used for flashing with the
>   	firehose loader binary appropriate for the board.
>   
>   	Note that the support added is very basic. Restoring the original U-Boot
>   	on boards with older version of the software requires a debugger.
>   
> +.. _create_multielf.py: https://raw.githubusercontent.com/coreboot/coreboot/refs/heads/main/util/qualcomm/create_multielf.py
>   .. _elftombn.py: https://git.codelinaro.org/clo/qsdk/oss/system/tools/meta/-/tree/NHSS.QSDK.13.0.5.r2/scripts?ref_type=heads
>   .. _edl: https://github.com/bkerler/edl
> +.. _gen_its.py: https://git.codelinaro.org/clo/qsdk/oss/system/tools/meta/-/tree/win.platform_tools.1.0.r34/scripts?ref_type=heads
> +.. _libqtisec_dbg.a: https://softwarecenter.qualcomm.com/nexus/generic/product/chip/software-product/IPQ5210.NLQ.14.0/ipq5210.nlq.14.0-qca-oem-qartifact/r00036.1/WIN.TFA.1.0.R4/apss_proc/out/proprietary/qtiseclib/output/ipq52xx/release/libqtisec_dbg.a
> +.. _OPTEE: https://git.codelinaro.org/clo/trusted-firmware/optee_os/optee_os/-/tree/win.optee.1.0?ref_type=heads
> +.. _qc_config.elf: https://softwarecenter.qualcomm.com/nexus/generic/product/chip/software-product/IPQ5210.NLQ.14.0/ipq5210.nlq.14.0-qca-oem-qartifact/r00036.1/BOOT.MXF.2.3.1.1/boot_images/boot/QcomPkg/SocPkg/Hermosa/Bin/LC/RELEASE/qc_config.elf
> +.. _QCLib.elf: https://softwarecenter.qualcomm.com/nexus/generic/product/chip/software-product/IPQ5210.NLQ.14.0/ipq5210.nlq.14.0-qca-oem-qartifact/r00036.1/BOOT.MXF.2.3.1.1/boot_images/boot/QcomPkg/SocPkg/Hermosa/Bin/LC/RELEASE/QCLib.elf
> +.. _template.its: https://git.codelinaro.org/clo/qsdk/oss/system/tools/meta/-/tree/win.platform_tools.1.0.r34/scripts?ref_type=heads
> +.. _TFA: https://git.codelinaro.org/clo/trusted-firmware/tf-a/trusted-firmware-a/-/tree/win.tfa.1.0.r4?ref_type=heads
> +.. _tmel-ipq52xx-patch.elf: https://softwarecenter.qualcomm.com/nexus/generic/product/chip/software-product/IPQ5210.NLQ.14.0/ipq5210.nlq.14.0-qca-oem-qartifact/r00036.1/TMEL.WNS.2.4/tmel-ipq52xx-patch.elf


More information about the U-Boot mailing list