Forum: Mikrocontroller und Digitale Elektronik FreeRTOS vTaskList ARM-GCC Fehler


von Moritz M. (Gast)


Lesenswert?

Nochmal Hallo!

Ich versuche grade in FreeRTOS eine List von Task mittels vTaskList() zu 
erstellen.
Dazu hab ich einen Buffer folgendermaßen angelegt:
1
signed char *buffer;

Die Funktion rufe ich innerhalb eines Tasks so auf:
1
vTaskList(buffer);

Der Compiler (gcc-arm) gibt dann folgende Fehlermeldung aus:
1
 [cc] c:/stm32/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-sbrkr.o): In function `_sbrk_r':
2
       [cc] sbrkr.c:(.text+0xc): undefined reference to `_sbrk'
3
       [cc] c:/stm32/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-abort.o): In function `abort':
4
       [cc] abort.c:(.text+0xa): undefined reference to `_exit'
5
       [cc] c:/stm32/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-signalr.o): In function `_kill_r':
6
       [cc] signalr.c:(.text+0xe): undefined reference to `_kill'
7
       [cc] c:/stm32/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-signalr.o): In function `_getpid_r':
8
       [cc] signalr.c:(.text+0x28): undefined reference to `_getpid'
9
       [cc] collect2: ld returned 1 exit status
10
11
BUILD FAILED
12
Total time: 2 seconds

Ich benutze außerdem die CoIDE. Weiß jemand dazu was das ist? Wenn ich 
die Funktion weglasse ist alles OK.

Moritz

von Karl Moink (Gast)


Lesenswert?

Sorry!
Kann es sein dass du lib_a-signalr.o erst installieren musst?

Was ist es denn für ein OS?
Vielleicht hilft dir ja auch das hier weiter(richtiger Link):
Beitrag "Fehler beim Linken mit Yagarto und LPC2148"

von Moritz M. (Gast)


Lesenswert?

Hallo,

das ist FreeRTOS.

Moritz

von Moritz M. (Gast)


Lesenswert?

Hallo,

okay hat sich erledigt! Man muss in der CoIDE In dem Repository-Tab die 
C-Libary aktivieren. Dann fügt CoIDE die syscalls.c hinzu und alles ist 
OK.

Moritz

von holger (Gast)


Lesenswert?

>Dazu hab ich einen Buffer folgendermaßen angelegt:
>
>signed char *buffer;

Damit hast du keinen Buffer angelegt. Aber wirst schon sehen;)

von Moritz M. (Gast)


Lesenswert?

Hallo,

ja müsste es nicht eig.
1
char buffer[1001]
 sein?
der Funktionsaufruf dann
1
vTaskList(&buffer[0]);

Ich vergess das mit Feldern und Zeigern immer wieder.

Moritz

von holger (Gast)


Lesenswert?

>Ich vergess das mit Feldern und Zeigern immer wieder.

Dann überleg mal wo hier die Buffergrösse angegeben ist;)

>signed char *buffer;

von AEFA (Gast)


Lesenswert?

1
vTaskList(&buffer[0]);

ist equivalent zu
1
vTaskList(buffer);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.