# ELF load details during QCC730 boot Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_elf_load.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_elf_load.html) ELF loading is the main process of loading an image. As described in [QCC730 boot flow](https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_flow.html), SBL and APP images are loaded during bootup. For commercial products, both images can only be loaded in ELF format. ## ELF load software architecture Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_elf_load.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_elf_load.html) The ELF loading is designed to support loading ELF images from different types of memory. For example, SBL images stored on RRAM and APP images stored on flash. It's realized through a virtual layer between memory driver and ELF loader, as shown in the following figure. Figure : ELF load software architecture RRAM_TO_RRAM RRAM_TO_RRAM FLASH_TO_RRAM FLASH_TO_RRAM FLASH_TO_RAM FLASH_TO_RAM RRAM_TO_RAM RRAM_TO_RAM Virtual MEM layer Virtual MEM layer OTA OTA ELF loader ELF loader Security Security ## ELF load type Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_elf_load.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_elf_load.html) The following three types of loading are supported for ELF images: - FULL\_LOAD Load all PT\_LOAD type segments to the virtual DDR specified in the program header, RAM segments to RAM, and RRAM segments to RRAM. - RAM\_LOAD Only load virtual addresses in RAM (0x0 ~ 0xA0000) of PT\_LOAD type segments. This type reduces the number of RRAM loading times since the code running on RRAM only need be loaded once. After a FULL\_LOAD, you only need to run RAM\_LOAD after bootup. - COPY\_LOAD Copy the PT\_LOAD type segment to the physical address (PADDR) specified in the program header. This type of loading is similar to burning a BIN file, except that there is no padding between segments. ## SBL ELF load Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_elf_load.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_elf_load.html) An SBL image has code/data segments and PBL patch segment, as described in [SBL image](https://docs.qualcomm.com/doc/80-Y8730-2/topic/program_images.html#sbl). The code/data segments run in the RAM, while the PBL patch segment is loaded to the PBL\_PATCH region of RRAM. As described in [ELF load type](https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_elf_load.html#elf_load_type), code/data segments only need be loaded with RAM\_LOAD, while PBL\_PATCH need be loaded with FULL\_LOAD but only once. Therefore, a new OTA image requires a FULL\_LOAD to load both RAM segments (code/data) and RRAM segment (PBL\_PATCH). After that, only RAM\_LOAD is needed during SBL loading. Figure : SBL ELF load PBL patch PBL patch PBL PBL ELF ELF Hash segment Hash segment Code segment Code segment Data segment Data segment PBL patch segment PBL patch segment RAM RAM SBL RAM SBL RAM 0x80000 0x80000 0x90000 0x90000 0xA0000 0xA0000 SBL SBL ## APP ELF load Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_elf_load.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcc730_boot_elf_load.html) The following diagram illustrates the APP ELF load process. Figure : APP ELF load RRAM segments RRAM segments RAM segments RAM segments ELF header ELF header Hash segment Hash segment RAM segments RAM segments RRAM segments RRAM segments Flash Flash RAM RAM RRAM RRAM RAM_LOAD RAM_LOAD FULL_LOAD FULL_LOAD Last Published: Jun 03, 2026 [Previous Topic QCC730 boot flow](https://docs.qualcomm.com/bundle/publicresource/80-Y8730-2/topics/qcc730_boot_flow.md) [Next Topic QCC730 OTA upgrade](https://docs.qualcomm.com/bundle/publicresource/80-Y8730-2/topics/firmware_upgrade.md)