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 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.
>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 :)
H. schrieb: > Was ist XCP und für was steht die Abkürzung? http://de.wikipedia.org/wiki/Universal_Measurement_and_Calibration_Protocol
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.
>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.
>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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.