Das Echtzeitbetriebssystem für die Automatisierungstechnik |
|
| Home Übersicht Dokumentation Downloads Literatur Kontakt | |
InhaltUmgebungsvariablen für Ein- und Ausgabepfade |
Programmentwicklung für RTOS-UH mit PE
Das Programm PE dient der komfortableren Erstellung von PEARL- oder Assembler-Programmen für das Echtzeitbetriebssystem RTOS-UH insbesondere bei der Crossentwicklung. Anstelle des Compilers oder Assemblers wird vom Anwender das Programm PE aufgerufen. Dieses generiert mit Hilfe verschiedener Kommandozeilenparameter und Umgebungsvariablen den Aufruf des PEARL-Compilers oder des Assemblers. Sollten bei der Compilation Fehler auftreten, so werden die Fehlermeldungen aus dem erzeugten Listing in ein benutzerdefiniertes, einzeiliges Format umgewandelt und auf StdOut oder in einer Datei ausgegeben. Die Ausgaben des aufgerufenen Programms werden dabei je nach Kommandozeilenparameter unterdrückt. Mit Hilfe von Umgebungsvariablen lassen sich die Default-Ein-/Ausgabepfade auch individuell für einzelne Projekte festlegen.
Eigenschaften
Einzeilige FehlermeldungenPE konvertiert nach dem automatischen Aufruf des gewünschten Compilers, Assemblers oder, bei Cross-Entwicklung, des VCPs (virtueller Code-Prozessor) die mehrzeiligen Fehlermeldungen in einzeilige Ausgaben auf StdOut oder in eine Datei, um insbesondere bei der Crossentwicklung eine Anpassung an komfortable Editoren und Entwicklungsumgebungen mit automatischer Cursorpositionierung auf den Compilerfehlern zu ermöglichen. Da sich die von den Editoren verwendeten Fehlerformate unterscheiden, bietet PE die Möglichkeit zur freien Konfiguration des gewünschten Formats (s. Abschnitt (<)).
Die normale Fehlerausgabe des PEARL Compilers mit der Option lo=no bei Fehlern in der Datei
68xxx-Maxi-RTOS-PEARL90-15.9-J <c>1998 W.Gerth 19-02-2000 15:22:11 a 5 D=X; <ERROR> * /Undefined/ = 12 D=D***3; <ERROR> * /Syntax violation/ a 10 SEND D TO AOUT; <ERROR> * /Undefined/ MISSING PROC/TASK: (***)PARAM VAR(RAM):0000-001F CODE(RAM):0020-009C $009C BYTES (FOR 68000) (SIZE-LIMIT-ERROR!) TOTAL: 5 ERRORS.Diese Fehlerliste ist aufgrund der mehrzeiligen Fehlermeldungen schwer von komfortablen Editoren, die bei der Crossentwicklung zur Verfügung stehen, auszuwerten. Eine automatische Cursorpositionierung auf den nächsten Programmfehler ist daher nicht möglich. Insbesondere fehlen die Namen der Include-Dateien, in denen ein Fehler aufgetreten ist. Dieser Umstand erschwert die Analyse der Fehlermeldungen auch bei der Programmentwicklung unter RTOS-UH erheblich. Die Ausgabe des PE lautet hingegen (abhängig von der Konfiguration):
68xxx-Maxi-RTOS-PEARL90-15.9-J <c>1998 W.Gerth 19-02-2000 15:35:02 C:/Daten/Rtos-UH/MESS.PQ(5,4): Undefined C:/Daten/Rtos-UH/regler.pq(12,6): Syntax violation C:/Daten/Rtos-UH/STELL.PQ(10,15): Undefined C:/Daten/Rtos-UH/regler.pq(1,1): MISSING PROC/TASK: (***)PARAM C:/Daten/Rtos-UH/regler.pq(1,1): SIZE-LIMIT-ERROR ($009C Bytes) $009C BYTES (FOR 68000) (SIZE-LIMIT-ERROR!) TOTAL: 5 ERRORS.Die einzelnen Fehlermeldungen enthalten den Dateinamen, die Zeilen- und die Spaltennummer sowie die Fehlerbeschreibung. Das Format ist frei konfigurierbar. Eine Auswertung zur automatischen Cursorpositionierung in entsprechenden Editoren stellt somit kein Problem dar. Das SETLINE-Kommando des PEARL-Compilers wird dabei berücksichtigt: Die Zeilennummer in der Fehlerbeschreibung bezieht sich daher stets auf die Quelldatei und nicht auf die Compilerliste.
Prüfung der Notwendigkeit des gewünschten CompilerlaufsPE legt (mit der Option -lif, s. Abschnitt (<)) bei der Auswertung der erzeugten Compilerliste die Datei Quelldateiname.lif mit einer Liste aller Include-Dateien und ihrer Verschachtelungen an. Als Beispiel ist die LIF-Datei (LIF, List of Include Files) der Quelldatei d:/rtos-uh/pq/TEST.PQ nachstehend dargestellt.
<d:/rtos-uh/pq/TEST.PQ> | +--<TEST2.PQ> d:/rtos-uh/pq/TEST2.PQ | | | +--<TEST3.PQ> d:/rtos-uh/pq/TEST3.PQ | | | | | +--<TEST4.PQ> d:/rtos-uh/pq/TEST4.PQ | +--<TEST3.PQ> d:/rtos-uh/pq/TEST3.PQ | | | +--<TEST4.PQ> d:/rtos-uh/pq/TEST4.PQ | +--<TEST4.PQ> d:/rtos-uh/pq/TEST4.PQ In der ersten Zeile ist die Quelldatei eingetragen, in den weiteren die Include-Dateien. Bei den Include-Dateien steht jeweils der im PEARL- oder Assemblerprogramm angegebene Pfad und/oder Name zwischen den Klammern < und >. Dahinter folgt der absolute Pfad der beim Compilerlauf gefundenen Include-Datei. Anhand dieser Datei überprüft PE (mit Option -lif, s. Abschnitt (<)) vor dem Aufruf des Compilers/Assemblers die Quelldatei und alle Include-Dateien. Die Quelldatei wird anschließend nur übersetzt, falls
Es zu beachten, dass z. B. der Austausch einer älteren mit einer neueren Include-Datei , die aber ein älteres Datum als der zuletzt erzeugte S-Record aufweist, nicht zu einem neuen Übersetzungslauf beim Aufruf des PE führt. Die Abhängigkeiten der Quelldatei von Include-Dateien wird bei Verwendung der Option -lif zudem im Makefile-Format in die Datei Quelldateiname.dep geschrieben. Diese Datei lautet für obiges Beispiel:
TEST.PQ: \
d:/rtos-uh/pq/TEST2.PQ \
d:/rtos-uh/pq/TEST3.PQ \
d:/rtos-uh/pq/TEST4.PQ \
d:/rtos-uh/pq/TEST3.PQ \
d:/rtos-uh/pq/TEST4.PQ \
d:/rtos-uh/pq/TEST4.PQ
UmgebungsvariablenPE unterstützt zudem einige Umgebungsvariablen mit Standardpfaden für Quell-, Code- und List-Dateien, die für den Aufruf des gewünschten Compilers ausgewertet werden. Diese lassen sich für einzelne Projekte individuell anpassen (s. Abschnitt (<)).
EinschränkungenDa PE stets eine vollständige, mit der Quelldatei übereinstimmende Liste zur Auswertung der Fehlerbeschreibungen benötigt, führt die Verwendung der Compileranweisungen /*-L*/ und /*+P*/ sowie der Assemblerdirektive PRINT 0 zu einer fehlerhaften Arbeitsweise des PE aufgrund von Unterschieden zwischen Liste und Quelldatei. Insbesondere sind in Include-Dateien, die z.B. allgemeine Deklarationen enthalten und für viele verschiedene Programme eingesetzt werden, häufig /*-L*/ bzw. PRINT 0 enthalten. Diese Include-Dateien sollten daher vor der Verwendung des PE nach den genannten Anweisungen durchsucht werden. Die Compileranweisung SETLINE muss in einer Zeile angegeben werden. Eine für den PEARL90-Compiler ebenfalls mögliche SETLINE-Anweisung über zwei Zeilen wird vom PE nicht erkannt. Installation
Inhalt des Archivs
Für Cross-Entwicklung
Hinweis: Die im Archiv enthaltenen Compiler pd_ppc.vbi und pd_68k.vbi sind Demo-Versionen, deren Nutzung ausschließlich für den privaten Gebrauch gestattet ist. Die Demo-Versionen unterliegen folgenden Einschränkungen gegenüber den Vollversionen:
Für RTOS-UH
Vorgehensweise bei der Installation
Windows 9x/2000/NT/ME/XPZur Installation unter Windows 9x/2000/NT/ME/XP(2) sind die im Archiv entahltenen Programme pe.exe, pe_setup.exe und cvcp.exe sowie die binären Compiler-Dateien pd_ppc.vbi und pd_68k.vbi in das gewünschte Verzeichnis zu kopieren. Das Programm cvcp.exe ist ein virtueller Code-Prozessor (VCP), auf dem die binären Compiler *.vbi laufen. Anschließend ist pe_setup.exe zu starten. Dieses Programm fragt die in Abschnitt (<) näher erläuterten Konfigurationen von PE ab und trägt sie in die Konfigurationsdatei pe.cfg ein. Diese Datei wird, falls möglich, dort angelegt, wo sich auch das Programm pe_setup.exe befindet. Sollte dieses nicht möglich sein, wird das aktuelle Arbeitsverzeichnis gewählt. Beim späteren Aufruf von PE wird die Datei dann im gleichen Verzeichnis wie pe.exe und anschließend im aktuellen Arbeitsverzeichnis gesucht. Die erforderlichen Einstellungen können auch manuell in pe.cfg eingetragen bzw. dort geändert werden. Alternativ kann die Konfiguration auch in eine andere Datei eingetragen werden. Diese Datei ist beim Aufruf von PE mit dem Parameter -cfg anzugeben (s. Kapitel (<)). Die Angabe erfolgt absolut oder relativ zum aktuellen Arbeitsverzeichnis. Die Verwendung mehrerer Konfigurationsdateien kann dann sinnvoll sein, wenn PE in verschiedenen Entwicklungsumgebungen eingesetzt wird.
Unix-DerivateDie Installation unter Unix erfolgt durch Kopieren der Programme pe, pe_setup und cvcp sowie die binären Compiler-Dateien pd_ppc.vbi und pd_68k.vbi in das gewünschte Verzeichnis. Das Programm cvcp ist ein virtueller Code-Prozessor (VCP), auf dem die binären Compiler *.vbi laufen. Anschließend ist pe_setup zu starten, um die Datei pe.cfg anzulegen. Weitere Einzelheiten sind identisch zur Vorgehensweise unter Windows (s. Unterabschnitt (<)).
RTOS-UHDie S-Records PE bzw. PE_SETUP entpacken und in das gewünschte Verzeichnis kopieren. Dort stehen dann die neuen transienten Bedienbefehle PE bzw. PE_SETUP zur Verfügung. Alternativ können die S-Records auch einmalig geladen werden. Bei wiederholten Aufrufen erspart dieses das erneute Laden. Der Befehl PE_SETUP legt die Konfigurationsdatei PE.CFG im aktuellen Arbeitsverzeichnis an. Beim Aufruf von PE wird PE.CFG zuerst im aktuell gesetzten Arbeitsverzeichnis und dann in /ED gesucht. Zur manuellen Erstellung von Konfigurationsdateien, auch unter anderem Namen, gelten ebenfalls die Ausführungen in Unterabschnitt (<).
Setzen des verwendeten Compilers, Assemblers oder C-VCPsDie im folgenden angegebenen Programmnamen gelten für Windows-Systeme. Für UNIX-Systeme ist die Endung .exe wegzulassen. PE benötigt den Namen des aufzurufenden Compilers. Dieser wird in der ersten Zeile der Konfigurationsdatei pe.cfg eingetragen. Bei Crossentwicklung ist hier der virtuelle Code-Prozessor cvcp.exe ggf. mit Pfadangabe anzugeben. Die benötigte Binärdatei, z.B. pd_ppc.vbi (mit Pfad, falls erforderlich) kann ebenfalls angegeben oder als Kommandozeilenargument übergeben werden (s. Abschnitt (<)). Bei Verwendung des Tools unter RTOS-UH ist der Name des Compilers (P, QP, AS oder QAS) einzutragen. Er kann jedoch auch als erster Kommandozeilenparameter beim Aufruf von PE angegeben werden, um PE wahlwiese für einen dieser Compiler/Assembler einzusetzen. In diesem Fall muss die erste Zeile der Konfigurationsdatei leer bleiben.
Soll PE bei der Crossentwicklung wahlweise für den PowerPC- oder 68k-PEARL-Compiler eingesetzt werden, so ist die Variante 1 der Konfigurationsdatei aus obigem Beispiel zu wählen und die gewünschte Binärdatei in der Kommandozeile anzugeben. Die Variante 3 wäre ebenfalls möglich, führt jedoch zu einem Mehraufwand beim Aufruf. Die Verwendung des Assemblers (as68.vbi) oder des Transfer-Assemblers tapp.vbi ist mit dem PE ebenfalls möglich. Diese sind, wie auch die Vollversionen der PEARL-Compiler jedoch nicht im freien PE-Paket enthalten. Bei Verwendung des PE unter RTOS-UH entfällt die Angabe eines VCP. Soll wahlweise der (Quick-)Compiler oder (Quick-)Assembler verwendet werden, ist die Variante 3 der Konfigurationsdatei zu wählen und der Compiler oder Assembler in der Kommandozeile des PE anzugeben.
Wahl des gewünschten FehlerformatsDie zweite Zeile der Datei pe.cfg enthält das Format der einzeiligen Fehlermeldungen. Das Setup-Programm bietet die Möglichkeit, vordefinierte Formate auszuwählen oder ein eigenes Format zu erstellen. Der Formatstring darf alle ASCII-Zeichen außer # sowie folgende Variablen enthalten.
Das Format muss mindestens eine der Variablen, aber insgesamt nicht mehr als fünf Variablen enthalten.
Folgende vordefinierte Formate für den Einsatz von gängigen Editoren(3) und Entwicklungsumgebungen stehen im Setup-Programm zur Vefügung:
Zu einigen Fehlermeldungen, wie z. B. SIZE-LIMIT-ERROR, LABELING-ERROR oder Aufruf und Parameter
Wird keine Konfigurationsdatei mit -cfg angegeben, muss sich die Default-Konfigurationsdatei pe.cfg oder PE.CFG beim Aufruf von PE (s. Abschnitt (<)) im Programmverzeichnis befinden (eine Ausnahme stellt die Anwendung von PE unter RTOS-UH dar: Hier wird die Datei pe.cfg oder PE.CFG entweder im aktuell gesetzten Arbetisverzeichnis oder in /ED gesucht). Standardmäßig gibt PE lediglich die einzeiligen Fehlerbeschreibungen und die Schlusszeile des Compilers oder Assemblers nach StdOut aus. Die Ausgaben des von PE aufgerufenen Programms nach StdOut werden unterdrückt, die Ausgaben nach StdErr jedoch nicht. Mit dem Parameter -e1 können auch die Ausgaben nach StdOut wieder eingeschaltet werden. Außerdem gibt PE dann seine eigene Kopfzeile aus. Mit -e0 wird die Kopfzeile des erzeugten Listings mit ausgegeben. Der Parameter -lo=no hat eine etwas andere Bedeutung als gewohnt. PE benötigt immer ein vollständiges Listing, um auch den Namen der Include-Datei, in der ein Fehler auftrat, korrekt ermitteln zu können. Somit wird, auch wenn -lo=no angegeben ist, immer eine Liste erzeugt (ohne weiteren lo-Parameter in der Datei Quelldateiname.sr relativ zum aktuellen Arbeitsverzeichnis oder der Umgebungsvariablen PE_LIST). Die Angabe von -lo=no bewirkt dann lediglich, dass die erzeugte Listdatei wieder gelöscht wird. Auch unter Windows wird eine Pfadangabe einer Include-Datei der Form /H0/... als absoluter Pfad auf dem Laufwerk des aktuellen Arbeitsverzeichnisses (also z.B. C:\H0\...)interpretiert. Auf diese Weise können die selben Dateien mit absoluten Pfadangaben für Include-Dateien sowohl unter Windows als auch unter RTOS-UH und Linux verwendet werden. Wird die Umlenkung der Ausgabe mit -o zusammen mit der Option -e1 (Ausgaben des von PE aufgerufenen Programms nicht unterdrücken) verwendet, wird im Arbeitsverzeichnis temporär die Datei pe_redir.tmp angelegt. Vor dem Ende des PE-Laufs wird diese Datei wieder gelöscht. Die Arbeitsweise des PE setzt sowohl die Liste als auch den Quellcode in einer Datei voraus. Aus diesem Grund werden StdIn bzw. StdOut als Pfadangaben für -si, -lo und -co nicht unterstützt.
Umgebungsvariablen für Ein- und AusgabepfadeDie nachstehend beschriebenen Umgebungsvariablen können verwendet werden, um dem Compiler oder Assembler Pfade für Ein- und Ausgabedateien vorzugeben. Sind eine oder mehrere dieser Variablen nicht gesetzt, so wird das aktuelle Arbeitsverzeichnis verwendet.
Sollte PE_PROJECT gesetzt sein, so werden zusätzlich folgende Variablen überprüft:
Dabei ist <pname> ein frei wählbarer Name des Projekts. Diese Variablen übersteuern, falls sie gesetzt sind und PE_PROJECT=<pname> gilt, die Werte der Variablen PE_SOURCE, PE_LIST und PE_CODE.
Download, Versionsliste und Ansprechpartner
Download
Das Programm PE ist Freeware(4). Die Binaries für Windows9x/2000/NT/ME/XP, Linux, HP-UX und RTOS-UH inklusive Dokumentation befinden sich im Verzeichnis
Versionsliste
AnsprechpartnerBei Problemen, Kritik und Anregungen wenden Sie sich bitte an
Torsten Lilge
, http://www.irt.uni-hannover.de
Institut für Regelungstechnik Fußnoten
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
07.08.2008 Torsten Lilge (E-Mail), Ralf Glaser Impressum