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.

AWR2944: AWR2944

Part Number: AWR2944

Hi all,

Regarding the CCM module in SDL, I have three questions:

1. Does this module initialize during system startup?

2. Once this module initializes during startup, will it run continuously in the background and perform ongoing checks?

3. why is there no information about CCM in AWR294x Technical Reference Manual ?

Best Regards,
Shrooq ABDELBARY

  • Dear Shrooq - 

    Thanks for the post and welcome to E2E! 

    The Compute Compare Module (CCM) is the R5F sub-system’s implementation for the lockstep error detection logic. The R5F sub-system, when bootstrapped to lockstep mode, has a logic that compares the outputs of the two cores and asserts an interrupt whenever an error is detected. There is also a logic to test the comparison logic.

    The documentation for the CCM is here (where you have installed the SDK in the default location on your hard drive): C:/ti/mcu_plus_sdk_awr294x_08_06_00_19/docs/api_guide_awr294x/SDL_CCM_PAGE.html 

  • Hello Josh,

    ++

    1- You still did not answer my question when I have to call these tests? Also did the lockstep Run in background by default? 

    2- where Can I Find the Module itself in the datasheet ? not in SDL User guide.

    Thanks,

    BR, 

  • Dear Shrooq - 

    The VIM section of the AWR2944 TRM covers this, the module is built into the CPU core. R5F TRM call is a VIC, I think the VIM we made addresses any shortcomings that have been found with the VIC. See: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1020145/vim 

    Lockstep is what is supported by the AWR2944, reference: https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1222293/awr2944-quick-lockstep-question 

  • Hello Josh,

    1- I noticed that in CCM module you Handle ESM inside the module itself which is kind of a strange thing to make a fixed action if there are a failure happened in CCM_Test.

    2- I need more declaration of when i need to monitor on the CCM_test as i did not get this info from the links you have provided, i mean here in startup or cyclic in background ?

    Thanks,

    BR, 

  • Dear Shrooq - 

    Please see the SDK at C:/ti/mmwave_mcuplus_sdk_04_04_01_02/mcu_plus_sdk_awr294x_09_00_00_15/docs/api_guide_awr294x/SDL_CCM_PAGE.html for usage.

  • Hello Josh,

    Referring to the SDK manual and CCM examples in the SDL, I need to confirm my understanding of how the CCM module operates. When I call SDL_CCM_init() , does the software automatically activate the CPU compare block, VIM, and inactivity monitoring?

    Thanks,

    BR, 

  • Shrooq - here I will re-assign to SW team to assist you on these. Please allow at least one day for a response from them. 

  • Hi Shrooq,

    Initially the device or ARM core (R5) is in lockstep mode. This can be verified by checking the CCMKEYR1 register (field MKEY). Based on the settings in this field the mode can be changed for lockstep operation. For example, one mode is the self-test of the lockstep, then there is an error injection mode etc. 

     When I call SDL_CCM_init() , does the software automatically activate the CPU compare block, VIM, and inactivity monitoring?

    Yes, if you check the SDL code for CCM it will just write 0 in the MKEY fields for all the 3 components as mentioned above. By default, also the value is zero. So, for normal operation all 3 are by default enabled.

    Thanks,

    Pradipta.

  • Hi Pradipta,

    Thanks for fast response,

    To confirm my understanding of the CCM module's error handling, I have a question regarding the behavior of injected errors. In the SDL_CCM_init API, line 409, the SDL_ESM_registerCCMCallback function seems to handle self-test errors generated by the CCM module . when I intentionally inject errors using the 'inject error mode', I'm unsure which callback function will catch and handle these errors:

    The callback function implemented within the sdl_ccm.c file itself?
    A custom callback function that I implement within my application?
    Could you please clarify which case scenario applies, or is there another mechanism involved?

    Thanks,

    BR,

  • Hi,

    Please find my comments below. 

    To confirm my understanding of the CCM module's error handling, I have a question regarding the behavior of injected errors. In the SDL_CCM_init API, line 409, the SDL_ESM_registerCCMCallback function seems to handle self-test errors generated by the CCM module . when I intentionally inject errors using the 'inject error mode', I'm unsure which callback function will catch and handle these errors:

    The same callback function will handle all errors.

    The callback function implemented within the sdl_ccm.c file itself?
    A custom callback function that I implement within my application?
    Could you please clarify which case scenario applies, or is there another mechanism involved?

    If you want, you can define your custom call back function also. But since the SDL code is using internal flags as well you will need to call the TI implemented call back function in your custom callback. The design for SDL was done to make it easier for user in the sense that you call one test API, and you get the complete result for the self-tests. Therein the user will not need to write much supporting code for the SDL. 

    Thanks,

    Pradipta.

  • Hi Paradipta,

    In response to your second question, which asked whether I could create my own callback function and call the TI callback function inside of it, I believe that I cannot since the ESM Confg within the module is set up to call the TI callback function, and I am unable to modify that.


    Kindly inform us if there is another way I may call my own callback function instead of using TI's callback function.

    Thanks

    BR,

  • Hi,

    In response to your second question, which asked whether I could create my own callback function and call the TI callback function inside of it, I believe that I cannot since the ESM Confg within the module is set up to call the TI callback function, and I am unable to modify that.

    In the function CCM_TEST_init() we call the SDL_ESM_init() function. One of the arguments passed to this is the name of the callback function. Here you can place your custom function as well. This can be modified. 

    Thanks,

    Pradipta.

  • Hi Paradipta,

    Within the sdl_ccm.c file, a static configuration for (ESM) exists. This configuration is likely used by the SDL_CCM_init API when it calls the SDL_ESM_registerCCMCallback function.I'm concerned about a potential conflict. Specifically, I observed that commenting out the SDL_ESM_registerCCMCallback call in the API led to the execution of a custom callback function instead. Could you please clarify why this happens and how to effectively manage these different callback mechanisms?

    Thanks,

    Shrooq ABDELBARY

  • Hi Shrooq,

    In the SDL_ESM_init() you can provide your custom function as a callback function. Did you try this? Are you observing any issues with this?If yes, can you share your error screen shots.

    Specifically, I observed that commenting out the SDL_ESM_registerCCMCallback call in the API led to the execution of a custom callback function instead.

    I will need to run this experiment at the bench to observe this behavior. Can you let know which function you registered as callback in the ESM init? As per my understanding if the default callback is commented out you should observe error. 

    Thanks,

    Pradipta.