Forum: Mikrocontroller und Digitale Elektronik Timeouterkennung als XCP Slave


von c-ler (Gast)


Lesenswert?

Hallo,

ich tüftle gerade an einem Problem:

Ich habe einen Prozessor auf dem ein XCP Slave Treiber läuft.
(XCP ist ein Protokoll aus dem Automotive Bereich und kann als 
Erweiterung zu CCP angesehn werden, dass allerdings verschiedene 
Transportlayer als nur CAN unterstützt. Es wird unter anderem zum 
Auslesen und Parametrieren von Steuergeräten benutzt).

Die Software auf meinem Board steuer verschiedene Ausgänge, zB ein 
Display oder PWM Kanäle.
Ein XCP Master (zB ein PC mit CANape) kann verschiedene Variablen der uC 
Software verändern und dadurch zB die PWM beeinflussen.

Ich würde gerne das System sicherer machen indem ich versuche 
festzustellen, ob der Master überhaupt noch sendet, bzw ob er hängt. 
Also eine Art Timeouterkennung, um die Applikation in einen definierten 
Ruhemodus zu fahren.

Wer XCP kennt weiß, dass Werte die in den uC geschrieben werden direkt 
an eine Adresse im RAM geschrieben werden. Das heißt, meine Applikation 
hat erstmal keine Möglichkeit festzustellen, wann die letzte Übertragung 
stattgefunden hat.
Außerdem schickt ein XCP Master seine Parameter nicht zyklisch, sondern 
nur bei Änderungen oder bestimmten Events.

Den Treiber selbst würde ich nur ungern "aufbohren", da dieser nicht von 
mir stammt und eigentlich als Blackbox betrachtet werden kann/soll.

Ich könnte den Master zyklisch senden lassen. Aber ändert sich der Wert 
nicht, hat meine Applikation wieder keine Möglichkeit, einen Timeout des 
Masters festzustellen.

Hat hier jemand eine elegante Möglichkeit? Weis jemand weiter?

Danke & Viele Grüße,
der c-ler

von Karl H. (kbuchegg)


Lesenswert?

c-ler schrieb:

> Hat hier jemand eine elegante Möglichkeit? Weis jemand weiter?

Dann hast du nur noch eine Chance:
Dein Master muss regelmässig 'Still Alive' Nachrichten versenden.

> Ich könnte den Master zyklisch senden lassen. Aber ändert sich der Wert
> nicht,

Dann musst du eben dafür sorgen, dass sich 'der Wert' ändert. Und wenn 
es nur eine bestimmte, sonst unbenutzte Variable ist, die vom Master 
alle 2 Sekunden von 0 auf 1 und 2 Sekunden später wieder zurück geändert 
wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.