[PATCH v6 11/11] doc: board/qualcomm: Update RDP build instructions
Casey Connolly
casey.connolly at linaro.org
Tue Jun 30 14:01:03 CEST 2026
On 6/23/26 08:48, 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.
Additionally, this should be updated to use mkmbn.py which includes mbn
v7 support.... As for create_multielf.py, does it do anything that "cat"
doesn't ????
I think it would be pretty simple to expand the match table in mkmbn.py
and have it check for the TME elf and append it when building for this
platform (so it would output a u-boot-spl.mbn AND u-boot-spl.melf), just
add another build target in board/qualcomm/config.mk.
Thanks,
// Casey>
> Signed-off-by: Varadarajan Narayanan <varadarajan.narayanan at oss.qualcomm.com>
> ---
> 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