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.

Unresolved symbol after migration to CCS 6.2.0

Other Parts Discussed in Thread: TM4C123GH6PGE, TM4C1294NCPDT

After migration of my CCS project to my new developing machine (project started 4 year ago), installation of updated compiler and TivaWave libraries, the symbol ROM_ADCSequenceConfigure remains undefined.

This happens because the rom.h file does not define the symbol for my processor (I have a TARGET_IS_BLIZZARD_RB1 macro defined, can't remeber who set that variable, the processor code is TM4C123GH6PGE). On old platform the code was compiling. Below extract from my current rom.h file. Why the symbol is not defined anymore for TM4C123?

Sincerely,

#if defined(TARGET_IS_TM4C129_RA0) || \
defined(TARGET_IS_TM4C129_RA1) || \
defined(TARGET_IS_TM4C129_RA2)
#define ROM_ADCSequenceConfigure \
((void (*)(uint32_t ui32Base, \
uint32_t ui32SequenceNum, \
uint32_t ui32Trigger, \
uint32_t ui32Priority))ROM_ADCTABLE[7])
#endif

  • The simple way?
    Change ROM_ADCSequenceConfigure to MAP_ADCSequenceConfigure.
    Maybe this p/n does not have that particular function on the ROM library? Actually, I just tried with TM4C1294NPCT and it also does not work.
    To avoid this kind of trouble, I tend to use MAP_ on all of the Tivaware function calls, instead of ROM. I understand that some will be stored/called from Flash instead of from ROM, but it is safer... and the only option for the situations where the ROM code ain't there.
    Regards
    Bruno
  • Hello Anton,

    I agree with Bruno. Using the MAP_ will help avoid the issue of the ROM functions being deprecated. However a closer inspection of the code base reveals it is not correct. the TM4C123 define should have been there. Thank you for pointing the same to us and we will try to correct the same.
  • Amit,
    Would it be the case to also check the TM4C129x Launchpad p/n as well? Being the "popular developers' part", I'd assume that it would not fail to have an existing function defined... However, at least with the two predefined symbols below, my project also fails to compile if I try to use ROM_ADCSequenceConfigure with that part:
    PART_TM4C1294NCPDT
    PART_IS_BLIZZARD_RA1
    Or am I missing something again?
    Cheers.
    Bruno
  • Thank you Amit,

    I hope that you can release an updated version of the library. For the moment I will add the relevant macro in the rom.h file.

    I have a side question for you if you don't mind. Do you know where do I read the processor release I am working with? (RA1, RA2, RB1,.. etc.)

    SIncerely
  • Hello Bruno

    TM4C1294NCPDT would require PART_IS_TM4C129_RA1 and not PART_IS_BLIZZARD_RA1
  • Hi Amit,

    Now I got confused... I had all my code using MAP_, and just for the sake of this thread, changed a simple GPIOPinWrite to ROM_

    I can't get it to compile like that!

    1) Followed your advice, and added this pre-defined name: PART_IS_TM4C129_RA1

    2) My header file includes both:

    #include "driverlib/rom.h"

    #include "driverlib/rom_map.h"

    3) Double checked the rom.h file, and it in fact has:

    #if defined(TARGET_IS_TM4C123_RA1) ||                                         \
        defined(TARGET_IS_TM4C123_RA3) ||                                         \
        defined(TARGET_IS_TM4C123_RB1) ||                                         \
        defined(TARGET_IS_TM4C123_RB2) ||                                         \
        defined(TARGET_IS_TM4C129_RA0) ||                                         \
        defined(TARGET_IS_TM4C129_RA1) ||                                         \
        defined(TARGET_IS_TM4C129_RA2)
    #define ROM_GPIOPinWrite                                                      \
            ((void (*)(uint32_t ui32Port,                                         \
                       uint8_t ui8Pins,                                           \
                       uint8_t ui8Val))ROM_GPIOTABLE[0])

    Maybe it's one of those tired out mornings... But is there something else I forgot?

  • Got it...
    It should be TARGET_IS_TM4C129_RA1, not PART_IS...! You may want to edit your post above in case some bypasser just looks at that one!

  • Hello Bruno

    Yes, you are right. It is TARGET_IS_TM4C129_RA1