Hello Everyone. For the third day trying to run freeRTOS on STM32F3 .
Using IAR compiler. Like all good but during compilation writes only one mistake that I see and could not. Please start my project on your computer and tell me where the error?
By the way the error is: portasm.o is not object or archive file
HELP ME, Please :(
https://www.dropbox.com/s/on3dksozqprvqr5/RealDron.rar“Error[Li005]: no definition for "vApplicationTickHook" [referenced from C:\temp\RealDron\RealDron\Debug\Obj\tasks.o]
”
Presumably you have configUSE_TICK_HOOK set to 1 in FreeRTOSConfig.h, but have not provided the implementation of the tick hook function. Either set configUSE_TICK_HOOK to 0 or provide a function called vApplicationTickHook().
“Error[Li005]: no definition for "SystemInit" [referenced from C:\temp\RealDron\RealDron\Debug\Obj\startup_stm32f30x.o] ”
Presumably your startup file is calling SystemInit(), but you don't have a function called SystemInit() in your application.
“Error[Li005]: no definition for "vApplicationStackOverflowHook" [referenced from C:\temp\RealDron\RealDron\Debug\Obj\tasks.o]
”
Presumably you have configCHECK_FOR_STACK_OVERFLOW set to a non-zero value and have not provided a definition of vApplicationStackOverflowHook(). Either set configCHECK_FOR_STACK_OVERFLOW to 0 or provide an implementation of vApplicationStackOverflowHook().
“Error[Li005]: no definition for "SystemCoreClock" [referenced from C:\temp\RealDron\RealDron\Debug\Obj\port.o] ”
Etc. etc.
“Error[Li005]: no definition for "vPortFree" [referenced from C:\temp\RealDron\RealDron\Debug\Obj\timers.o]
Error[Li005]: no definition for "pvPortMalloc" [referenced from C:\temp\RealDron\RealDron\Debug\Obj\queue.o]
”
You much have heap_1.c, heap_2.c, heap_3.c or heap_4.c in your project.
“Error[Li005]: no definition for "vApplicationIdleHook" [referenced from C:\temp\RealDron\RealDron\Debug\Obj\tasks.o]
”
Etc.
Etc.
http://www.freertos.org/Creating-a-new-FreeRTOS-project.html
http://www.freertos.org/porting-a-freertos-demo-to-different-hardware.html
Regards.
Hi, richardbarry! Many thanks for your help! Fixed some bugs. But there were some, I do not understand what to do with them.
I do not know what to do with SystemInit () to insert it and how to use it. Remove it is also impossible.
What to do with SystemCoreClock and vApplicationMallocFailedHook ().
If not hard to help me again. If you can not difficult to improve the project?
I send a new project file.
Thank you so much!
https://www.dropbox.com/s/on3dksozqprvqr5/RealDron.rarPlease explain why you need SystemCoreClock() and vApplicationMallocFailedHook ().
And that means this: unable to allocate space for sections / blocks with a total estimated minimum size of 0x14d40 bytes in <[0x20000000-0x20009fff]> (total uncommitted space 0xa000).
Thanx!
That's it! OS started!
But it is strange. Tasks are performed in one and the same time, that is, LED3 and LED8 blink in one and the same time. A LED5 generally always lit. What's the problem?
I removed the initialization function Systeminit ()
#define configTOTAL_HEAP_SIZE( ( size_t ) ( 20 * 1024 ) )
#define configUSE_MALLOC_FAILED_HOOK0
#define configUSE_TIMERS0
#define configUSE_IDLE_HOOK1
#define configUSE_TICK_HOOK0
main.c
void vTaskLED1(void *pvParameters) {
for (;;) {
STM_EVAL_LEDOn(LED3);
//GPIO_SetBits(GPIOF, GPIO_Pin_6);
vTaskDelay(500);
STM_EVAL_LEDOff(LED3);
//GPIO_ResetBits(GPIOF, GPIO_Pin_6);
vTaskDelay(500);
}
}
void vTaskLED2(void *pvParameters) {
for (;;) {
STM_EVAL_LEDOn(LED8);
//GPIO_SetBits(GPIOF, GPIO_Pin_6);
vTaskDelay(500);
STM_EVAL_LEDOff(LED8);
//GPIO_ResetBits(GPIOF, GPIO_Pin_6);
vTaskDelay(500);
}
}
void init_project (void)
{
STM_EVAL_LEDInit(LED3);
STM_EVAL_LEDInit(LED8);
STM_EVAL_LEDInit(LED5);
}
void vApplicationIdleHook( void )
{
STM_EVAL_LEDOn(LED5);
}
int main (void)
{
init_project();
xTaskCreate( vTaskLED1, ( signed char * ) "LED1", configMINIMAL_STACK_SIZE, NULL, 2,
( xTaskHandle * ) NULL);
xTaskCreate( vTaskLED2, ( signed char * ) "LED2", configMINIMAL_STACK_SIZE, NULL, 2,
( xTaskHandle * ) NULL);
vTaskStartScheduler();
}My project
https://www.dropbox.com/s/uymwbrk5b1gkfon/RealDron_WORKING%21.rarWhy wouldn't LED3 and 8 blink together? There should be plenty enough time in a tick to do both tasks, and they delay the same amounts. Change the delays so they are different and they will go out of sync.
For LED5, I just see a turn on, so why shouldn't it be on all the time. Since it is turning on in idle, and you should have lots of idle time since you don't have any CPU hungry tasks, it will be turned on real frequently.