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.

TMDS64EVM: Data verification error M4F

Part Number: TMDS64EVM

Hi,

I am using the TMDS64EVM board and testing a custom application written in C++. When loading the application through CSS it works fine in the R5s, but in the M4F processor I get a Data verification error on address 0x00014A20. What I noticed is that modifying the entry .ARM.exidx in the linker file changes the address error. 

How can I solve this?

Thanks.

  • Thomas can you share the linker file or the part of linker file for us to understand the problem better. If sharing the sample application is easy please do.

    please also specify your compiler version and your development environment.

    Regards

    Anshu

  • Hi Anshu,

    thanks for the reply.

    This is the part of the linker file needed for C++ projects, it's the same linker file used for the hello_world.cpp project. The sdk I am using is mcu_plus_sdk_am64x_08_05_00_24.

    My IDE is CCS version 12.3 and the compiler is TI Arm Clang Compiler 2.1.2.LTS and I tried using both freertos and nortos on the M4.

    The problem seems to be the use of C++ classes.

    Regards 

    Thomas

  • Hello Thomas,

    Sorry for the delayed reply since Anshu was busy with other work.

    I have assigned this thread to Tushar. You may get a reply in one or two days.

    Regards,

    S.Anil.

  • Hi Thomas,

    I am using the TMDS64EVM board and testing a custom application written in C++. When loading the application through CSS it works fine in the R5s, but in the M4F processor I get a Data verification error on address 0x00014A20. What I noticed is that modifying the entry .ARM.exidx in the linker file changes the address error. 

    Can you please confirm for your custom application, the linker.cmd file and example.syscfg file are not same for both R5F and M4F processor ?

    It would be helpful if you can share both the linker.cmd and example.syscfg file of your application for both R5F and M4F processor.

    Thanks & Regards,

    Tushar

  • Hi Tushar,

    I managed to make the application work on the M4 as well, by flashing the application directly on the processor, but it doesn't work if I try to load it from CCS.

    Do you have any suggestion to make it work, to make the debugging process faster?

    Regards

    Thomas

  • Hi Thomas,

    Thanks for the notes. 

    I managed to make the application work on the M4 as well, by flashing the application directly on the processor,

    Can you please confirm after flashing, is it working as expected ?

    but it doesn't work if I try to load it from CCS.

    Can you please tell what error are you facing while loading it to CCS? It would be better if you can share screenshot/logs of the error.

    Regards,

    Tushar

  • Hi Tushar,

    Sorry for the delay in the response.

    I confirm that after flashing directly the executable on the processor it works as expected.

    The error message just says: "A data verification error occurred. File load failed."
    And in the logs I have the following error:
    "BLAZAR_Cortex_M4F_0: File Loader: Verification failed: Values at address 0x00015F01 do not match Please verify target memory and memory map."

    I read that it should be solvable with GEL files; in that case, is there a premade GEL file for the M4 processor?

    Also I wanted to ask another question. If I want to load a firmware through Linux on the A53 on another processor, what kind of format should the firmware have and can I get if from the standard makefile?

    Regards 

    Thomas

  • Hi Thomas,

    Thank you for your reply.

    The error message just says: "A data verification error occurred. File load failed."
    And in the logs I have the following error:
    "BLAZAR_Cortex_M4F_0: File Loader: Verification failed: Values at address 0x00015F01 do not match Please verify target memory and memory map."

    Can you please share the .map file of your project? It would be helpful to debug the issue.

    If I want to load a firmware through Linux on the A53 on another processor

    You can follow the steps mentioned in Linux Academy for Booting Remote Cores. Please refer Booting Remote Cores

    If you face any issues to follow the steps mentioned above, please let me know.

    what kind of format should the firmware have and can I get if from the standard makefile?

    In order to launch the application from remote cores, IPC needs to be added to the application.

    For more info please refer Application Development on Remote Cores.

    Regards, 

    Tushar 

  • Hi Tushar,

    Thank you for the links for the Linux part.

    This is the .map file for the M4.

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    ******************************************************************************
    TI ARM Clang Linker Unix v2.1.2
    ******************************************************************************
    >> Linked Sun Jul 16 16:11:35 2023
    ENTRY POINT SYMBOL: "_c_int00" address: 00008a67
    MEMORY CONFIGURATION
    name origin length used unused attr fill
    ---------------------- -------- --------- -------- -------- ---- --------
    M4F_VECS 00000000 00000200 00000140 000000c0 RWIX
    M4F_IRAM 00000200 0002fe00 00015d08 0001a0f8 RWIX
    M4F_DRAM 00030000 00010000 00009630 000069d0 RWIX
    USER_SHM_MEM 701d0000 00000080 00000000 00000080 RWIX
    LOG_SHM_MEM 701d0080 00003f80 00003800 00000780 RWIX
    IPC_VRING_MEM 701d4000 0000c000 000099c0 00002640 RWIX
    SEGMENT ALLOCATION MAP
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    This is the linker.cmd.

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /* make sure below retain is there in your linker command file, it keeps the vector table in the final binary */
    --retain="*(.vectors)"
    /* This is the stack that is used by code running within main()
    * In case of NORTOS,
    * - This means all the code outside of ISR uses this stack
    * In case of FreeRTOS
    * - This means all the code until vTaskStartScheduler() is called in main()
    * uses this stack.
    * - After vTaskStartScheduler() each task created in FreeRTOS has its own stack
    */
    --stack_size=16384
    /* This is the heap size for malloc() API in NORTOS and FreeRTOS
    * This is also the heap used by pvPortMalloc in FreeRTOS
    */
    --heap_size=32768
    SECTIONS
    {
    /* This has the M4F entry point and vector table, this MUST be at 0x0 */
    .vectors:{} palign(8) > M4F_VECS
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Regards,

    Thomas

  • Hello Thomas,

    Could you please try the following steps & see if you are able to load and run the M4F core application through CCS.

    • Change the initialization of SP in startup code (_c_int00) of M4F core, defined in ${MCU+_SDK_PATH}/source/kernel/nortos/dpl/m4/boot_armv7m.c, as follows:
      Fullscreen
      1
      2
      3
      /* Initialize the stack pointer */
      register char* stack_ptr = (char*)&__STACK_END - sizeof(uint32_t*);
      __asm volatile ("MSR msp, %0" : : "r" (stack_ptr) : );
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    • Rebuild the libraries for the right profile (release or debug) as follows:
      Fullscreen
      1
      ${MAKE} -s libs PROFILE={release|debug}
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    • Rebuild the example.

    Following the above steps, you should be able to run the M4F application through CCS. Let me know if this works!

    Regards,

    Prashant

  • Hi Prashant,

    I tried the steps you said, but I still get the same error.

    Regards,

    Thomas

  • Hello Thomas,

    Actually, I also see the same behaviour. I am getting in touch with the CCS experts to understand what's going on. Till I have an answer, you can disable the CCS verification option to get away with the verification error.

    To disable the CCS verification option, please follow the below steps:

    • Connect to the M4F core.
    • Right click on the M4F core & click "Open GEL Files View" as shown
    • Choose the No Verification option as shown below
    • Load the application.

    Following the above steps, CCS should be able to load the application and run the same.

    Regards,

    Prashant

  • Hello Prashant,

    Thank you for the response, I confirm you that those steps solved the problem.

    Regards,

    Thomas