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.

PROCESSOR-SDK-AM67: UART Boot Sequence Hangs

Part Number: PROCESSOR-SDK-AM67
Other Parts Discussed in Thread: AM67, DA8XX

Tool/software:

I am performing system boot verification for a custom board based on the AM67 (J722S) EVM using TI SDK 11.00.10.01
Currently, I am implementing the following boot sequence in UART boot mode and encountering an error:

1.Transfer tiboot3.bin via XMODEM
2.Transfer tispl.bin and u-boot.img via YMODEM

However, after executing tiboot3.bin, the system does not transition to YMODEM transfer wait state, and the boot sequence stops.

Upon tracing the operation of tiboot3.bin, I have confirmed the following:
-After executing k3_sysfw_loader(), UART output is functioning normally (System Firmware has already been loaded by ROM)
-Subsequently, when get_ti_sci_handle() is executed, it returns NULL
-Inside get_ti_sci_handle(), uclass_get_device_by_driver(UCLASS_FIRMWARE, DM_DRIVER_GET(ti_sci), &dev) is called, but dev cannot be obtained
-As a result, version display fails in k3_sysfw_print_ver() because ti_sci is NULL

As a workaround, I tried calling get_ti_sci_handle() within k3_sysfw_loader() to check the initialization state of ti_sci, but this did not resolve the issue.
This appears to be deeply dependent on the SPL implementation in u-boot-ti-staging included in the TI SDK and the TI System Firmware initialization.


The following causes are suspected:

-The ti_sci driver is not yet initialized during SPL execution
-In the SPL configuration, even when System Firmware has been loaded by ROM, get_ti_sci_handle() is being called before SPL-side initialization is complete
-The YMODEM transfer wait process in UART boot is not enabled at the SPL stage

Regarding the initialization process for k3_sysfw_loader() and ti_sci, I would like to know the following.

-In k3_sysfw_loader(), is it necessary to explicitly perform ti_sci client initialization (equivalent to ti_sci_initialize()) even in the ROM-loaded state?
-Is it by design that get_ti_sci_handle() returns NULL during SPL execution? If so, where should ti_sci be initialized?
-Regarding the issue where YMODEM reception of tispl.bin and subsequent files does not start in UART boot mode, what settings or code should be checked in the SPL?

  • Hi Kazuya,

    We will look into it and get back to you.

    Regards

    Gokul

  • Hello,

    Couple of questions:

    • Do you get any logs on the console?
    • Which instance are you using as the console on the custom board?
    • Any custom changes that you have done w.r.t UART console?

    - Keerthy

  • Hello,

    Couple of questions:

    • Do you get any logs on the console?
    • Which instance are you using as the console on the custom board?
    • Any custom changes that you have done w.r.t UART console?

    - Keerthy

  • Hi Keerthy

    Thank you for your response and questions.
    Here are my answers:

    1.Yes, I do get logs on the console. The console output is functioning normally as shown by the following log:
    2."U-Boot SPL 2025.01-00407-g6c6b4a79acea (Mar 25 2025 - 16:14:37 +0000)"
    3.I am using UART0 as the console instance on the custom board.
    No custom changes have been made with respect to the UART console configuration.

    -kazuya

  • Usually if you have 

    U-Boot SPL 2025.01-00407-g6c6b4a79acea (Mar 25 2025 - 16:14:37 +0000)

    Then TIFS should also be loaded.

    I will loop in the UART expert.

    - Keerthy

  • Hi kazuya,

    We tested this on our end on J722S TI board and it is working fine.

    Logs:

    Hence, it would be some custom changes on your board which is causing the issue.

    Can you help us by briefly elaborating all the custom changes(both hardware and software) made,so that we can narrow down the issue.

    Also ,I dont find any  TI SDK 11.00.10.01 which you had told. There is only SDK version 11.00.00.08  in the below link:

    www.ti.com/.../PROCESSOR-SDK-LINUX-J722S

    Regards

    Gokul

  • Hi Gokul

    1.I am using the TI SDK version (11.00.10.01) downloaded from the following site:
    "">www.ti.com/.../PROCESSOR-SDK-AM67

    2.Custom modifications made for the custom board:
    The following changes were made based on "ProcessorSDK 11.00.10.01" for our custom board.
    ================================================================================
    2-1. local.conf
    ・Build configuration changes
    [Before]
    MACHINE ?= "arago"
    DISTRO = "arago"
    [After]
    MACHINE ?= "CustomBoard"
    DISTRO = "arago-CustomBoard"

    2-2. arago-CustomBoard.conf
    Based on "sources/meta-arago/meta-arago-distro/conf/distro/arago.conf" with the following changes:
    [Before]
    DISTRO_NAME = "Arago"
    DISTRO_VERSION = "2025.01"
    DISTRO_FEED_URI ?= "">http://lcpd.itg.ti.com"
    [After]
    DISTRO_NAME = "Arago for CustomBoard with AM6754"
    DISTRO_VERSION = "0.1.0"
    DISTRO_FEED_URI = ""

    2-3. CustomBoard-k3r5.conf
    Based on "sources/meta-ti/meta-ti-bsp/conf/machine/j722s-evm-k3r5.conf" with the following changes:
    [Before]
    SYSFW_CONFIG = "evm"
    [After]
    SYSFW_CONFIG = "CustomBoard"

    2-4. Added settings to "binman.dtsi"
    Based on "git\git\arch\arm\dts\k3-j722s-binman.dtsi" with the following changes:
    + mboxes= <&secure_proxy_main 22>,
    + <&secure_proxy_main 23>;

    2-5. Items added or modified for the custom board
    ・Added:
    CONFIG_TARGET_J722S_R5_CUSTOMBOARD=y
    CONFIG_SYS_SPL_MALLOC=y
    CONFIG_HAS_CUSTOM_SPL_MALLOC_START=y
    CONFIG_CUSTOM_SYS_SPL_MALLOC_ADDR=0x84000000
    CONFIG_SYS_SPL_MALLOC_SIZE=0x1000000
    CONFIG_SPL_MTD_SUPPORT=y
    CONFIG_DA8XX_GPIO=y
    CONFIG_SPL_DM_GPIO=y
    CONFIG_DM_GPIO=y
    CONFIG_DM_GPIO_LOOKUP_LABEL=y
    CONFIG_SPL_DM_GPIO_LOOKUP_LABEL=y
    CONFIG_FLASH_CFI_MTD=y
    CONFIG_SYS_FLASH_CFI=y
    CONFIG_SYS_MAX_FLASH_BANKS_DETECT=y
    CONFIG_CUSTOMBOARD_DDR_CONFIG_DEFAULT=0

    ・Modified:
    CONFIG_SF_DEFAULT_SPEED=60000000
    CONFIG_DEFAULT_DEVICE_TREE="k3-j722s-r5-CustomBoard"
    CONFIG_SPI_FLASH_STMICRO=y
    CONFIG_SPL_SIZE_LIMIT=0x80000
    CONFIG_GPIO=y
    CONFIG_MTD_NOR_FLASH=y
    CONFIG_CFI_FLASH=y

    3.To verify SYSFW operation, I added trace logs to "spl.c" and confirmed the behavior.
    The following logs show that SYSFW appears to be loaded:
    =======================================
    k3_sysfw_loader: entered
    SYSFW already loaded by ROM
    CONFIG_K3_LOAD_SYSFW = Enable =
    =======================================

    However, the process proceeds to the message sending stage to SYSFW via "Secure Proxy",
    but it stops inside the mbox_send() call and there is no response.
    Is there any missing configuration?
    =======================================
    uclass_get_device_tail returned 0
    ti_sci_get_handle_from_sysfw() called
    ti_sci_get_handle_from_sysfw: entered
    calling dev_get_priv()
    dev_get_priv OK
    calling ti_sci_cmd_get_revision()
    ti_sci_cmd_get_revision: entered
    handle_to_ti_sci_info OK
    calling ti_sci_setup_one_xfer
    ti_sci_setup_one_xfer OK
    calling ti_sci_do_xfer
    ti_sci_do_xfer: entered
    ti_sci_do_xfer: secure mode active
    memcpy secure header + payload
    ti_sci_do_xfer: sending message via mbox_send()
    =======================================

    -kazuya

  • Hi Kazuya,

    Can you try with the  SDK version 11.00.00.08  in the below link as you are using J722S EVM:

    www.ti.com/.../PROCESSOR-SDK-LINUX-J722S

    Regards

    Gokul

  • Hi Gokul,

    Sorry for jumping in. This is a support request from industrial customer and I confirmed with Suman to use AM67 SDK for industrial application.

    Thanks,
    Nakano

  • Hi Kazuya,

    CONFIG_DEFAULT_DEVICE_TREE="k3-j722s-r5-CustomBoard"
    • Can you share the changes made in the k3-j722-r5-CustomBoard as well.
    • Can you also cross verify your memory map with the  R5 memory map((docs.u-boot.org/.../j721s2_evm.html and ensure nothing is overwriting anything.

    Regards

    Gokul

  • Hi Gokul,

    I checked the memory map. The size of “u-boot-spl” is different, and the offset of “ti-fs-enc.bin” is also different due to the increase in size.

    tiboot3-j722s-hs-fs-evm (-> tiboot3.bin)
    --------------------------------------------------------------------------
    ImagePos Offset Size Name
    --------------------------------------------------------------------------
    00000000 00000000 0005bcca tiboot3-j722s-hs-fs-evm.bin
    00000000 00000000 0000085c ti-secure-rom
    0000085c 0000085c 0003300c u-boot-spl
    00033868 00033868 00027000 ti-fs-enc.bin
    0005a868 0005a868 000007ac combined-tifs-cfg.bin
    0005b014 0005b014 00000694 sysfw-inner-cert
    0005b6a8 0005b6a8 00000622 combined-dm-cfg.bin


    tiboot3-j722s-hs-fs-customboard (-> tiboot3.bin)
    --------------------------------------------------------------------------
    ImagePos Offset Size Name
    --------------------------------------------------------------------------
    00000000 00000000 0005c07d tiboot3-j722s-hs-fs-customboard.bin
    00000000 00000000 0000085c ti-secure-rom
    0000085c 0000085c 000333ef u-boot-spl
    00033c4b 00033c4b 00027000 ti-fs-enc.bin
    0005ac4b 0005ac4b 00000794 combined-tifs-cfg.bin
    0005b3df 0005b3df 00000694 sysfw-inner-cert
    0005ba73 0005ba73 0000060a combined-dm-cfg.bin

    -kazuya

  • Hi Kazuya,

    I will look into this and get back to you.

    Regards

    Gokul

  • Hi Kazuya,

    2-4. Added settings to "binman.dtsi"
    Based on "git\git\arch\arm\dts\k3-j722s-binman.dtsi" with the following changes:
    + mboxes= <&secure_proxy_main 22>,
    + <&secure_proxy_main 23>;

    Can you elaborate more on why the above change was made, as that could be the reason why mbox_send() function is failing when you tried to send message to SYSFW via "Secure Proxy."

    Regards

    Gokul