STR912 Port Error

paoloferrari wrote on Tuesday, November 11, 2008:

Hi all,
I’m new and I would use FreeRTOS on STR912FA with IAR compiler. I downloaded the last version (5.1.0) and the compiler gives this error:

Error[Li005]: no definition for "usTaskCheckFreeStackSpace" [referenced from C:\Documents and Settings\paolo\Documenti\str912\RTOS\FreeRTOSV5.1.0\
FreeRTOSV5.1.0\FreeRTOS\Demo\ARM9_STR91X_IAR\ARM - uIP - D\Obj\tasks.o]

In the file task.c I saw that the definition of the prototype "usTaskCheckFreeStackSpace" is different from that of the function

#if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) )   <------- Different ******

    unsigned portSHORT usTaskCheckFreeStackSpace( const unsigned portCHAR * pucStackByte );

#endif

#if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 )                                                                    <------- Different  ******

    unsigned portSHORT usTaskCheckFreeStackSpace( const unsigned portCHAR * pucStackByte )
    {
    register unsigned portSHORT usCount = 0;

        while( *pucStackByte == tskSTACK_FILL_BYTE )
        {
            pucStackByte -= portSTACK_GROWTH;
            usCount++;
        }

        usCount /= sizeof( portSTACK_TYPE );

        return usCount;
    }

#endif

Setting them equal everything works properly, or should I set "INCLUDE_uxTaskGetStackHighWaterMark" to 1?
What is the correct thing to do?

Thanks for your answer
Paolo Ferrari

woops_ wrote on Tuesday, November 11, 2008:

There is an inconsistency introduced in 5.10 in the macros that include functions that rely on each other. There is a bug report in the tracker for this issue and it is noted on the known issues list with the fix given. I think the SVN version has a fix as well.

paoloferrari wrote on Tuesday, November 11, 2008:

Thanks woops,

I look the tracker

Paolo