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.

CCS/MSP430FR5994: Error in compiling CTPL projects

Part Number: MSP430FR5994
Other Parts Discussed in Thread: MSP-EXP430FR5994

Tool/software: Code Composer Studio

Hello,

Compiling any CTPL project in CCS 10 throws symbols undefined error in ctpl_msp430fr5994.c file. See attached image at the end for the list of symbols undefined.

I checked the msp430fr5994.h file in my CCS install dir . These port names are undefined. Only PORTA, PORTJ and PORT1 is defined in the header file. 

I followed the instruction to import an example project from FRAM utilities and also to create an empty CTPL project. The same error persists. How should I proceed?

There is also an error in ctpl_low_level.asm. Not sure exactly where the error is because it does not show up the error description.

Thanks,
Archies

  • This looks suspiciously like the problem reported over here:

    https://e2e.ti.com/support/tools/ccs/f/81/p/945082/3491761

    Summary is that msp430fr5994.h is missing a few symbols of the form 

    __MSP430_HAS_PORT2_R__ and  __MSP430_BASEADDRESS_PORTB_R__

    I knew these were used by driverlib, but as you point out the BASE symbols are (also) used by CTPL.

    There's a suggested workaround (just add those symbols) over there. TI says there's a fix due in "Q4", but the other day someone here tried Check for Updates and didn't get anything.

  • Thanks. I copy pasted the DIO Registers definition form an older version of header file.
    My CTPL projects are still not compiling. I get the following error, which does not necessarily point the exact location of undefined symbol just the file.

    3 errors: Description    Resource    Path    Location    Type
    [E0300] The following symbols are undefined:    ctpl_low_level.asm    /ctpl_ex4_adc12_b_monitor_msp-exp430fr5994/fram-utilities/ctpl         C/C++ Problem

    gmake: *** [fram-utilities/ctpl/ctpl_low_level.obj] Error 1    ctpl_ex4_adc12_b_monitor_msp-exp430fr5994             C/C++ Problem

    gmake: Target 'all' not remade because of errors.    ctpl_ex4_adc12_b_monitor_msp-exp430fr5994             C/C++ Problem

    This error seems to be in ctpl_low_level.asm. CCS is not pointing to the exact line in the assembly file.

  • You're probably looking at the Problems tab. Switch to the Console tab and scroll back.

    I just tried this, and DMA0CTL_L shows up as undefined. It's used in "ctpl_low_level_macros.asm". That symbol indeed doesn't appear in my msp430fr5994.h file, though it does appear in my msp430fr5994.cmd (linker) file. 

    The odd thing is that I'm running CCS v8, so it's not obviously a version conflict. (I also haven't tried this for some years.)

    Can you check to see if this is the symbol your (CCS v10) assembly is encountering? I'll see if I can figure out the simplest way to get around this.

    [Edit: Fixed typo]

  • I just added this to my msp430fr5994.h, and it built. I expect it will work correctly, but I don't have a test case at hand so keep an eye on it.

    > SFR_8BIT(DMA0CTL_L); // BMC low byte of DMA0CTL (0x510)

  • Yes, I am getting the same error:
    >> Compilation failure
    fram-utilities/ctpl/subdir_rules.mk:16: recipe for target 'fram-utilities/ctpl/ctpl_low_level.obj' failed
    "../fram-utilities/ctpl/ctpl_low_level.asm", ERROR!   at EOF: [E0300] The following symbols are undefined:
      DMA0CTL_L

  • Bruce, Thank you for helping identifying the error.

    I found a solution in another e2e post:

    CCS/MSP430FR5994: DMA0CTL_L doesn't define in msp430.h - MSP low-power microcontroller forum - MSP low...

    e2e.ti.com
    Part Number: MSP430FR5994 Tool/software: Code Composer Studio Hi everyone, Recently, I imported CTPL module to my project, but I found that it always fails to

    My CTPL project builds without errors now.

  • Putting it in the .h file (as above) has the advantage of catching any other stray references, but evidently there aren't any.

    Reading the comments on those lines, I suspect they were actually intended to clear DMACTL0_L (trigger source register) -- which also isn't declared -- though after reset that's probably superfluous.

    Anyway, I'm glad you have a solution.

**Attention** This is a public forum