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.

CCS12.5 GEL Defaults To Dual Core Mode

Other Parts Discussed in Thread: MCU-PLUS-SDK-AM263X, AM2634, AM2632

Hello,

A program which runs fine in DevBoot mode using CCS12.4 and MCU-PLUS-SDK-AM263X does not run using CCS12.5. The program uses two cores but it is not dual core. It uses R5_0 and R5_2 with R5_1 and R5_3 being lockstep cores respectively.

My laptop was recently re-imaged and has box fresh installations of CCS12.4 and CCS12.5. I have not edited any GEL files as is sometimes suggested in the AM263x MCU-SDK help.

I compared the Console outputs of 12.4 and 12.5 and see the following differences. This seems to be the smoking gun but remains to be seen if this is the root cause.

I checked the release notes for 12.5 and there is no mention of this change of default behaviour. I think the default GEL behaviour should be lockstep because that is the default mode of each CPU cluster.

Just FYI, in both the working (12.4) and not working (12.5) conditions I used the same compiler from 12.5 (3.2.0.LTS) such that the program was identical in both cases. The difference in behaviour cannot be attributed to my program.

  • It seems the new function AM263x_Check_supported_mode_jtagID() in OnTargetConnect() returns 1 in CCS12.5 instead of 0 seen previously. Hard coding 'mode' to 0 allows my program to run:

    This brings into question how the intended mode is detected. The function AM263x_Check_supported_mode_jtagID() just checks if lockstep is supported by the device, not whether the project is intending to use lockstep or dual core.

    I'm not very comfortable changing the GEL files to suit my project. For one thing, it is not portable in the project.

    Please can you work out a way to set the mode based on the debug configuration. For example, here I am clearly not intending to load any program to R5_1 and R5_3 so it's a safe bet I want lockstep mode:

  • Hi Kier,

    The jtagID of all AM2634 platforms is 0x411x, and AM2634 devices support both lock-step and dual-core modes, and dual-core mode is selected in the GEL file. 

    You can switch to lock-step mode using the GEL hotmenus in CCS-script. 

    Please can you work out a way to set the mode based on the debug configuration. For example, here I am clearly not intending to load any program to R5_1 and R5_3 so it's a safe bet I want lockstep mode:

    I will submit a request.

  • Many thanks for the reply.

    The jtagID of all AM2634 platforms is 0x411x, and AM2634 devices support both lock-step and dual-core modes

    Doesn't the AM2632 support both modes? The jtagID of the AM2632 is 0x410x so the function AM263x_Check_supported_mode_jtagID() will return 0 for that device. My understanding is that AM2632 supports both modes in the same way AM2634 does. Is that correct? If I am right, the function AM263x_Check_supported_mode_jtagID() in AM263x.gel doesn't work consistently across the SoC family.

    In any case, like I said, the modes supported by the device is nothing to do with the user's intended mode. The function AM263x_Check_supported_mode_jtagID() should be replaced by a different function. For example Check_users_debug_configuration_mode().

    dual-core mode is selected in the GEL file.

    And therein lies the problem. Why change that in 12.5? The cluster default is lock-step and most of the example projects use only R5_0 so lockstep is implied in these cases too. Unless it can be justified, it looks like an error from here.

    Please change it back in 12.6 to lockstep as the default and perhaps avoid using AM263x_Check_supported_mode() functions on OnTargetConnect(). It serves no purpose.

    You can switch to lock-step mode using the GEL hotmenus in CCS-script. 

    I loaded the example project hello_world_am263x-cc_r5fss0-0_nortos_ti-arm-clang, clicked on the Configure_Lockstep_mode...

    It gives an error:

    I will submit a request.

    Thank you very much. Please let me know the JIRA issue link.

    If we update to CCS12.5 today, I will have to email my colleagues to tell them that in order to debug our project, they need to first edit a file in the compiler toolchain that is not under any sort of control. It's not a great way to develop anything.

  • Doesn't the AM2632 support both modes?

    AM2632 supports lock-step mode only. 

    Please change it back in 12.6 to lockstep as the default and perhaps avoid using AM263x_Check_supported_mode() functions on OnTargetConnect().

    There are 4 cores and 2 clusters on AM2634 device. The cluster can be configured as lock-step or dual-core, so there are 4 combinations. But only one of them can be selected in the gel file. Customer can switch the mode anytime by using the CCS scripts or by modifying the GEL (to be default mode). I don't think it's better idea to switch back.

    Lockstep to dual core switch can be programmed only once, and cannot be reprogrammed until the device's next power on reset cycle.