Forum: Mikrocontroller und Digitale Elektronik Debuggen mit XCP - gibt es XCP als OpenSource ?


von onklHanz (Gast)


Lesenswert?

Hallo.

Mit XCP kann ich ja ein Mikrocontrollersystem zur Laufzeit debuggen.
Ich binde dazu ein kleines Modul zusätzlich in mein Projekt ein und kann 
über USB/SPI/CAN/Ethernet oder was auch immer auf alle Variablen zur 
Laufzeit zugreifen. Wie bei einem Debugger. Für PC gibt es dann eine 
tolle Software, mit der ich die Messwerte grafische (als Scope) 
darstellen kann.

Ideal für Regelungsaufgaben aber auch für fast alle Projekte.

Nun kenne ich aber nur kommerzielle Tools und frage mich, weshalb es 
hier noch keine OpenSource Lösungen gibt. Jedenfalls finde ich nichts.

onklHanz

von peterguy (Gast)


Lesenswert?

Von Vector gibt es (abgespeckte) offene Sourcen für XCP, die du in dein 
µC Projekt einbinden kannst.
Messwerte auslesen und Parameter schreiben geht damit auf jeden Fall, 
glaube nur das Bootloaderzeugs musste ich damals selberdazufriemeln.

Allerdings ist mir kein kostenloses PC Tool bekannt, mit dem du eine XCP 
Verbindung aufbauen kannst.

Also:
Schreib mal eins :D


P.S.: Üblicherweise brauchst du auch noch ein A2L File, das kannst du 
aber zur Not mit einem Texteditor schreiben.

von onklHanz (Gast)


Lesenswert?

>Also:
>Schreib mal eins :D
Genau. Das ist auch der Grund meine Frage.

- ob es sowas nicht schon gibt, so dass ich nichts schreiben muss. Bzw. 
ein OpenSource Projekte starte. Ich glaube nämlich, dass man bereits mit 
10% des Funktionsumfangs einer professionellen Lösung gut arbeiten 
könnte.

- ob in der "Szene" überhaupt Interesse besteht. Ich glaube viele hätten 
Interesse, wissen es aber noch nicht :)

von H. (Gast)


Lesenswert?

Was ist XCP und für was steht die Abkürzung?

von D. K. (Gast)


Lesenswert?


von Le X. (lex_91)


Lesenswert?

Wenn es dir nur ums auslesen von Variablen geht kannst du dir den 
KommandoFrame, den der XCP Master normalerweise verschicken würde auch 
selbst senden, zB über ein Terminal (falls USART als PHY benutzt wird).

In den ASAM Specs ist der Rahmenaufbau genau beschrieben. Je nach 
Komfort des Terminals kannst du dir auch Makros anlegen.

Den freien Vektor Treiber hab ich auch bereits genutzt. Für 
Hobbyprojekte reicht der locker, nur eben der Bootloader Support wäre 
noch nett.

Was umständlich wird ohne geeignetes Tool ist das Verwalten der 
Adressen. Diese können sich ja bei jedem Kompilieren ändern. Normal 
würde zB CANape sich darum kümmern, so musst du das per Hand machen.

Ich würde erst mal mit einem Parser anfangen, der dir eine Liste aller 
Variablen samt Adressen erstellen kann.

von onklHanz (Gast)


Lesenswert?

>Ich würde erst mal mit einem Parser anfangen, der dir eine Liste aller
>Variablen samt Adressen erstellen kann.
Ja. Hatte ich schon gemacht. Für einen Cosmic Compiler.
Wenn man's als Projekt aufsetzt sollten natürlich die gängigsten MAP 
files unterstützt werden.

von onklHanz (Gast)


Lesenswert?

>Was ist XCP und für was steht die Abkürzung?
Im Prinzip schickt man über einer der vielen möglichen Schnittstellen 
(CAN/UART/ETHERNET) zu Beginn folgendes zum µC:

Sende mir 16 Bit Wert von Adresse 0x00042 alle 100ms
Sende mir 16 Bit Wert von Adresse 0x00044 alle 10ms
Sende mir 8 Bit Wert von Adresse 0x00046 alle 10ms
Der leg das in einem Array/Liste ab. Und macht das dann zyklisch.

Die Werte von 0x00042 werden am PC in nem Scope Fenster angezeigt.
Dass auf 0x0042 die Variable "iSuperVariable" liegt, weiss nur der PC.

Zur Laufzeit kann man aber auch runter schicken:
Sende mir 16 Bit Wert von Adresse 0x00048 einmalig

Aber auch das Abspeichern von Parametern geht.

von lex (Gast)


Lesenswert?

Ich wollte auf die Frage, was XCP ist eigentlich nicht antworten, weil 
Troll.

Jetzt muss ich aber doch was dazu sagen und dich leider korrigieren:

Genaugenommen trägst du deine Variablen (=Adressen) zu Beginn einer 
Sitzung in einer Liste ein. Das stimmt.

Dafür, dass einige Variablen alle 100ms, andere alle 10ms aktualisiert 
werden bist aber du verantwortlich.
Dazu musst du in deiner ECU Software ein Event zyklisch triggern, dass 
die Liste abarbeitet.

Weniger umständlich, aber erstmal ausreichend ist, der PC Software alle 
100ms eine Variable abfragen zu lassen (=polling). Resultiert halt in 
mehr Overhead.

von Zaphod (Gast)


Lesenswert?

Hi,

ganz richtig sind die Aussagen alle nicht.


Im Polling-Modus frägt der Master vom Slave (dem Steuergerät) eine 
Anzahl Bytes ab einer von einer Speicheradresse ab oder schreibt diese

Beispiel der Master sendet: "Lese 1 Byte ab Adresse 0xAFFE"
Der Slave antwortet mit den entsprechenden Bytewerten "0x42"

Im DAQ-Modus (Event) allokiert der Master Listen mit Startadressen und 
Längen auf dem Slave und ordnet diese einem Ereignis zu. Das Ereignis 
selbst ist im Steuergrerät definiert und kann zyklisch sein, muß aber 
nicht. In den meisten Fällen ist es der Beginn oder das Ende einer 
zyklischen Task (1ms, 10ms, 100ms,....) Mit dem Auftreten des 
Ereignisses begint dann der Slave die Daten zu übetragen. Es muss auch 
nicht zwingend eine Allokation sein, die Listen können statisch und/oder 
vordefiniert sein.

Weitere Dienste sind noch die Programmierung von Flash- und 
EEProm-Speicher, die Umschaltung von Kalibrierseiten, (so eine Art 
Auswahl Parametersätzen) und die Kalibrierung, also das Verändern 
einzelner Parsameter


Das Protokoll ist massiv auf eine schlanke Slave-Implementierung und 
einen hohen Netto-Datendurchsatz optimiert, eine nahezu vollständige 
Slave-Implementierung lässt sich mit weniger 200 C-Code-Zeilen 
darstellen.

Auf dem Master siehts schon schwieriger aus, der hat ordentlich zu 
arbeiten, vor allem braucht er Informationen über das Steuergerät, z.B. 
an welcher Adresse sich welcher Wert befindet und wie dieser in 
physikalische Größen umgerechnet wird, oder welche Events (Ereignisse) 
auf dem Steuergerät verfügbar sind. Diese Informationen werden über eine 
sogenannte A2L-Datei bereitgestellt. Die ist zwar im Textformat, einen 
tauglichen A2L-Parser zu entwickeln dauert Jahre

VG Zaphod

von Atze (Gast)


Lesenswert?

Guckscht Du hier wegen Open Source:

http://rbei-etas.github.io/busmaster/

Gruß
Atze

von Ma (Gast)


Lesenswert?

Seit wann kann Busmaster XCP?

Wegen "Open Source" hättest Du jetzt auch nen Link zum Linux-Kernel 
schicken können, wäre ungefähr genauso hilfreich.

Zum Thema: Der kostenlose Slave-Stack von Vector ist in einigen Punkten 
eingeschränkt. WIMRE konnte der nicht in NVRAM schreiben, DAQ und STIM 
ging auch nicht (oder nur stark eingeschränkt). Nachdem man aber die 
Sourcen hat/bekommt, könnte man die fehlende Funktionalität ergänzen 
(ich glaube, da waren Stubs dafür vorhanden).
An sich ist das Protokoll kein Hexenwerk, nichts, was nicht in 1-2 
Diplomarbeiten pro Teilnehmer (Master/Slave) von halbwegs fähigen 
Studenten hinzubekommen wäre ;-)
Lediglich A2L ist ein wahres Wunderwerk der Ingenieurskunst... Wer sich 
das in Zeiten von XML etc. einfallen ließ, gehört gesteinigt.

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.