Ich habe mir ein Arudino Due kompatibles Board besorgt und wollte damit
ein bisschen in FreeRTOS einsteigen (nach Application Note AT04056).
Ich habe also ein neues ASF projekt erstellt und das Arduino Due/X Board
ausgewählt, FreeRTOS hinzugefügt und kompiliert. Soweit alles gut.
Nun wollte ich den worker1 task aus der main.c auslagern und habe dazu
zwei files erstellt:
worker1.h
1 | #ifndef WORKER1_H_
|
2 | #define WORKER1_H_
|
3 |
|
4 | static void worker1_task(void *pvParameters);
|
5 |
|
6 | #endif /* WORKER1_H_ */
|
und worker1.c
1 | #include <asf.h>
|
2 | #include "worker1.h"
|
3 |
|
4 | static void worker1_task(void *pvParameters)
|
5 | {
|
6 | for(;;)
|
7 | {
|
8 | /* task application*/
|
9 | }
|
10 | /* Should never go there */
|
11 | vTaskDelete(NULL);
|
12 | }
|
Wenn ich nun allerdings die worker.h in der main.c includiere:
1 | #include <asf.h>
|
2 | #include "worker1.h"
|
3 |
|
4 | /* Task handler declaration*/
|
5 | xTaskHandle worker1_id;
|
6 |
|
7 | int main (void)
|
8 | {
|
9 | /* Insert system clock initialization code here (sysclk_init()). */
|
10 | sysclk_init();
|
11 | board_init();
|
12 |
|
13 | /* Create Worker 1 task */
|
14 | xTaskCreate(worker1_task,"Worker 1",configMINIMAL_STACK_SIZE+1000,NULL, 2,& worker1_id);
|
15 | /*Start Scheduler*/
|
16 | vTaskStartScheduler();
|
17 | for(;;);
|
18 | }
|
bekomme ich diesen merkwürdigen Fehler (siehe Screenshot). Ich habe
vorher noch nie mit der arm toolchain von Atmel gearbeitet (auf der
Arbeit nutzten wir Keil). Die worker1.c wird kompiliert (ein .o File
wird erstellt) aber der Linker findet das nicht.
Hat jemand ne Idee was ich falsch mache?