# Build and flash signed image Source: [https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html](https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html) ## Modify SecImage configuration file Source: [https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html](https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html) For details, see Section [SecImage configuration file](https://docs.qualcomm.com/doc/80-Y8730-8/topic/secimage_configuration_file.html). ## Build signed images Source: [https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html](https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html) ### Build images with FreeRTOS SDK The following commands show how to build a signed image with build.py, which is provided with the FreeRTOS SDK. Note: Add the `--sign` option in the build command. - Build a signed SBL image. python build.py -b qcc730v2_evb11_hostless -o output\qcc730v2_evb11_hostless --image FERMION_SBL --signCopy to clipboard After a successful build, the signed SBL image is generated at the following location: output\qcc730v2\_evb11\_hostless\FERMION\_SBL\DEBUG\bin\qcc730\sbl\FERMION\_SBL.elf - Build a signed APP image. python build.py -b qcc730v2_evb11_hostless -o output\qcc730v2_evb11_hostless --image FERMION_IOE_QCLI_DEMO --signCopy to clipboard After a successful build, the signed APP image is generated at the following location: output\qcc730v2\_evb11\_hostless\FERMION\_IOE\_QCLI\_DEMO\DEBUG\bin\qcc730\app\FERMION\_IOE\_QCLI\_DEMO.elf ### Build images with Zephyr SDK Use the `west` tool in the Zephyr SDK to build both SBL and APP images. Image signing is integrated into the `west` build process. The following example command builds signed images: west build -b qcc730mi -t signCopy to clipboard The `-t sign` option instructs the `west` tool to sign the generated images. After a successful build, images are generated in the following locations. | Image type | Image location | Signed image location | | --- | --- | --- | | SBL | build\modules\hal\_qcom\qboot\ | zephyr\_sec\_sbl\qcc730\sbl\ | | APP | build\zephyr\ | zephyr\_sec\_app\qcc730\app\ | ## Flash signed images Source: [https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html](https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html) ### Flash signed images with FreeRTOS SDK Source: [https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html](https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html) The following commands show how to flash a signed image with nvm\_programmer.py, which is in the nvm\_programmer folder in the FreeRTOS SDK. For details about using nvm\_programmer.py, refer to [QCC730.FR.1.0 Programming Guide (80-Y8730-2)](doc/80-Y8730-2). ### Flash signed images through J‑Link - Flash a signed SBL image. python nvm_programmer.py -s jlink --nvm-name rram -b 0x20a400 -f ..\..\..\output\qcc730v2_evb11_hostless\FERMION_SBL\DEBUG\bin\qcc730\sbl\FERMION_SBL.elf python nvm_programmer.py -s jlink --nvm-name rram -b 0x212400 -f ..\..\..\output\qcc730v2_evb11_hostless\FERMION_SBL\DEBUG\bin\qcc730\sbl\FERMION_SBL.elfCopy to clipboard - Flash a signed APP image. python nvm_programmer.py -s jlink --nvm-name flash -f ..\..\..\output\qcc730v2_evb11_hostless\FERMION_IOE_QCLI_DEMO\DEBUG\bin\qcc730\app\FERMION_IOE_QCLI_DEMO.elf -PCopy to clipboard ### Flash signed image through CH347 - Flash a signed SBL image. python nvm_programmer.py -s ch347 --nvm-name rram -b 0x20a400 -f ..\..\..\output\qcc730v2_evb11_hostless\FERMION_SBL\DEBUG\bin\qcc730\sbl\FERMION_SBL.elf python nvm_programmer.py -s ch347 --nvm-name rram -b 0x212400 -f ..\..\..\output\qcc730v2_evb11_hostless\FERMION_SBL\DEBUG\bin\qcc730\sbl\FERMION_SBL.elfCopy to clipboard - Flash a signed APP image. python nvm_programmer.py -s ch347 --nvm-name flash -f ..\..\..\output\qcc730v2_evb11_hostless\FERMION_IOE_QCLI_DEMO\DEBUG\bin\qcc730\app\FERMION_IOE_QCLI_DEMO.elf -PCopy to clipboard ### Flash signed images with Zephyr SDK Source: [https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html](https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html) With the Zephyr SDK, you can use either the `west` tool or the nvm\_programmer.py script to flash signed images through CH347. Although the `west` tool eventually invokes the nvm\_programmer.py script, using the `west` tool is recommended because it simplifies the flashing process for most users. The `west` tool flashes the signed images generated during the build stage, as described in [Build images with Zephyr SDK](https://docs.qualcomm.com/doc/80-Y8730-8/topic/build_and_flash_signed_image.html#build_signed_image__sec_build_images_with_ze_sdk). ### Use the `west` tool to flash signed images The following example command flashes signed images through CH347: west flash -m flash -a --signCopy to clipboard ### Use the nvm\_programmer.py script to flash signed images The following example commands show how to use the nvm\_programmer.py script to flash signed images through CH347. Note the file path might be different in your environment. - Flash a signed SBL image. python modules\hal\qcom\tools\qprgc\nvm_programmer.py -s ch347 -i modules\hal\qcom\zephyr\blobs\qcc730mi_prg.elf --nvm-name rram -b 0x20a400 -f zephyr_sec_sbl\qcc730\sbl\qcc730mi_sbl.elf --server-script qcc730\boards\qcom\common\qcc730_openocd_ch347.cfgCopy to clipboard - Flash a signed APP image. python modules\hal\qcom\tools\qprgc\nvm_programmer.py -s ch347 -i modules\hal\qcom\zephyr\blobs\qcc730mi_prg.elf --nvm-name flash -b 0x43000 -f \zephyr_sec_app\qcc730\app\zephyr.elf --server-script qcc730\boards\qcom\common\qcc730_openocd_ch347.cfgCopy to clipboard If the boot image changes from BIN to ELF flash, FDT table should be updated. The following example command shows how to do this: python modules\hal\qcom\tools\qprgc\nvm_programmer.py -s ch347 -i modules\hal\qcom\zephyr\blobs\qcc730mi_prg.elf --nvm-name rram -b 0x208000 -f modules\hal\qcom\zephyr\blobs\frn_curr_age_default.bin --server-script qcc730\boards\qcom\common\qcc730_openocd_ch347.cfgCopy to clipboard Last Published: Feb 10, 2026 [Previous Topic Generating SHA256‑signed certificates](https://docs.qualcomm.com/bundle/publicresource/80-Y8730-8/topics/generating_sha256_signed_certificates.md) [Next Topic OTP format and configuration](https://docs.qualcomm.com/bundle/publicresource/80-Y8730-8/topics/otp_format_and_configuration.md)