This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: Generate combined_appimage failed

Part Number: TDA4VM


Hi Ti Exberts

I am trying do the same thing like here mentioned: [FAQ] TDA4VM: Run vision_apps in SBL boot flow with combined_appImage - Processors forum - Processors - TI E2E support forums

when I changed the config.mk file and

1. cd /home/jwang461/ti-sdk/tda4vm-rtos-sdk-08-04-00-06/pdk_jacinto_08_04_00_21/packages/ti/boot/sbl/tools/combined_appimage

2.  make BOARD=j721e_evm HLOS_BOOT=optimized

below error reported, could you help me check why it is like this?

#################################################################################
# Path Configuration
#################################################################################
# Get directory of makefile (RELATIVE)
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
mkfile_dir := $(dir $(mkfile_path))

# Setup build variables relative to makefile folder
ifeq ($(SDK_INSTALL_PATH),)
PDK_INSTALL_PATH ?= $(abspath $(mkfile_dir)../../../../..)
SDK_INSTALL_PATH ?= $(abspath $(PDK_INSTALL_PATH)../../..)
else
PDK_INSTALL_PATH ?= $(mkfile_dir)../../../../..
endif

GCC_ARCH64_BIN_PREFIX ?= aarch64-none-elf

include $(PDK_INSTALL_PATH)/ti/build/Rules.make

#################################################################################
# General Configuration
#################################################################################
# Output Configuration
#
#     OUT_DIR defines the output directory for the combined appimage.
#     OUT_IMG defines the name of the combined appimage
#
OUT_DIR ?= $(mkfile_dir)bin/$(BOARD)
OUT_IMG ?= combined.appimage

# Raw Binary Extensions
#
#     Each of the extensions in this list will be treated as a binary blob, thus
#     indicating that these formats must be converted into ELF prior to RPRC
#     generation. ALL OTHER EXTENSIONS WILL BE CONSIDERED AS EXECUTABLE.
#
RAW_EXTENSIONS ?= .bin .dtb

# Consider extensionless files as raw binary or executable?
#
#     Some files do not have extensions, we can either consider them as raw
#     binary or as executables, but not as both.
#
#     Choices:
#         - raw: raw binary
#         - exe: executable
#
EXTENSIONLESS_TYPE ?= raw

#################################################################################
# HLOS Configuration
#################################################################################

# HLOS Boot Profile
#
#     This setting configures the method by which the HLOS is "booted". In all
#     cases, SBL will technically bring up the board, and then kick off an HLOS
#     "boot" as configured here.
#
#     Choices are as follows:
#         - "optimized" : ATF/OPTEE start the HLOS kernel directly
#         - "development"   : ATF/OPTEE start SPL, which uses U-Boot to boot HLOS
#         - <NULL>        : No HLOS boot
#
#HLOS_BOOT ?= optimized
HLOS_BOOT ?= development

# Path which contains all HLOS binaries
#HLOS_BIN_PATH ?= $(SDK_INSTALL_PATH)/ti-processor-sdk-linux/board-support/prebuilt-images/$(BOARD)
HLOS_BIN_PATH ?=/home/jwang461/ti-sdk/tda4vm-linux-sdk-08-04-00-11/board-support/prebuilt-images 

# GCC PATH
GCC_LINUX_ARM_PATH ?= $(SDK_INSTALL_PATH)/gcc-arm-$(GCC_ARCH64_VERSION)-x86_64-$(GCC_ARCH64_BIN_PREFIX)

# HLOS Images
#
#     Each HLOS component needs to be converted to an ELF prior to RPRC/appimage
#     generation. So a Load Address will be needed, and if the image is intended to
#     be started by SBL (i.e. ATF), then an Entry Point must also be provided.
#
#     Each image configuration should be formatted as follows:
#
#         <Device ID>,<Binary File>,<Load Address>,[Entry Point]
#
#     NOTE: Device ID's are defined in <ti/build/makerules/platform.mk>
#
ATF_IMG    ?= mpu1_0,$(HLOS_BIN_PATH)/bl31.bin,0x70000000,0x70000000
OPTEE_IMG  ?= load_only,$(HLOS_BIN_PATH)/bl32.bin,0x9e800000,0x9e800000
KERNEL_IMG ?= load_only,$(HLOS_BIN_PATH)/Image,0x80080000,0x80080000
# Use board-specific pre-built DTBs to ensure SD card filesystem is used for Linux boot
DTB_IMG    ?= load_only,/home/jwang461/ti-sdk/tda4vm-linux-sdk-08-04-00-11/board-support/prebuilt-images/k3-j721e-common-proc-board.dtb,0x82000000,0x82000000
SPL_IMG    ?= load_only,$(HLOS_BIN_PATH)/u-boot-spl.bin,0x80080000,0x80080000

#################################################################################
# RTOS/Baremetal Configuration
#################################################################################

# Path which contains all RTOS binaries
RTOS_BIN_PATH ?= $(PDK_INSTALL_PATH)/ti/boot/sbl/example/k3MulticoreApp/binary/$(SOC)
#RTOS_BIN_PATH ?= /home/jwang461/ti-sdk/tda4vm-rtos-sdk-08-04-00-06/pdk_jacinto_08_04_00_21/packages/ti/boot/sbl/example/k3MulticoreApp/binary/j721e

# RTOS/Baremetal Images
#
#     Each image here is expected to be in an executable format (e.g. xer5f (ELF),
#     ELF, COFF, etc). These images will be covnerted to RPRC before combined into
#     an appimage.
#
#     A finite number of image variables has been provided below, but users may
#     add as many as needed. The load-order of these images is determined in
#     $IMG_LIST below.
#
#     Each image configuration here should be formatted as follows:
#
#         <Device ID>,<RTOS/Baremetal Binary>
#
#     NOTE: Device ID's are defined in <ti/build/makerules/platform.mk>
#
#     NOTE: images configured to run on the same device as SBL will be started
#           last. For example, on j721e SBL runs on MCU1_0, so any images
#           configured to run on MCU1 will be started when SBL is finished.
#
# Example:
# IMG1 ?= mcu1_0,$(RTOS_BIN_PATH)/sbl_baremetal_boot_test_$(SOC)_idk_mcu1_0TestApp_release.xer5f
#
#IMG1 ?= mcu1_0,$(RTOS_BIN_PATH)/sbl_baremetal_boot_test_$(SOC)_idk_mcu1_0TestApp_release.xer5f
IMG1 ?= mcu1_0,$(PDK_INSTALL_PATH)/ti/binary/ipc_echo_testb_freertos/bin/$(BOARD)/ipc_echo_testb_freertos_mcu1_0_release_strip.xer5f
#IMG2 ?= mcu2_0,$(VISION_APPS_FW_PATH)/out/J721S2/R5F/FREERTOS/release/vx_app_rtos_linux_mcu2_0.out
IMG2 ?=
IMG3 ?=
IMG4 ?=
IMG5 ?=
IMG6 ?=
IMG7 ?=
IMG8 ?=

#################################################################################
# Final Image Configuration
#################################################################################

# ATF is last on purpose, as it is only image that will be executed, thus it is
# important that the other HLOS images get loaded first.
ifeq ($(HLOS_BOOT),optimized)
HLOS_IMGS = $(OPTEE_IMG) $(KERNEL_IMG) $(DTB_IMG) $(ATF_IMG)
else ifeq ($(HLOS_BOOT),development)
HLOS_IMGS = $(OPTEE_IMG) $(SPL_IMG) $(ATF_IMG)
else
HLOS_IMGS =
endif

# The final list of images, listed in inteded load/boot order
# (please see note above in "RTOS/Baremetal Configuration" regarding boot order)
IMG_LIST ?= $(IMG1) $(IMG2) $(IMG3) $(IMG4) $(IMG5) $(IMG6) $(IMG7) $(IMG8) $(HLOS_IMGS)
I am using sdk 08-04-06, and config.mk attached. 

Thank you

Jason

  • Hi Jason,

    Does HLOS_BOOT= development works fine for you?
    Can you try setting HLOS_BOOT=optimized in config.mk itself rather than giving it as a build option from the command.
    Also, can you please share
    platform.mk file from <PDK>/packages/ti/build/makerules

    Regards, Parth

  • Hi Parth

    Thank you for your reply~

    The issue already fixed after I change it to "development". 

    Now I encountered below new issue when SBL boot u-boot-spl.bin and uboot.img. Could you help check why it is like this? even though I use all files in board-support/prebuilt-images. is it a dts issue?

    SBL LINUX LOG:

    Thank you 

    Jason

  • Attahed sbl mcu uart log:

    SBL Revision: 01.00.10.01 (Oct 18 2023 - 11:15:59)
    TIFS  ver: 8.4.1--v08.04.01 (Jolly Jellyfi
    SCISERVER Board Configuration header population... PASSED
    Sciclient_setBoardConfigHeader... PASSED
    Efuse xlated: VD 2 to 850 mV (OppVid: 0x41, Slave:0x48, Res:0x0)
    Successfully set voltage to 850 mV for Slave:0x48, Res:0x0
    Initlialzing PLLs ...done.
    InitlialzingClocks ...done.
    Initlialzing DDR ...done.
    Initializing SERDES ...done.
    Initializing GTC ...Begin parsing user application
    Calling Sciclient_procBootRequestProcessor, ProcId 0x20... 
    Calling Sciclient_procBootRequestProcessor, ProcId 0x21... 
    Calling Sciclient_procBootRequestProcessor, ProcId 0x1... 
    Calling Sciclient_procBootRequestProcessor, ProcId 0x2... 
    Calling Sciclient_procBootRequestProcessor, ProcId 0x6... 
    Calling Sciclient_procBootRequestProcessor, ProcId 0x7... 
    Calling Sciclient_procBootRequestProcessor, ProcId 0x8... 
    Calling Sciclient_procBootRequestProcessor, ProcId 0x9... 
    Calling Sciclient_procBootRequestProcessor, ProcId 0x3... 
    Calling Sciclient_procBootRequestProcessor, ProcId 0x4... 
    Calling Sciclient_procBootRequestProcessor, ProcId 0x30... 
    Searching for X509 certificate ...not found
    Switching core id 8, proc_id 0x1 to split mode... 
    Calling Sciclient_procBootGetProcessorState, ProcId 0x1... 
    Sciclient_procBootSetProcessorCfg, ProcId 0x1, enabling split mode...
    Calling Sciclient_procBootGetProcessorState, ProcId 0x1... 
    Enabling MCU TCMs after reset for core 8
    Sciclient_procBootSetProcessorCfg update TCM enable/disable settings...
    Copying 0x40 bytes to 0x41010000
    Copying 0x490 bytes to 0x41010040
    Copying 0x448 bytes to 0x410104d0
    Copying 0x318 bytes to 0x41010918
    Copying 0x118 bytes to 0x41010c30
    Copying 0x8c bytes to 0xa0100000
    Copying 0x1684 bytes to 0xa058d400
    Copying 0x538 bytes to 0xa058ea88
    Copying 0x1f380 bytes to 0xa05d7e40
    Copying 0xde80 bytes to 0xa05f71c0
    Copying 0x4728 bytes to 0xa0613500
    Setting entry point for core 8 @0x41010000
    Copying 0x5f7e0 bytes to 0x9e800000
    Only load (not execute) image @0x9e800000
    Copying 0x49db0 bytes to 0x80080000
    Only load (not execute) image @0x80080000
    Sciclient_pmSetModuleState On, DevId 0x4... 
    Copying 0xabc0 bytes to 0x70000000
    Setting entry point for core 0 @0x70000000
    Sciclient_procBootReleaseProcessor, ProcId 0x20...
    Sciclient_procBootReleaseProcessor, ProcId 0x21...
    Sciclient_procBootReleaseProcessor, ProcId 0x1...
    Sciclient_procBootReleaseProcessor, ProcId 0x2...
    Sciclient_procBootReleaseProcessor, ProcId 0x6...
    Sciclient_procBootReleaseProcessor, ProcId 0x7...
    Sciclient_procBootReleaseProcessor, ProcId 0x8...
    Sciclient_procBootReleaseProcessor, ProcId 0x9...
    Sciclient_procBootReleaseProcessor, ProcId 0x3...
    Sciclient_procBootReleaseProcessor, ProcId 0x4...
    Sciclient_procBootReleaseProcessor, ProcId 0x30...
    Calling Sciclient_procBootRequestProcessor, ProcId 0x20... 
    Sciclient_procBootSetProcessorCfg, ProcId 0x20, EntryPoint 0x70000000...
    Sciclient_pmSetModuleClkFreq, DevId 0xca @ 2000000000Hz... 
    Sciclient_pmSetModuleState Off, DevId 0xca... 
    Sciclient_pmSetModuleState On, DevId 0xca... 
    Sciclient_procBootReleaseProcessor, ProcId 0x20...
    Calling Sciclient_procBootRequestProcessor, ProcId 0x1... 
    Sciclient_procBootSetProcessorCfg, ProcId 0x1, EntryPoint 0x41010000...
    Sciclient_pmSetModuleClkFreq, DevId 0xfa @ 1000000000Hz... 
    Copying first 128 bytes from app to MCU ATCM @ 0x0 for core 8
    Calling Sciclient_procBootRequestProcessor, ProcId 0x2... 
    Skipping Sciclient_procBootSetProcessorCfg for ProcId 0x2, EntryPoint 0xfffffffe...
    Calling Sciclient_procBootRequestProcessor, ProcId 0x1...

  • Hi Jason,

    Changing the BOOT_MODE to development does not really fix the issue. It will change your boot flow as well.
    Can you please mention what is your intended bootflow? Do you need U-boot to be loaded?

    Regards,
    Parth

  • Hi Parth

    Thanks for your answer. 

    My expected boot flow like this: `ROM --> R5 SBL --> ATF-->OPTEE-->uboot-SPL  --> uboot --> Kernel`

    And I am trying to make the combine image app (ATF/OPTEE/U-boot-spl/ipc_echo_testb_freertos_mcu1_0)

    The log mentioned above is for this boot flow mentioned here. From the main uart log, it seems that the uboot is booting and encounter exception error . So, please help provide some suggestion and correct me if any misunderstand.

    Thanks a lot

    Jason

  • Hi Jason,

    My expected boot flow like this: `ROM --> R5 SBL --> ATF-->OPTEE-->uboot-SPL  --> uboot --> Kernel`

    I don't think the FAQ was meant for this bootflow, I'll check if any other changes are required.

    Meanwhile, may I know why you are using the development boot flow. What advantage do you have with u-boot because this boot flow is almost similar to SPL bootflow.

    Regards,
    Parth

  • Hi Parth

    1. Can you explain in detail about your says "I don't think the FAQ was meant for this bootflow, I'll check if any other changes are required." ? is there any misunderstanding for the boot flow? (ROM --> R5 SBL --> ATF-->OPTEE-->uboot-SPL  --> uboot --> Kernel`), please correct me if I have a wrong understanding about the boot flow.

    2. Actually, R5 SBL also load and boot app(on mcu1_0) besides load and start ATF/OPTEE/Uboot-spl.

    As I know SBL is more fast compared spl during booting, as well as it is suggested in a mature product. 

    And I think my question is the same as a part of the question mentioned in : (+) PROCESSOR-SDK-J721E: SBL for HLOS sd card fails in SCI client - Processors forum - Processors - TI E2E support forums, in that FAQ, my the boot flow and problem encounted also discussed, but it does not discuss any solution in that page. Below is a section mentioned in that FAQ: please take a look at it again. thank you.

    Jason

  • Hi Jason,

    Can you explain in detail about your says "I don't think the FAQ was meant for this bootflow, I'll check if any other changes are required." ? is there any misunderstanding for the boot flow? (ROM --> R5 SBL --> ATF-->OPTEE-->uboot-SPL  --> uboot --> Kernel`), please correct me if I have a wrong understanding about the boot flow.

    I believe this FAQ was optimized boot flow which does not include U-boot. There might be some changes required in U-boot to make this work.

    I'll have to try this on my end. Will be able to get back to you on this by Thursday.

    Regards,
    Parth

  • Hi Parth

    Thanks for your reply again~

    Let me clarify my question: when mentioned the boot flow(ROM --> R5 SBL --> ATF-->OPTEE-->uboot-SPL  --> uboot --> Kernel`), I mean ROM --> R5 SBL -->Combined_App.image(MCU1_0 APP+ ATF-->OPTEE+uboot-SPL)  --> uboot --> Kernel`

    The combined app image does not include u-boot and kernel. Sorry for make you confuse.

    Any how, I have fixed the problem I mentioned after change the u-boot code(delete hyperflash detect).

    Thank you for your support.

    Jason