Atmel Studio 6 - Linker findet Funktion nicht

OP #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:
OP #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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.