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.

MSP430FR5969: Getting errors while building WISP 5 project

Part Number: MSP430FR5969


Hi,

I'm trying to build the Wireless Identification and Sensing Platform (WISP) 5 code (https://github.com/wisp/wisp5) using CCS 10.4 but I'm getting many errors, please see the images below. One of the errors "[E0300] Redefinition of structure tag not allowed" is repeated several times. There is a thread (https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1008810/msp430fr5969-msp430fr5969-issues-with-assembly-files) in the same forum which discussed a similar issue about building the WISP project in CCS but it did not mention how the issue can be resolved.  Any advice and help would be much appreciated. 

Thank you

  • [I don't know the answer. I was able to find out some things by setting "Build Settings->Build->Compiler->Advanced->Assembler Options->Generate Listing File".]

    The assembler is objecting to tags "__timer" and "__mq", which are incomplete structure types declared in "sys/_types.h". (If I remove them the build succeeds. Since this is a system-wide include file, this is not appropriate as a fix, though I think those symbols are rarely used.)

    It appears that sys/_types.h is being included twice, but the idempotency header isn't stopping the second inclusion, since I can see two '.define "1",_SYS__TYPES_H_ ' lines. I suspect the key to this is in the CCS asm430 UG (SLAU131X) p. 89 "...the C/C++ environment created by one .cdecls is not inherited by a later .cdecls; the C/C++ environment starts new for each .cdecls."; sys/__types.h is being included by two separate .cdecls.

    So how did this ever work? I noticed that the (github) project file requests C compiler "TI v4.3.3", which sounds pretty old -- I'm using "TI v18.12.4LTS" (CCSv9.3). Over in the other thread, Dennis succeeded, and I'm guessing he was using a more up-to-date compiler than I am. It may be that older CCS versions and newer versions don't declare those symbols, or .cdecls behavior was different.

    It seems as though your options  at this moment are:

    1) Try a much older CCS version (could be difficult to find) or a much newer one.

    2) Remove the __timer and __mq declarations from sys/_types.h. [As a Responsible Adult I can't recommend this, but if you did this to get your project going again I wouldn't know.]

    Maybe someone in the CCS Forum has more insight?

    [Edit: Fixed typo.]

  • This appears to match Issue EXT_EP-6927, which seems to have been fixed in the C2000 compiler. There's also:

    Workaround: Include headers sharing definitions in either a single .cdecls clause: .cdecls C, LIST %{ #include "head...

  • Thank you Bruce for your advice and help. First, I'll try to install the older CCS version, probably version 6, to see if it works. it seems that the older CCS versions are still available for download, https://software-dl.ti.com/ccs/esd/documents/ccs_downloads.html

**Attention** This is a public forum