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: SBL CANNOT BOOT DioApp Success

Part Number: TDA4VM

Hi Team,

When I use SBL + DioApp in PDK7.03, I found SBL can not boot DioApp (the mcal examples, BUILD_OS_TYPE = baremetal).

Could you give me some suggestion ?

This is the log from SBL (build with Skipped MCU1_0 reset):

Calling Sciclient_procBootRequestProcessor, ProcId 0x1...
Sciclient_procBootSetProcessorCfg...BBBBBB
Sciclient_procBootSetProcessorCfg, ProcId 0x1, EntryPoint 0x41ce3000...
Sciclient_pmSetModuleClkFreq, DevId 0xfa @ 1000
000000Hz.
..
Start Boot MCU1_CPU0_ID !
Copying first 128 bytes from app to MCU ATCM @ 0x0 for core 4
MCU1_1 evmEntry: 0xfffffffe
Calling Sciclient_procBootRequestProcessor, ProcId 0x2...
Sciclient_procBootSetProcessorCfg...BBBBBB
Skipping Sciclient_procBootSetProcessorCfg for ProcId 0x2, EntryPoint 0xfffffffe...
Start Boot MCU1_CPU1_ID !
Sciclient_procBootReleaseProcessor, ProcId 0x2...
Start the App - Branch to start of ATCM (0x0)!

Thank you!

  • Hi,

    I am able to run the dio_app from SDK7.3 on the EVM, below are the logs.

    1. Can you please try the image from the attachment? See if these work for you? Open the MCU UART 2nd instance on the board to view the logs.

    BOOT_dio_app.zip

    2. Can you also send me your build commands for application and SBL? Also do send me what files do you copy in the SD card.

    SBL Revision: 01.00.10.00 (May  5 2021 - 13:39:13)
    TIFS  ver: 21.1.1--v2021.01a (Terrific Lla
    Sample Application - STARTS !!!
    
    DIO MCAL Version Info
    ---------------------
    Vendor ID           : 44
    Module ID           : 120
    SW Major Version    : 1
    SW Minor Version    : 3
    SW Patch Version    : 2
    
    Test A. Write and Read Channel
    ------------------------------
    Channels written
    Channel read DIO_PinLevel[0] = 0
    Channel read DIO_PinLevel[1] = 1
    Channel read DIO_PinLevel[2] = 0
    DIO Service API Read-back Channel Succeeds !!!
    Main Domain Channels written
    Channel read DIO_PinLevel[0] = 0
    Channel read DIO_PinLevel[1] = 1
    Channel read DIO_PinLevel[2] = 0
    DIO Service API Read-back Channel Main Domain Succeeds !!!
    
    DIO Test A :Service API: Write/Read Channel completed
    
    Test B. Write and Read Channel Group
    ------------------------------------
    DIO Service Read/Write Channel Group Read-back Succeeds !!!
    
    DIO Test B : Service API : Write/Read Channel Group completed
    
    Test C. Write and Read Port
    ---------------------------
    DIO Service API Read-Back Port succeeds !!!
    DIO Service API Read-Back Port Main Domain succeeds !!!
    
    DIO Test C : Service API: Write/Read Port completed
    
    Test D. Flip Channel
    ----------------------
    Pin Value Before Flip: 0
    Pin Value After Flip: 1
    
    DIO Test D : Service API: Flip Channel completed
    Pin Value Before Flip: 1
    Pin Value After Flip: 0
    
    DIO Test D : Service API: Flip Channel Main Domain completed
    
    Test E. Dio_RegisterReadback
    ----------------------
    DIO register readback compare Passed!!
    DIO register readback compare Main Domain Passed!!
    
    DIO Test E : Service API: Register Read-back completed
    DIO Stack Usage: 1140 bytes
    
    ----------------------------------
    
    DioApp: Sample Application - Completes successfully !!!

    Regards,

    Karan

  • Hi Karan,

    1, As you say, I use your image, I still can not boot Dio:

    SBL Revision: 01.00.10.00 (May 5 2021 - 13:39:13)

    TIFS ver: 21.1.1--v2021.01a (Terrific Lla

    2, I use "make -j BOARD=j721e_evm CORE=mcu1_0 BUILD_PROFILE=release sbl_mmcsd_img" to build SBL;

    I use "make -s dio_app BOARD=j721e_evm SOC=j721e BUILD_PROFILE=release CORE=mcu1_0 BUILD_OS_TYPE=barametal" to build SBL;

    This is my image that copy to SD.

    mytest.rar

  • Hi,

    With your attached mytest folder, I am able to get expected output.

    SBL Revision: 01.00.10.00 (May 24 2021 - 14:19:57)
    TIFS  ver: 21.1.1--v2021.01a (Terrific Lla
    SCISERVER Board Configuration header population... PASSED
    Sciclient_setBoardConfigHeader... PASSED
    Efuse xlated: VD 2 to 800 mV (OppVid: 0x37, Slave:0x48, Res:0x0)
    Successfully set voltage to 800 mV for Slave:0x48, Res:0x0
    Initlialzing PLLs ...done.
    InitlialzingClocks ...done.
    Initlialzing DDR ...done.
    Initializing GTC ...done.
    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 4, 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 4
    Sciclient_procBootSetProcessorCfg update TCM enable/disable settings...
    Copying 0x40 bytes to 0x41ce3000
    Copying 0x600 bytes to 0x70040000
    Copying 0x338 bytes to 0x70040600
    Copying 0x318 bytes to 0x70040938
    Copying 0x2c0 bytes to 0x70040c50
    Copying 0x118 bytes to 0x70040f10
    Copying 0x13218 bytes to 0x97000000
    Copying 0xb060 bytes to 0x97013218
    Copying 0x429c bytes to 0x97023380
    Copying 0x1e08 bytes to 0x9702a480
    Copying 0x1900 bytes to 0x9702dc00
    Copying 0x1800 bytes to 0x9702f500
    Copying 0x1800 bytes to 0x97030d00
    Copying 0x200 bytes to 0x97034000
    Copying 0x200 bytes to 0x97034200
    Copying 0x720 bytes to 0x97034600
    Copying 0x2000 bytes to 0x97ffe000
    Setting entry point for core 4 @0x41ce3000
    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...
    Start Boot MCU1_0 and MCU1_1 in the SBL end !
    MCU1_0 evmEntry: 0x41ce3000
    Calling Sciclient_procBootRequestProcessor, ProcId 0x1...
    Sciclient_procBootSetProcessorCfg...BBBBBB
    Sciclient_procBootSetProcessorCfg, ProcId 0x1, EntryPoint 0x41ce3000...
    Sciclient_pmSetModuleClkFreq, DevId 0xfa @ 1000000000Hz...
    Start Boot MCU1_CPU0_ID !
    Copying first 128 bytes from app to MCU ATCM @ 0x0 for core 4
    MCU1_1 evmEntry: 0xfffffffe
    Calling Sciclient_procBootRequestProcessor, ProcId 0x2...
    Sciclient_procBootSetProcessorCfg...BBBBBB
    Skipping Sciclient_procBootSetProcessorCfg for ProcId 0x2, EntryPoint 0xfffffffe...
    Start Boot MCU1_CPU1_ID !
    Sciclient_procBootReleaseProcessor, ProcId 0x2...
    Start the App - Branch to start of ATCM (0x0)!
    Sample Application - STARTS !!!
    
    DIO MCAL Version Info
    ---------------------
    Vendor ID           : 44
    Module ID           : 120
    SW Major Version    : 1
    SW Minor Version    : 3
    SW Patch Version    : 2
    
    Test A. Write and Read Channel
    ------------------------------
    Channels written
    Channel read DIO_PinLevel[0] = 0
    Channel read DIO_PinLevel[1] = 1
    Channel read DIO_PinLevel[2] = 0
    DIO Service API Read-back Channel Succeeds !!!
    Main Domain Channels written
    Channel read DIO_PinLevel[0] = 0
    Channel read DIO_PinLevel[1] = 1
    Channel read DIO_PinLevel[2] = 0
    DIO Service API Read-back Channel Main Domain Succeeds !!!
    
    DIO Test A :Service API: Write/Read Channel completed
    
    Test B. Write and Read Channel Group
    ------------------------------------
    DIO Service Read/Write Channel Group Read-back Succeeds !!!
    
    DIO Test B : Service API : Write/Read Channel Group completed
    
    Test C. Write and Read Port
    ---------------------------
    DIO Service API Read-Back Port succeeds !!!
    DIO Service API Read-Back Port Main Domain succeeds !!!
    
    DIO Test C : Service API: Write/Read Port completed
    
    Test D. Flip Channel
    ----------------------
    Pin Value Before Flip: 0
    Pin Value After Flip: 1
    
    DIO Test D : Service API: Flip Channel completed
    Pin Value Before Flip: 1
    Pin Value After Flip: 0
    
    DIO Test D : Service API: Flip Channel Main Domain completed
    
    Test E. Dio_RegisterReadback
    ----------------------
    DIO register readback compare Passed!!
    DIO register readback compare Main Domain Passed!!
    
    DIO Test E : Service API: Register Read-back completed
    DIO Stack Usage: 1140 bytes
    
    ----------------------------------
    
    DioApp: Sample Application - Completes successfully !!!

    I open the 2nd UART on the J43.

    SBL Revision: 01.00.10.00 (May 5 2021 - 13:39:13)

    TIFS ver: 21.1.1--v2021.01a (Terrific Lla

    I see one issue with your log, your logs show May 5 2021 but the one you sent me was May 24 build for SBL.

    Can you check if you are indeed booting from MMCSD? Can you confirm you boot switch setting and match them with - https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/07_03_00_07/exports/docs/psdk_rtos/docs/user_guide/evm_setup_j721e.html#sd-boot-mode 

    Regards,

    Karan

  • Hello,

    The SBL May5 2021, this one is that you send me. May 24 is myself.

    Yeah, you can boot my test app but I can not. This is strange . I have checked my boot setting, it's OK. 

    And I also use mcusw for test, it can be boot by SBL, see logs below . I don't why this is OK but DioApp is failed.

    Can you send me the whole files that in your SD ? I try to replace every files in my SD and see what happens.

    And I found in the SDK build , the default instruction is Thumb.  This is OK? If I want to change to ARM instruction to build PDK and example, How can I build ?

     

    SBL Revision: 01.00.10.00 (May 24 2021 - 14:19:57)

    TIFS ver: 21.1.1--v2021.01a (Terrific Lla
    SCISERVER Board Configuration header population... PASSED
    Sciclient_setBoardConfigHeader... PASSED
    Efuse xlated: VD 2 to 800 mV (OppVid: 0x37, Slave:0x48, Res:0x0)
    Successfully set voltage to 800 mV for Slave:0x48, Res:0x0
    Initlialzing PLLs ...done.
    InitlialzingClocks ...done.
    Initlialzing DDR ...
    done.
    Initializing GTC ...done.
    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 Scicli
    ent_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 4, 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 4
    Sciclient_procBootSetProcessorCfg update TCM enable/disable settings...
    Copying 0x40 bytes to 0x41010000
    Copying 0xdb0 bytes to 0x41010100
    Copying 0x28 bytes to 0x4101
    0eb0
    Copying 0x10 bytes to 0x41010ed8
    Copying 0x1f630 bytes to 0x41ca5260

    Copying 0x429c bytes to 0x41cc8f80
    Copying 0x8e8 bytes to 0x41cce320
    Copying 0x2000 bytes to 0x41ce0000
    Copying 0xf200 bytes to 0x41ce2100
    Copying 0x1900 bytes to 0x41cf1300
    Copying 0x1400 bytes to 0x41cf2c00
    Copying 0x1400 bytes to 0x41cf4000
    Copying 0x1400 bytes to 0x41cf5400
    Copying 0x1400 bytes to 0x41cf6800
    Copying 0x200 bytes to 0x41cf8600
    Copying 0x200 bytes to 0x41cf8800
    Copying 0x200 bytes to 0x41cf8a00
    Setting entry point for core 4 @0x41010000
    Sciclient_procBootReleasePr
    ocessor, 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...
    Scicli
    ent_procBootReleaseProcessor, ProcId 0x30...
    Start Boot MCU1_0 and MCU1_1 in the SBL end !
    MCU1_0 evmEntry: 0x41010000
    Calling Sciclient_procBootRequestProcessor, ProcId 0x1...
    Sciclient_procBootSetProcessorCfg...BBBBBB
    Sciclient_procBootSetProcessorCfg, ProcId 0x1, EntryPoint 0x41010000...
    Sciclient_pmSetModuleClkFreq, DevId 0xfa @ 1000000000Hz...
    Start Boot MCU1_CPU0_ID !
    Copying first 128 bytes from app to MCU ATCM @ 0x0 for core 4
    MCU1_1 evmEntry: 0xfffffffe
    Calling Sciclient_pr
    ocBootRequestProcessor, ProcId 0x2...
    Sciclient_procBootSetProcessorCfg...BBBBBB
    Skipping Sciclient_procBootSetProcessorCfg for ProcId 0x2, EntryPoint 0xfffffffe...
    Start Boot MCU1_CPU1_ID !
    Sciclient_procBootReleaseProcessor, ProcId 0x2...
    Start the App - Branch to start of ATCM (0x0)!


    Starting Sciserver..... PASSED

    MCU R5F App started at 0 usecs

  • Hi,

    The three images I had sent you were the only images in my SD card.

    Default SDK settings are thumb mode to give more compact code and thus giving better cache performance, changing that will not be a trivial change and builds might break.

    Are you able to boot other apps and just not the Dio app?

    Regards,

    Karan

  • Hi Karan,

    Yeah, I can boot MCUSW, and it works OK.

    I try to find the differences, Dioapplication use DDR memory.

    Not  sure is this the reason, do you have some suggestion to debug with CCS ?

    Thank you!

  • Hi,

    You can do a couple of things:

    1. Add a breakpoint in SBL before jumping to the application. By breakpoint I mean, add a while(some_volatile_variable) loop.

    2. Add a breakpoint in the Dio app at the first instatement in main().

    After doing one of the two, connect CCS (without GEL files) and connect to MCU R5F. Then load symbols and see what state is the MCU R5F in. Also you can open memory browser and see if DDR is accessible or not. All this will work if MCU R5F is not crashed already.

    See https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1003421/faq-tda4vm-debugging-remote-core-firmware-using-ccs for some more details. The FAQ focuses on how to debug firmware when core is loaded from u-boot or SPL but the above mentioned details are also mentioned in the FAQ, on how to add the while() loop.

    Regards,

    Karan

  • Hi Karan,

    OK, I have a try. Thanks.

    You mentioned "you can open memory browser and see if DDR is accessible or not", which memory register I can check If I config sucess or not ?

    Thank you

  • Hi,

    You can just look at the DDR region you are using for the application. You would have that mentioned in the Linker file or Map file. Let me know if you need help in identifying it from the linker/map file.

    Regards,

    Karan

  • Hi Karan,

    Great, need your help is better.

    Thank you

  • Hi,

    I just looked at the mcusw/binary/dio_app/bin/j721e_evm/dio_app_mcu1_0_release.xer5f.map to see the DDR region being used. There is a region by the name DDR0_MCU1_0 which starts at 0x97000000, you can put that address in the memory browser.

    But add the while() loop first in the app and recompile.

    Regards,

    Karan

  • Hi Karan,

    I debug the dio_app code, I found it crash in __mpu_init function.

    Below log.docx file is the detail information that I save from the step by step run.

    Not sure why this happened . Wait for your response.

    j721e_evm.rar is the bin and map.

    Other question:

    What's the mean for veneer and trampoline, and what's the difference between them  ?

    Thank you. 

    j721e_evm.rar

    0385.Log.docx

  • Hi,

    Some re-confirmations:

    BOOT_dio_app.zip

    1. Can you please re-confirm that these SD card binaries did not work for you?

    2. You are running this on the TDA4 EVM and not a custom board?

    3. What is the revision of your EVM and the SoC?

    Regards,

    Karan

  • Hi Karan,

    Thank you for your support. I slove this issue. It's the DDR issue.

    Thank you again.

  • Hi,

    Thanks for the confirmation.

    Regards,

    Karan