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.

TDA4AL-Q1: [FreeRTOS]Timeout waiting for thread SP_RESPONSE to fill

Part Number: TDA4AL-Q1


Tool/software:

Dear Expert

I would like to run freertos at MCU core of MCU domain(not main domain MCU) 

I build the FreeRTOS Task Switch test example

https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j721s2/10_00_00_05/exports/docs/pdk_j721s2_10_00_00_27/docs/userguide/j721s2/modules/freertos.html

and put it to the path of meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb to run mcu rtos

However, i got the following log

 

U-Boot SPL 2024.04-ti-gd1e3aedf631f (Jan 12 2025 - 17:12:54 +0000)
SYSFW ABI: 4.0 (firmware rev 0x000a '10.0.8--v10.00.08 (Fiery Fox)')
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -121
SPL initial stack usage: 13456 bytes
Trying to boot from MMC2
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Loading Environment from nowhere... OK
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b87-dirty
NOTICE:  BL31: Built : 16:09:05, Feb  9 2024
ERROR:   Timeout waiting for thread SP_RESPONSE to fill
ERROR:   Thread SP_RESPONSE verification failed (-60)
ERROR:   Message receive failed (-60)
ERROR:   Failed to get response (-60)
ERROR:   Transfer send failed (-60)
ERROR:   Timeout waiting for thread SP_RESPONSE to fill
ERROR:   Thread SP_RESPONSE verification failed (-60)
ERROR:   Message receive failed (-60)
ERROR:   Failed to get response (-60)
ERROR:   Transfer send failed (-60)
ERROR:   Unable to query firmware capabilities (-60)
I/TC:
I/TC: OP-TEE version: 4.2.0-dev (gcc version 13.3.0 (GCC)) #1 Fri Apr 12 09:51:21 UTC 2024 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: GIC redistributor base address not provided
I/TC: Assuming default GIC group status and modifier
E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy
E/TC:0 0 k3_sec_proxy_recv:196 Thread SEC_PROXY_RESPONSE_THREAD verification failed. ret = -65523
E/TC:0 0 ti_sci_get_response:101 Message receive failed (-65523)
E/TC:0 0 ti_sci_do_xfer:150 Failed to get response (-65523)
E/TC:0 0 ti_sci_init:486 Unable to communicate with control firmware (-65523)
E/TC:0 0 call_initcalls:43 Initcall __text_start + 0x00070af8 failed
E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy
E/TC:0 0 k3_sec_proxy_recv:196 Thread SEC_PROXY_RESPONSE_THREAD verification failed. ret = -65523
E/TC:0 0 ti_sci_get_response:101 Message receive failed (-65523)
E/TC:0 0 ti_sci_do_xfer:150 Failed to get response (-65523)
E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy
E/TC:0 0 k3_sec_proxy_recv:196 Thread SEC_PROXY_RESPONSE_THREAD verification failed. ret = -65523
E/TC:0 0 ti_sci_get_response:101 Message receive failed (-65523)
E/TC:0 0 ti_sci_do_xfer:150 Failed to get response (-65523)
E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy
E/TC:0 0 k3_sec_proxy_recv:196 Thread SEC_PROXY_RESPONSE_THREAD verification failed. ret = -65523
E/TC:0 0 ti_sci_get_response:101 Message receive failed (-65523)
E/TC:0 0 ti_sci_do_xfer:150 Failed to get response (-65523)
E/TC:0 0 tee_otp_get_hw_unique_key:97 Could not get HUK
E/TC:0 0 call_initcalls:43 Initcall __text_start + 0x00070b20 failed
I/TC: Activated SA2UL device
E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy
E/TC:0 0 k3_sec_proxy_recv:196 Thread SEC_PROXY_RESPONSE_THREAD verification failed. ret = -65523
E/TC:0 0 ti_sci_get_response:101 Message receive failed (-65523)
E/TC:0 0 ti_sci_do_xfer:150 Failed to get response (-65523)
E/TC:0 0 k3_sec_proxy_verify_thread:108 Queue is busy
E/TC:0 0 k3_sec_proxy_recv:196 Thread SEC_PROXY_RESPONSE_THREAD verification failed. ret = -65523
E/TC:0 0 ti_sci_get_response:101 Message receive failed (-65523)
E/TC:0 0 ti_sci_do_xfer:150 Failed to get response (-65523)
E/TC:0 0 sa2ul_init:106 Could not change TRNG firewall owner
E/TC:0 0 call_initcalls:43 Initcall __text_start + 0x00070b28 failed
E/TC:0 0
E/TC:0 0 Core data-abort at address 0x14 (translation fault)
E/TC:0 0  esr 0x96000005  ttbr0 0x9e8a2000   ttbr1 0x00000000   cidr 0x0
E/TC:0 0  cpu #0          cpsr 0x600003c4
E/TC:0 0  x0  000000009e875000 x1  0000000000000000
E/TC:0 0  x2  0000000000000000 x3  0000000000000000
E/TC:0 0  x4  0000000000000050 x5  000000009e892d70
E/TC:0 0  x6  ffffffffffffffb0 x7  0000000000010cb0
E/TC:0 0  x8  0000000000010cb0 x9  000000009e892f80
E/TC:0 0  x10 000000009e882070 x11 0000000000000008
E/TC:0 0  x12 0000000000000000 x13 000000009e8a3e60
E/TC:0 0  x14 0000000000000000 x15 0000000000000000
E/TC:0 0  x16 000000009e81cb90 x17 0000000000000000
E/TC:0 0  x18 0000000000000000 x19 000000009e8a41e0
E/TC:0 0  x20 000000009e8a41e8 x21 000000009e875000
E/TC:0 0  x22 000000009e875000 x23 000000009e875f00
E/TC:0 0  x24 000000009e874dc0 x25 0000000000000000
E/TC:0 0  x26 0000000000000000 x27 0000000000000000
E/TC:0 0  x28 0000000000000000 x29 000000009e8a4170
E/TC:0 0  x30 000000009e817350 elr 000000009e817360
E/TC:0 0  sp_el0 000000009e8a4170
E/TC:0 0 TEE load address @ 0x9e800000
E/TC:0 0 Call stack:
E/TC:0 0  0x9e817360
E/TC:0 0  0x9e807ca0
E/TC:0 0  0x9e822530
E/TC:0 0  0x9e807e9c
E/TC:0 0 Panic 'unhandled pageable abort' at /usr/src/debug/optee-os/4.2.0+git/core/arch/arm/kernel/abort.c:582 <abort_handler>
E/TC:0 0 TEE load address @ 0x9e800000
E/TC:0 0 Call stack:
E/TC:0 0  0x9e80817c
E/TC:0 0  0x9e81eff4
E/TC:0 0  0x9e807884
E/TC:0 0  0x9e804a68

NOTICE: BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b87-dirty
NOTICE: BL31: Built : 16:09:05, Feb 9 2024
ERROR: Timeout waiting for thread SP_RESPONSE to fill
ERROR: Thread SP_RESPONSE verification failed (-60)
ERROR: Message receive failed (-60)
ERROR: Failed to get response (-60)
ERROR: Transfer send failed (-60)

Do you have any comment?

Thank you veyr much

  • Hi,

    and put it to the path of meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb to run mcu rtos

    1.Is this Yocto path? and Would you please confirm if you are using PROCESSOR-SDK-LINUX-J721s2 or PROCESSOR-SDK-RTOS-J721s2?

    2.Did you get any build error? and which free RTO example are you trying to use here?

    3. What boot flow are you using?

    Regards,

    Karthik

  • Dear Karthik

    1.yes, it is yocto path, use SDK Linux, but i build the fw under SDK-RTOS and put it to yocto source as a prebuild fw

    2.No any build error

    3. What do you mean about boot flow?

    Do you mean SPL/SBL? 

    For yocto arch, i think it boot with SPL mode

    Thank you 

  • HI Daniel,

    It seems that DM firmware is not running on the MCU1_0, that is the reason you are seeing these kind of logs.

    NOTICE: BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b87-dirty
    NOTICE: BL31: Built : 16:09:05, Feb 9 2024
    ERROR: Timeout waiting for thread SP_RESPONSE to fill
    ERROR: Thread SP_RESPONSE verification failed (-60)
    ERROR: Message receive failed (-60)
    ERROR: Failed to get response (-60)
    ERROR: Transfer send failed (-60)
    ERROR: Timeout waiting for thread SP_RESPONSE to fill
    ERROR: Thread SP_RESPONSE verification failed (-60)
    ERROR: Message receive failed (-60)
    ERROR: Failed to get response (-60)
    ERROR: Transfer send failed (-60)
    ERROR: Unable to query firmware capabilities (-60)

    Maker sure DM is running on the MCU1_O core.

    Regards
    Diwakar

  • Dear Diwakar

    i use the examle app of ipc_rtos_echo_test_freertos

    under pdk_j721s2_10_01_00_25\packages\ti\drv\ipc\examples\rtos

    if i use ipc_rtos_echo_testb_freertos, there are no this question. 

    why have this two result?

    Thank you very much

  • HI Daniel,

    SPL will not initialise the ATCM of R5 as this is initialising the BTCM we are keeping the reset vector to BTCM.

    That is the reason you have to use ipc_rtos_echo_testb_freertos DM binary instead of ipc_rtos_echo_test_freertos

    Regards
    Diwakar

  • Dear Diwakar

    I found other example have this "Timeout waiting..." issue

    Like UART_TestApp_freertos

    Does it mean these example have same case?

    How to check the example use ATCM  or not?

    Thank you very much

  • Dear Diwakar

    Another question,

    What fo you mean about "initialising the BTCM we are keeping the reset vector to BTCM"

    Do you mean we need to initial the BTCM if we use SPL mode?

    How to do "initialising the BTCM ..."?

    Any samole code about it?

    Thank you very much

  • Dear Diwakar

    I search all APP's xxx_freertos_mcu1_0_release.xer5f.map file

    most lof them show 

    "ENTRY POINT SYMBOL: "_freertosresetvectors"  address: 00000000"

    Do it it mean the FW is under ATCM and it can not runing at SPL mode?

    May i change it to BTCM  and runing on real device under freertos ?

    Thank you very much

  • Hi Daniel,

    You are using some random MCU1_0 test or example application images with Linux. All of the images you have tried so far are standalone unit-test example firmwares that could be tested in a stand-alone fashion like SBL + MCU1_0 application firmware image.

    The Linux boot using U-Boot and R5 SPL has specific requirements w.r.t the MCU1_0 firmware. The default Power-On-Reset for the MCU R5F core has the ATCM disabled and only BTCM enabled. The R5 SPL also runs on the MCU R5F core, and simply jumps to the entry-point from your MCU1_0 application.

    The MCU1_0 application firmware as such cannot use any contents in ATCM, and has to use an appropriate linker command file.

    regards

    Suman

  • Dear Suman

    Thank you for information that example firmwares can be use as SBL + MCU1_0 application firmware only.

    So, i think i need to change example to BTCM mode if i want to run it under "Linux boot using U-Boot and R5 SPL"

    Am I correct?

    Could the functionality of this example(ipc_rtos_echo_testb_freertos) be attributed to it being in BCTM mode?

    What are the key considerations for developing a BCTM mode firmware (FW) for MCU1_0?

    Thank you very much

  • Hi Daniel,

    So, i think i need to change example to BTCM mode if i want to run it under "Linux boot using U-Boot and R5 SPL"

    This is not the only requirement. The MCU1_0 application also needs to run the SciServer.

    Please see the 9.3. MCU1_0 Application Development with SYSFW section in the RTOS SDK documentation.

    Could the functionality of this example(ipc_rtos_echo_testb_freertos) be attributed to it being in BCTM mode?

    Yes, correct.

    What are the key considerations for developing a BCTM mode firmware (FW) for MCU1_0?

    This is primarily a linker difference.

    regards

    Suman

  • Does SciServer part is needed for SPL mode?

    Do you mean that i need to add SciServer relationship code?

    What other part need to add for BCTM?

    Could you provide a simple psuedo code to explain it. 

    Include linker design

    Thank you very much

  • Hi Daniel,

    Does SciServer part is needed for SPL mode?

    Yes, SciServer on MCU1_0 is needed for any system-level integrated boot. This is responsible for all the Device Management of various peripherals and Resource Management of SoC-wide resources.

    What other part need to add for BCTM?

    I am not sure what you are asking. 

    Could you provide a simple psuedo code to explain it. 

    Please look through the above documentation reference and the existing SDK examples. You can look at the following examples:

    1. sciserver_testapp: <PDK>/packages/ti/drv/sciclient/examples/sciserver_testapp

    This uses both ATCM and BTCM and just the SciServer code in MCU1_0

    2. ipc_echo_test: <PDK>/packages/ti/drv/ipc/examples/linux

    This example includes IPC in addition to the SciServer, and is intended for Linux. You have both the ATCM and BTCM versions here, which can be used with R5 SBL and R5 SPL respectively.

    This example also demonstrates the additional requirements for Linux like Resource Table etc.

    3.  ipc_rtos_echo_test: <PDK>/packages/ti/drv/ipc/examples/rtos

    This is the equivalent of #2, but for a RTOS-only environment.

    regards

    Suman

  • Dear Suman

    "What other part need to add for BCTM?"

    I mean is i would like to implement a example with BCTM for SPL mode.

    What should i add for it?

    What do you mean about "This uses both ATCM and BTCM and just the SciServer code in MCU1_0" for sciserver_testapp part?

    Do you mean that sciserver_testapp can run by ATCM or BTCM?

    Thank you veyr much

  • Hi Daniel,

    Can you please clarify what your overall motivation is here? Why do you want to run the FreeRTOS Task Switch test example with Linux?

    I mean is i would like to implement a example with BCTM for SPL mode.

    This is primarily linker cmd differences. Please compare the two linker command files used by ipc_echo_test and ipc_echo_testb examples.

    What do you mean about "This uses both ATCM and BTCM and just the SciServer code in MCU1_0" for sciserver_testapp part?

    Each R5F core has two L1 memories (called Tightly Coupled Memory or TCM) - ATCM and BTCM. They can appear at 0x0 and 0x41010000 locally to each R5F core.

    The SoC default has ATCM disabled by default, and these are enabled during the processor load time before releasing the reset of a processor. Given that R5 SPL does not perform a reset, ATCM remains disabled. So, you cannot link contents into it if wanting to use R5 SPL.

    The R5 SBL does support loading an application both with or w/o performing a reset. The ATCM is enabled in the case where a reset is performed providing maximum TCM memory to firmware.

    The sciserver_testapp firmware relies on ATCM being enabled (BTCM is also enabled), with the reset vectors linked into ATCM.

    regards

    Suman

  • Dear Suman

    "Can you please clarify what your overall motivation is here?"

    I would kike run freertos with some ADAS function and that can run CAN/IPC/SPIflash service and communication with A72(yocto linux) with IPC

    Therefore i need the freertos fw is BTCM under SPL mode

    What do you mean about following

    "The ATCM is enabled in the case where a reset is performed providing maximum TCM memory to firmware."

    Do you mean i can use max TCM under ATCM mode?

    How about it under BTCM?

    Thank you very much

  • Hi Daniel,

    I would kike run freertos with some ADAS function and that can run CAN/IPC/SPIflash service and communication with A72(yocto linux) with IPC

    The ipc_echo_testb_freertos example is already your starting point then. It is an IPC example running FreeRTOS. You need to additional drivers and code for your other functionalities.

    Do you mean i can use max TCM under ATCM mode?

    Yes, correct.

    What is the final bootloader you are going to use for your project? If you want your MCU1_0 firmware to leverage both ATCM and BTCM, then I recommend that you use the RTOS SBL (typically the preferred bootloader for Automotive products).

    regards

    Suman

  • Dear Suman

    The bootloader of our system is SPL. It seem be default usecase under yocto SW arch.

    Under this case, do you mean we can NOT use the max TCM?

    If i would like to use RTOS SBL  under yocto SW arch, what should i do ?

    Why you recommend that RTOS SBL?

    Thank you very much

  • Hi Daniel,

    The bootloader of our system is SPL. It seem be default usecase under yocto SW arch.

    Yes, the standard Linux SDK offering is to use all Linux open-source components.

    Under this case, do you mean we can NOT use the max TCM?

    Correct. The R5 SPL only performs a branch-only boot, so ATCM is not enabled on your MCU R5F.

    If i would like to use RTOS SBL  under yocto SW arch, what should i do ?

    We have support to boot Linux w/ SBL using the RTOS SDK build infrastructure only.

    Why you recommend that RTOS SBL?

    Linux R5 SPL is a generic bootloader, and has support for all bootmodes within the same boot-binary. This is a generic broad bootloader, compared to a RTOS SBL, which is usually a custom bootloader. This renders the RTOS SBL to be customized. You can also customize the R5 SPL as per your needs, but our SDK boot caters to the broad market w/ upstreamability of U-Boot, so is the standard U-Boot.

    What is your actual product?

    regards

    Suman

  • Dear Suman

    "What is your actual product?"

    We are developing an ADAS product

    Sofar, we are useing freeRTOS and plan to use AUTOSAR at future

    Does SPL mode be enough to use?

    Thank you 

  • Dear Suman

    Another question, does SPL mode have what kind of limitations (compare with SBL mode)

    For example, can not use  max TCM.(How many TCM size can be use under SPL mode)

    ...

    If we want to use SBL under yocto SW arch,

    What kind of change i need to do?

    Build with SDK with SBL tisbl.bin and app two image, right?

    Does it same path with the mcu dm-fw of tispl.bin?

    Thank uou very much

  • Hi Daniel,

    Does SPL mode be enough to use?

    Yes, you can still use the R5 SPL.

    In the end, it depends on your overall project needs/goals.

    regards

    Suman

  • Hi Daniel,

    Another question, does SPL mode have what kind of limitations (compare with SBL mode)

    I am sorry, but this discussion has really veered off from the original topic. Please open a new thread for the SPL vs SBL discussion referencing this thread.

    Do you still have any open questions on the original thread title topic?

    regards

    Suman

  • Dear Suman

    Yes, i can create another topic for SBL/SPL

    About origin  "SP_RESPONSE" issue,

    It was cause by SPL +ATCM FW, right?

    I need to add sciserver and use BCTM if i would like to keep at SPL mode.

    Right?

    Thank you very much

  • Hi Daniel,

    It was cause by SPL +ATCM FW, right?

    Yes.

    It is also a result of the lack of SciServer in the FreeRTOS Task Switch test example, which is a low-level OS testing example.

    Please try building your own ipc_echo_testb_freertos example and using it.

    regards

    Suman