← Back
OP-TEE · Qualcomm Platforms

Quick Start

Initialize the workspace with repo, sync all source trees, fetch the Qualcomm firmware blobs, build, and flash the board.

1 Initialize the workspace — Qualcomm QCS6490
# create the sandbox and pull the manifest
mkdir sandbox.kodiak && cd sandbox.kodiak
repo init -u https://github.com/qualcomm-linux/qcom-buildroot.git -m manifests/kodiak.xml
2 Sync all source trees
repo sync -j4 --no-clone-bundle
3 Build toolchains, components, and the firmware blobs
cd build
make -j8 toolchains
make -j8
# download Qualcomm firmware blobs directly — no Yocto build needed
make fetch-blobs
make all
4 Flash the board over USB — device in EDL mode, qdl on PATH
# first flash: full loader (tz.mbn + uefi.elf) + kernel
make flash-loader
make flash-efi

# kernel-only iteration afterwards — no loader re-flash
make flash-efi

Iterate on a single component

After the first full build, you rarely rebuild everything. Edit one tree (OP-TEE OS, TF-A, U-Boot or Linux), rebuild just that component, repackage, and reflash. Builds are incremental — only the changed source is recompiled — so the edit → flash loop is seconds to a couple of minutes, not the hour a full build takes.

Boot-chain change — OP-TEE OS, TF-A or U-Boot
# rebuild just the component you touched (incremental — seconds–minutes)
make optee-os        # or:  make tfa   /   make u-boot
make loader          # build uefi.elf + tz.mbn (BL2 signed with sectools)
make flash-loader    # reflash the boot chain
Kernel change — Linux
# rebuild the kernel (incremental — typically ~1–2 min)
make linux
make efi             # repackage the EFI image / UKI (efi.bin)
make flash-efi    # reflash the kernel partition only — firmware untouched

make fetch-blobs pulls the Qualcomm boot binaries and CDT from the public Qualcomm / CodeLinaro URLs, so a full Yocto BSP build is not required. The flash targets look for inputs in input/ → Yocto deploy dir → blobs/. Run make help in build/ for the full target list.