kramann.info
© Guido Kramann

Login: Passwort:










6.1.2 Verwendung des Webcompilers

  • Acmesystems bietet eine Möglichkeit an, C- und C++-Quellcode über ein Web-Formular automatisch und prompt compilieren zu lassen.
  • Das Formular befindet sich unter http://www.acmesystems.it/?id=200 und seine Benutzung ist selbsterklärend.
  • Er liefert neben der ausführbaren Datei in dem Textfeld auch die verwendeten Compilierungsbefehle mit.
  • Diese funktionieren auch genau so in dem SDK der VMware.
  • Da die ansonsten für die VMware gegebenen Makefile-Beispiele nicht funktionieren, können statt dessen die vom Webcompiler zurückgelieferten Befehle in eine ausführbare Datei geschrieben werden, um lokal zu compilieren.
  • Ein Beispiel für den Webcompiler: Der folgende Quellcode läßt bei Programmstart die LED an Port G am Bit Nr. 25 zehn mal aufblinken.
  • Bei dem verwendeten open-Befehl kann alternativ gpioa für Port A, gpiob für Port B und wie hier gpiog für Port G verwendet werden.
  • Folgende digitale IO-Konfigurationen stehen zur Verfügung:
  • Port A 0..7 - jedes Bit einzeln als Ein- oder Ausgang wählbar.
  • Port B 0..7 - jedes Bit einzeln als Ein- oder Ausgang wählbar.
  • Port G 8..15 - komplettes Byte als Ein- oder Ausgang verwendbar.
  • Port G 16..23 - komplettes Byte als Ein- oder Ausgang verwendbar.
#include "stdio.h"
#include "stdlib.h"
#include "unistd.h"    
#include "sys/ioctl.h"
#include "fcntl.h"     
#include "asm/etraxgpio.h"

int main(void) {
  int fd;
  int i;
  int iomask;

  if ((fd = open("/dev/gpiog", O_RDWR))<0) {
    printf("Open error on /dev/gpiog\n");
    exit(0);
  }

  iomask=1<<25;

  for (i=0;i<10;i++) {
    printf("Led ON\n");
    ioctl(fd,_IO(ETRAXGPIO_IOCTYPE,IO_SETBITS),iomask);
    sleep(1);

    printf("Led OFF\n");
    ioctl(fd,_IO(ETRAXGPIO_IOCTYPE,IO_CLRBITS),iomask);
    sleep(1);
  }
  close(fd);
  exit(0);
} 

Code 6.1.2-1: foxio.c LED an Port G auf Bit 25 zehnmal blinken lassen.

  • Compilebefehle:
gcc-cris  -isystem /var/www/webcomp/devboard-R2_01/target/cris-axis-linux-gnu/include ...
... -mlinux -mno-mul-bug-workaround -Wall -Wshadow -O2 -g    -c -o foxio.o foxio.c
gcc-cris  -isystem /var/www/webcomp/devboard-R2_01/target/cris-axis-linux-gnu/include ...
... -mlinux -mno-mul-bug-workaround  -L/var/www/webcomp/devboard-R2_01/target/cris-axis-linux-gnu/lib ... 
... -Wl,-rpath-link,/var/www/webcomp/devboard-R2_01/target/cris-axis-linux-gnu/lib   foxio.o  -o foxio.out
cris-strip foxio.out
 

Code 6.1.2-2: Compilebefehle

Ausführbare Datei gezipt

Starten des Programms

  • Mit FileZilla Programm nach /mnt/flash/ kopieren und von Putty/Telnet aus starten
  • Login jeweils: root, Passwort jeweils: pass
  • Das .out-File muß mit chmod +x foxio.out ausführbar gemacht werden und kann dann mit ./foxio.out gestartet werden.
BILDBESCHREIBUNG

Bild 6.1.2-1: Übertragung des ausführbaren Files mit FileZilla auf das Foxboard (einfach mit der Maus rüberziehen).

BILDBESCHREIBUNG

Bild 6.1.2-2: File ausführbar machen und starten von Putty aus - LED blinkt dann.

  • Um dieses Programm über das Internet aufrufbar zu machen, kann folgendes CGI-File verwendet werden...
  • Wird es mit http://192.168.0.90/cgi/blinkled.sh angefordert, so wird foxio.out gestartet.
#!/bin/sh
echo "Content-type: text/html\n"

echo "<html>"
echo "<body>"
echo "<h1>LED blinkt</h1>"

echo "</body>"
echo "</html>"

/mnt/flash/foxio.out 
 

Code 6.1.2-3: CGI-Programm, um foxio.out über das Internet starten zu können.

BILDBESCHREIBUNG

Bild 6.1.2-3: Ansicht in einem Internetbrowser.