Atmel Studio 6 - Linker findet Funktion nicht

#4128140
Lesenswert?

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?
Angehängte Dateien:
#4128254
Lesenswert?

Bastler schrieb:
> Static bedeutet: wird nur lokal gebraucht, also Symbol NICHT
> exportieren.
> Der Linker hat keine Info mehr, daß es die Funktion gibt,
> Static wegmachen und im .h extern davor.

Man ist das peinlich. Schande über mein Haupt...
Du hast natürlich vollkommen Recht, ohne static gehts.
Ich hab in letzter Zeit ausschließlich C++ geschrieben ... da haben 
statische Klassenfunktionen ja eine andere bedeutung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren