Herunterladen Inhalt Inhalt Diese Seite drucken

Praxisteil: Testen Einer Rmos3-Task; Testen Mit Den Gnu-Tools; Svc-Exceptionhandler, Statusmeldungen Und Testausgaben - Siemens Rmos3 Bedienungsanleitung

Echtzeit-betriebssystem rmos3 rmos3 v3.50 benutzerhandbuch
Inhaltsverzeichnis

Praxisteil: Testen einer RMOS3-Task

7.1

Testen mit den GNU-Tools

Die Vorgehensweise beim Testen einer RMOS3-Task mit den GNU-Tools entnehmen Sie
bitte dem Handbuch RMOS3-GNU, Kapitel "Testen einer RMOS3-Applikation".
7.2

SVC-Exceptionhandler, Statusmeldungen und Testausgaben

SVC-Exceptionhandler
Ein SVC-Exceptionhandler wird vom RMOS3-System bereitgestellt. Er soll auf
Programmfehler, die in der Anwendersoftware nicht abgefangen werden, in unterster Ebene
reagieren. Jeder SVC, der einen Rückkehrcode größer Null liefert, wird mit einer
Fehlermeldung versehen und durch die Errorloggertask ausgegeben.
Der SVC-Exceptionhandler ist für ein System konfigurierbar. Der Standard-Exceptionhandler
(SVCEXC.C) ist in der Bibliothek RM3BAS.LIB vorhanden. Hinweise zur Konfigurierung
finden Sie im Systemhandbuch Kapitel "Konfigurierung des RMOS3-Nukleus". Hier soll nur
die Bibliotheksversion betrachtet werden. Diese gibt alle SVCs, die einen Status ungleich
Null haben und nicht in der Ausnahmetabelle
Statusauswertung
Nicht jeder SVC mit Rückkehrcode größer Null ist fehlerhaft. Wird z.B. der SVC
mit einer Wartezeit versehen, aber innerhalb dieser Zeit das Flag nicht gesetzt, wird ein
Fehler (Timeout) zurückgemeldet. Ein derartiger Fehler kann vom Programm ggfs. ignoriert
werden. Um unerwünschte Meldungen zu verhindern, kann auf die Konfigurierung des
Exceptionhandler verzichtet werden, oder die Meldung an die Errorloggertask wird
unterdrückt. Deshalb sollte ein Anwendungsprogramm grundsätzlich die Möglichkeit der
Statusauswertung nutzen und entsprechende Fehlerbehandlungen starten. Die Funktion
svc_sts
Listing "Standard-Reaktionen auf SVC-Rückkehrstatus ungleich 0"
/***/ void svc_sts(unsigned int index, char *svc_txt, int status)/******/
{
char buf[RM_MAXDECODELEN];
if (status >0)
{
}
}
RMOS3 V3.50 Benutzerhandbuch
Bedienhandbuch, 07/2012, A5E03692290-01
zeigt ein Beispiel.
printf("\nERROR: %s INDEX: %i CODE: %i", svc_txt, index, status);
if (RmDecode(RM_SVCERROR, status, buf) == RM_OK)
printf(" = %s\n", buf);
else printf("\n");
stehen, auf der Systemkonsole aus.
ignore[ ]
7
RmGetFlag
63
Inhaltsverzeichnis
loading

Inhaltsverzeichnis