für alle, die den RevPi in C programmieren wollen, stelle ich hier mal meine Herangehensweise vor, insbesondere die IDE.
Da ein Revolution Pi sich sehr ähnlich wie ein Raspberry Pi verhält, kann man vieles von dem übernehmen, womit im Bereich RasPi gearbeitet wird.
Für den Raspberry Pi steht eine ganz Reihe an Compilern, etc. zur Verfügung. Wer das Budget hat, sollte sich auf jeden Fall VisualGDB ansehen, eine Erweiterung für Microsoft Visual Studio. Für alle, die die umfangreiche Funktionalität von VisualGDB nicht benötigen oder etwas knapper bei Kasse sind, gibt's genug Alternativen. Nach etwas Rumprobieren gefiel mir persönlich die IDE CodeLite am besten, sie ist übersichtlich und recht intuitiv in der Bedienung. Als Compiler nutzte ich den der GNU toolchain für den Raspberry Pi.
Und so geht's:
- Die GNU Toolchain hier herunter laden und installieren. Dabei darauf achten, dass sie in einem Pfad ohne Leerzeichen installiert wird.
- CodeLite hier herunter laden und installieren.
- CodeLite starten und dem Wizard folgen. Auf Scan klicken, wenn er nach Compilern fragt. Nach Beenden des Wizards startet CodeLite neu.
- CodeLite öffnen und einen neuen Workspace erstellen: Workspace -> Create Workspace
- In diesem Workspace ien neues Projekt erstellen: File -> New -> New Project
Bei dem Projekt als Template "Simple executable (gcc)" auswählen, der Compiler wird dann automatisch auf "Cross GCC (arm-linux-gnueaihf)" eingestellt. Wenn GCC nicht auftaucht, könnte diese Seite hilfreich sein.
Getestet wurde er bisher nur an einem RevPi Core 3 mit DIO-Modul und Profinet-Gateway, dort hat er wunderbar funktioniert, wenn man entweder die LEDs ignoriert oder den Profinet-Gateway nicht benutzt. Der Code lässt sich recht leicht benutzen:
- Die Dateien aus dem ZIP-Ordner ins Projektverzeichnis kopieren.
- Die.c-Dateien in das Projekt einfügen: Rechtsklick auf src -> Add an Existing File
- Die Datei modfuns.h einbinden: #include "modfuns.h"
- Eingänge abfragen: mod_readVariableValue("I_1");
- Ausgänge setzen: mod_writeVariableValue("O_1",1);
- LEDs setzen: SetPiLED('G','R');