I'm trying to run freeRTOS with own Makefile and linker file. The problem is when I'm trying to compile project with 3 files:
tasks.c:1614:6: error: 'ulTIM6_OverflowCount' undeclared (first use in this function)
task.c - with problem lines:
void vTaskGetRunTimeStats( signed char *pcWriteBuffer )
{
unsigned portBASE_TYPE uxQueue;
unsigned long ulTotalRunTime;
/* This is a VERY costly function that should be used for debug only.
It leaves interrupts disabled for a LONG time. */
vTaskSuspendAll();
{
#ifdef portALT_GET_RUN_TIME_COUNTER_VALUE
[1355] portALT_GET_RUN_TIME_COUNTER_VALUE( ulTotalRunTime );
#else ...
macro portALT_GEN_RUN_TIME_COUNTER_VALUE() in file
FreeRTOSConfig.h
#define portALT_GET_RUN_TIME_COUNTER_VALUE( ulCountValue ) \
{ \
TIM_Cmd( TIM6, DISABLE ); \
ulCountValue = ( ( ulTIM6_OverflowCount << 16UL ) | ( unsigned long ) TIM6->CNT ); \
TIM_Cmd( TIM6, ENABLE ); \
}
#endif /* FREERTOS_CONFIG_H */
And finally my main.c witch I going to compile:
#include "FreeRTOSConfig.h"
#include "task.h"
//problematic variable
unsigned long ulTIM6_OverflowCount = 0UL;
void main( void )
{
for( ;; );
}
Compiler action before error:
Compiling file: ./system_and_ST_code/STM32L1xx_StdPeriph_Driver/src/misc.c
/home/grochu/arm/arm-none-eabi-gcc-4_6/bin/arm-none-eabi-gcc -c -mcpu=cortex-m3 - mthumb -O0 -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wextra -std=gnu89 -g -ggdb3 -fverbose-asm -Wa,-ahlms=out/misc.lst -DSTM32L1XX_MD -MD -MP -MF out/misc.d -I. -I./ -I./include -I./portable/GCC/ARM_CM3 -I./Common/include -I./system_and_ST_code/CMSIS/CM3/DeviceSupport/ST/STM32L1xx -I./system_and_ST_code -I./system_and_ST_code/STM32L152_EVAL -I./system_and_ST_code/STM32L1xx_StdPeriph_Driver/inc -I./system_and_ST_code/Common -I./system_and_ST_code/CMSIS/CM3/CoreSupport ./system_and_ST_code/STM32L1xx_StdPeriph_Driver/src/misc.c -o out/misc.o
In my opinion the variable: ulTIM6_OverflowCount should be global and visible in file task.c This is example from freeRTOS project, from witch I removed almost all of the code, but it is dedicated from IAR and dont have makefile. Make file come from great tutorial for CortexM3 and it have option to add all INC and SRC dirs, and the linker come also from this project. My question is where I must search error: In linker? Compilator? Or in project? When i use another linker (from chibiOS project) I don't got any error but i got a corrupt elf file. Is a possible that linker didn't see a main.c fields? Or I forgot included some files? I spent all day on debugging this problem and now I need some new Ideas or prompt.
Thanks a lot.