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.

AM62P: falcon mode issue

Part Number: AM62P
Other Parts Discussed in Thread: UNIFLASH

Hi TI,

I am testing Falcon mode on the AM62P‑SK‑EVM board. However, I encountered a boot issue. After programming linux.falcon.appimage.hs_fs into the board, the system cannot boot normally and hangs. By the way, the board boots normally when not using the Falcon appimage, I am using the exact same files that were used to build linux.falcon.appimage.hs_fs.
My software versions are:

MCU SDK: mcu_plus_sdk_am62px_11_01_01_08

Linux SDK: ti-processor-sdk-linux-am62pxx-evm-11.01.16.13

Relevant information is attached below.
Please feel free to contact me if you have further questions and I am looking forwared to your reply.
 
startup log
[BOOTLOADER_PROFILE] Boot Media       : FLASH
[BOOTLOADER_PROFILE] Boot Media Clock : 166.667 MHz
[BOOTLOADER_PROFILE] Boot Image Size  : 256 KB
[BOOTLOADER_PROFILE] Cores present    :
wkup-r5f0-0
[BOOTLOADER PROFILE] System_init                      :      27701us
[BOOTLOADER PROFILE] App_waitForMcuPbist              :          2us
[BOOTLOADER PROFILE] Board_init                       :          0us
[BOOTLOADER PROFILE] Drivers_open                     :          1us
[BOOTLOADER PROFILE] SBL Drivers_open                 :        153us
[BOOTLOADER PROFILE] Board_driversOpen                :          8us
[BOOTLOADER PROFILE] SBL Board_driversOpen            :       1419us
[BOOTLOADER PROFILE] App_loadSelfcoreImage            :       4618us
[BOOTLOADER_PROFILE] SBL Total Time Taken             :      33905us

Image loading done, switching to application ...
Starting 2nd stage bootloader
[BOOTLOADER_PROFILE] Boot Media       : FLASH
[BOOTLOADER_PROFILE] Boot Media Clock : 166.667 MHz
[BOOTLOADER_PROFILE] Boot Image Size  : 22616 KB
[BOOTLOADER_PROFILE] Cores present    :
hsm-m4f0-0
mcu-r5f0-0
a530-0
[BOOTLOADER PROFILE] System_init                      :       2171us
[BOOTLOADER PROFILE] Board_init                       :          3us
[BOOTLOADER PROFILE] FreeRtosTask Create              :        260us
[BOOTLOADER PROFILE] SBL Drivers_open                 :       1012us
[BOOTLOADER PROFILE] SBL Board_driversOpen            :        260us
[BOOTLOADER PROFILE] HSM Image Load                   :       3837us
[BOOTLOADER PROFILE] MCU R5 Image Load                :       4224us
[BOOTLOADER PROFILE] A53 Image Load                   :     176656us
[BOOTLOADER_PROFILE] SBL Total Time Taken             :     188428us

Image loading done, switching to application ...
Starting linux and RTOS/Baremetal applications
NOTICE:  BL31: v2.13.0(release):v2.13.0-259-ge0c4d3903b-dirty
NOTICE:  BL31: Built : 07:01:36, Jul  1 2025
 
dts diff
 
diff --git a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
index 39b7c2487..b74552546 100644
--- a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
@@ -38,7 +38,7 @@ chosen {
                ranges;
 
                stdout-path = &main_uart0;
-
+               bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk0p1 rootwait rw"; // boot to mmc
                framebuffer0: framebuffer@0 {
                        compatible = "simple-framebuffer";
                        power-domains = <&k3_pds 186 TI_SCI_PD_EXCLUSIVE>;

 

BR,

Dongcan

  • Hi Dongcan,

    Please share the exact steps that you've followed to reproduce the issue.

    Regards,
    Vinu

  • Hi Vinu,
    1. I programmed the image to flash using the command: ” python3 uart_uniflash.py -p /dev/ttyUSB0 --cfg=sbl_prebuilt/am62px-sk/default_sbl_ospi_linux_hs_fs.cfg".
    2. After resetting the EVM board, it booted normally to the U-Boot command line interface. I then compiled the Falcon Mode image, burn it to address 0x1200000 via TFTP, updated it, and reset the board — at this point, the system failed to boot normally and hung indefinitely.
    The only modification I made was adding bootargs to the device tree; all other files (for both MCU and A53 cores) are the default files provided in the SDK.
    Regards,
    Dongcan
  • Hi Dongcan,

    Let me try this out. I'll get back to you in three days.

    Regards,
    Vinu

  • OK,  thanks!

  • Hi Dongcan,

    Can you share the steps you've followed to build the falcon boot image?

    Regards,
    Vinu

  • Hi Vinu,
    My steps for building the Falcon boot image are as follows:
    1. Navigate to the linuxAppimageGen directory:
      cd ${SDK_INSTALL_PATH}/tools/boot/linuxAppimageGen
    2. Build the image with Falcon Mode enabled:
      make -s BOARD=am62px-sk all FALCON_MODE=1
    The config.mak file I used is the default one provided in the MCU SDK (mcu_plus_sdk_am62px_11_01_01_08).
    I’ve noticed an unexpected behavior that I’m seeking clarification on: when I modify config.mak (mcu_plus_sdk_am62px_11_01_01_08)to match the address configurations from SDK version 11.00.00.16, the compiled Falcon Mode image boots normally. However, the default config from SDK 11.01.01.08 results in a boot hang.

    Address Configurations Comparison:

    SDK 11.01.01.08 (default, causes hang):
    makefile

    # Linux image load address
    ATF_LOAD_ADDR=0x80000000
    OPTEE_LOAD_ADDR=0x9e800000
    SPL_LOAD_ADDR=0x80080000
    
    ifeq ($(FALCON_MODE), 1)
    KERN_LOAD_ADDR=0x82000000
    FDT_LOAD_ADDR=0x88000000
    SDK 11.00.00.16 (modified, boots normally):
    makefile

    # Linux image load address
    ATF_LOAD_ADDR=0x80000000
    OPTEE_LOAD_ADDR=0x9e800000
    SPL_LOAD_ADDR=0x80080000
    
    ifeq ($(FALCON_MODE), 1)
    KERN_LOAD_ADDR=0x80080000
    FDT_LOAD_ADDR=0x82000000
    I’m confused about why SDK 11.00.00.16 uses the same address (0x80080000) for both KERN_LOAD_ADDR and SPL_LOAD_ADDR. Logically, this should overwrite the SPL  when the kernel is loaded, yet the system boots successfully in this configuration.
    Could you help explain this seemingly contradictory behavior?
    Regards,
    Dongcan
  • Hi Dongcan,

    In Falcon mode, the A53SPL and U-boot is completely bypassed.

    Normal boot flow:

    • R5 SPL -> ATF -> OP-TEE -> Cortex-A SPL -> U-Boot -> Linux

    With falcon mode:

    • R5 SPL -> ATF -> OP-TEE -> Linux

    In your initial logs, the bootflow seems correct, but the kernel never starts.

    In 11.01.01.08, config.mk seems to be updated to new load address (likely to achieve 2MB alignment), but the precompiled bl31.bin doesn't seem to be built to match the address. So at the end of BL31 execution, it blindly jumps to the older address, where the kernel is not present and cause the hang.

    In the woraround, with 11.00.00.16 addresses, the kernel is found where BL31 expects it to be. 

    In normal bootflow, it will be jumped from BL31 to A53 SPL, but in falcon boot, kernel is expected instead. 

    So, in falcon boot, the SPL slot, at 0x80080000 would be empty. So it would work, if it's intentionally used for kernel.

    To correctly resolve your issue, the BL31 should be rebuild with the correct addresses.

    Can you try the following guide and rebuild ATF with the new addresses?

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM62PX/11_01_01_08/exports/docs/api_guide_am62px/FALCON_BOOT.html#autotoc_md1077

    Here, PRELOADED_BL33_BASE=0x82000000 and K3_HW_CONFIG_BASE=0x88000000, which corresponds to the KERN_LOAD_ADDR and FDT_LOAD_ADDR respectively.

    Regards,
    Vinu