Forum: Mikrocontroller und Digitale Elektronik Intel Edison Breakout Board mraa-Bibliothek


von crumbjunk (Gast)


Lesenswert?

Hi zusammen,

ich arbeite seit kurzem mit dem Intel Edison Breakout Board und bin 
soweit ganz zufrieden. Die Dokumentation ist natürlich noch nicht 
ausgereift und daher komme ich gleich zu meinem Problem.

Der Edison hat das neueste Edison-Yocto-Image bekommen, ist also 
geflasht und die Verbindung zum wLan funktioniert auch. Die 
Konfiguration ist kein Problem.

Kurze Testprogramme (mit vi geschrieben, compiliert und ausgeführt) 
funktionieren auch.

Um die GPIOs (z.B. für das übliche LED-Blinkprogramm) des Edison zu 
benutzen ist die Bibliothek mraa notwendig. Diese wurde auch erfolgreich 
wie hier: https://github.com/intel-iot-devkit/mraa beschrieben mit 
folgenden Befehlen installiert:
1
echo "src mraa-upm http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/mraa-upm.conf
2
opkg update
3
opkg install libmraa0

So, das Testprogramm helloMraa
1
#include "mraa.h"
2
int
3
main(int argc, char **argv)
4
{
5
  char* board_name = mraa_get_platform_name();
6
  fprintf(stdout, "hello mraa\n Version: %s\n Running on %s\n", mraa_get_version(), board_name);
7
  mraa_deinit();
8
  return MRAA_SUCCESS;
9
}
lässt sich aber leider nicht kompilieren und ich weis nicht warum...

Fehlermeldung:
root@Edison:~/build# gcc -o helloMraa helloMraa.c
/tmp/ccxXgMSp.o: In function `main':
helloMraa.c:(.text+0xa): undefined reference to `mraa_get_platform_name'
helloMraa.c:(.text+0x13): undefined reference to `mraa_get_version'
helloMraa.c:(.text+0x35): undefined reference to `fprint'
helloMraa.c:(.text+0x3a): undefined reference to `mraa_deinit'
collect2: error: ld returned 1 exit status

Es wird also die Bibliothek nicht erkannt, richtig?

Ich bin für jede weiterführende Hilfe sehr dankbar!

Bitte keine Vorschläge wie: Warum benutzt du nicht die Arduino-IDE 
usw...
Ich möchte die Programme im Terminal schreiben, kompilieren und 
ausführen!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

crumbjunk schrieb:
> Es wird also die Bibliothek nicht erkannt, richtig?

"Nicht erkannt" stimmt nicht. Du hast beim Compileraufruf nicht 
angegeben, daß die Library gelinkt werden soll. Nur durch das Einbinden 
einer Headerdatei geschieht das nicht, sondern das ist eine 
Kommandozeilenoption des Compilers/Linkers. Bei gcc ist das -l, wobei 
die Konvention ist, daß der Dateiname mit "lib" beginnt, und das "lib" 
weggelassen wird.

Heißt die Library also "libmraa", lautet die Kommandozeilenoption -lmraa

von crumbjunk (Gast)


Lesenswert?

Hi Rufus,

danke dir für deine Hilfe. Ich kann es leider nicht ausprobieren, weil 
mein Edison heute leider keine Lust hat. Er rebootet wie verrückt und 
nach dem erneuten Flashen, möchte er sich nicht mehr ins wLan 
einloggen...

Sobald ich soweit komme es zu versuchen, melde ich mich wieder...

Vielen Dank bis dahin.

von Mirco C. (Firma: s@Td) (mcontroller)


Lesenswert?

Hey,

mit -lmraa hat es bei mir funktioniert, nachdem die Lib installiert war.
Es wäre nett wenn du Erkenntnisse mit der Lib hier posten könntest.
Ich habe bisher nur mit dem gpio teil etwas gemacht, was sehr langsam 
war evt. kannst du das bestätigen.

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.