TMS320F28P550SJ: Function calls inside a CLA task makes the CLA task not running

Part Number: TMS320F28P550SJ

Tool/software:

Hi,

On the code we're developing in a F28P550, we have a CLA task that is calling a function call but this task it's not executed when triggered. 

When the CLA task doesn't have a function call it's is executed as expected but by adding foo() the task is not executed. 

Here is a peudocode of the issue: 

uint16 task3Counter;
__attribute__((interrupt)) void Cla1Task3 ( void )
{
task3Counter ++;
}

This version works perfectly. 

uint16 task3Counter;

uint16 foo(uint16 argUI16)

{

    return argUI16 ++;

}



__attribute__((interrupt))  void Cla1Task3 ( void )
{
task3Counter = foo(task3Counter);

}

This does not work.

My perception of the issue is that is there's a flag missing or wrong (as I would expect the capability of using function call is there) but somehow I can't find the issue. Bellow I share the compiler and linker flags.

The compiler flags are:

-v28 -ml -mt --cla_support=cla0 --float_support=fpu32 --tmu_support=tmu1 --vcu_support=vcrc -O3 --include_path="C:/Workspace/git/ESC" --include_path="C:/Workspace/git/ESC/thirdparties/ti/F28P55x/device_support/common/include/" --include_path="C:/Workspace/git/ESC/thirdparties/ti/F28P55x/device_support/headers/include/" --include_path="C:/Workspace/git/ESC/thirdparties/ti/F28P55x/device/driverlib" --include_path="C:/TI/ccs2020/ccs/tools/compiler/ti-cgt-c2000_22.6.2.LTS/include" --advice:performance=all --define=REV_ID=1 --define=_FLASH --define=DEBUG -g --c++03 --diag_warning=225 --diag_wrap=off --display_error_number --verbose --gen_func_subsections=on --abi=eabi --cla_background_task=off --cla_signed_compare_workaround=on

The linker flags are: 

-z -m"proj.map" --heap_size=0x100 --stack_size=0x200 --warn_sections -i"C:/TI/ccs2020/ccs/tools/compiler/ti-cgt-c2000_22.6.2.LTS/lib" -i"C:/TI/ccs2020/ccs/tools/compiler/ti-cgt-c2000_22.6.2.LTS/include" --reread_libs --diag_wrap=off --display_error_number --xml_link_info="proj_linkInfo.xml" --rom_model

Thanks in advance for your support.

  • Hi Pedro,

    Function calls in CLA code can sometimes cause issues since the CLA uses the scratchpad as a "stack" and the space is usually more limited. In the errored case, can you check to see where the foo function is allocated in memory by searching for it in the map file? Could you also send your map file here + your linker cmd file so I can take a look?

    Best Regards,

    Delaney