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.

TMS320F28377S: CLA does not stop executing after Task, variables "changed" do not change.

Part Number: TMS320F28377S

Hello. First of all, I think I'm having a similar issue to this thread, but their solution does not seem to help me.

So, information about my project. I'll try to be as thorough as I can.

Here is how my Linker CMD file is setup.

Based on the below table 6-1 from the F28377S datasheet section 6.3.1, I should be in the access range for the CLA.

Here is a relevant portion of my main loop:

and the two functions CLA_configClaMemory and CLA_initCpu1Cla1

I wasn't originally initializing the RAM blocks, but figured I'd try that to see if it makes a difference.

I also followed along with the CLA Hands-on workshop trying to get rid of the access violation issues.

Here's a look at my code, relevant portions of header:

Relevant portions of my .c file

Relevant portions of my .cla file

One thing I have noticed is that I don't seem to be stopping at the __mdebugstop now that I'm initializing the RAM, whereas it was happening before. I've also tried the function with and without the asm(" MSTOP") and it doesn't seem to make a difference.

Looking at my map, it seems like things are where they should be. I'm aware my Prog RAM is quite large even though I'm barely using any of it right now. I've commented out the vast majority of my program code to work on this (supposedly) simple issue. 

Now, with that comprehensive look at how my code is structured, we can look at the issues I face. When running without RAM initialization, I almost immediately pass into illegal address space, bypassing the __mdebugstop entirely. Same thing happens when running with RAM initialization.

Something else I've noticed when creating these Screenshots is that there's a register MMEMCFG on the CLA that doesn't appear to be accessible to the C28 nor the compiler. It also appears to be undocumented in Rev R of the TRM and datasheet. I'm not sure how to edit these. I tried a similar solution to this (I know it's for a different processor, thought I'd try it anyway) and no dice.

  • Hi,

    First, you are initializing the RAM after loading the code to it. Therefore, your code no longer resides in the CLA Program RAM.

    Second, you are loading to flash so you need to have _FLASH defined in your project so that the two memcpy() function calls are called; one for .TI.ramfunc and the other for the CLA1Prog section.

    Please remove the initialization of the LS memories and only conduct this for the msgRAMs and also make sure you have _FLASH defined for the memcpy() functions.

    Regards,
    sal