Praxisteil: Testen einer RMOS3-Task
7.3 Debuggen mit dem RMOS3-Debugger
Exception: SVC-Fehler
Nach Eingabe dieses Befehls läuft die Task weiter. Es tritt aber erneut eine
Exceptionmeldung auf:
*** nuc-0: 09-MAR-1995 09:50:35,
svc RmGetBinSemaphore from task: CLI_JOB_1 id: 0x28
failed: 36 (Invalid ID)
ERROR: RmGetFlag INDEX: 2 CODE: 36 = Invalid ID
Diesmal schlug der SVC
dass die übergebene ID ungültig war. Vergleichen Sie nun den Quellcode, so ist
festzustellen, dass die Zeilen
Status = RmGetBinSemaphore(RM_WAIT, SemaId);
svc_sts(3,"RmGetBinSemaphore", Status);
Status = RmCreateBinSemaphore("S_SEMA", &SemaId);
svc_sts(4,"RmCreateBinSemaphore", Status);
eine falsche Reihenfolge aufweisen. Hier wird versucht, das Semaphor mit dem SVC
RmGetBinSemaphore
richtigen Reihenfolge sieht der Quellcode dann so aus:
Status = RmCreateBinSemaphore("S_SEMA", &SemaId);
svc_sts(3,"RmCreateBinSemaphore", Status);
Status = RmGetBinSemaphore(RM_WAIT, SemaId);
svc_sts(4,"RmGetBinSemaphore", Status);
Die Task läuft trotz der fehlerhaften Semaphor-Reservierung bis zum Schluss durch. Auf der
CLI-Konsole erscheint die Schlussmeldung und 30 Sekunden später beendet sich die Task.
Prüfen Sie noch den ordnungsgemäßen Abschluss, indem Sie mit dem Debugger wie
gewohnt die Systemressourcen überprüfen.
Nun sollten Sie den zweiten Fehler im Quellcode beseitigen, den Code neu übersetzen und
nochmals testen.
66
RmGetBinSemaphore
zu reservieren, bevor er mit
fehl. Dem Status 36 können Sie entnehmen,
RmCreateBinSemaphore
RMOS3 V3.50 Benutzerhandbuch
Bedienhandbuch, 07/2012, A5E03692290-01
kreiert wurde. In der