CAN-Mikrocontroller, welcher überschreiben von CRC-Feld ermöglicht

Gast #1179350
Lesenswert?

Hallo,

ich bin auf der Suche nach einem µC mit CAN oder einem 
Standalone-CAN-Controller, welcher mir ermöglicht, das CRC-Feld im 
CAN-Datenframe selbst zu bestimmen. Beim MCP2515 funktioniert dies 
nicht, da die Hardware den CRC nach meinen bisherigen Infos aus dem 
Datenblatt selbst berechnet. Der CRC-Wert wird zwar zwischendurch in ein 
CRC-Register abgelegt, dieses ist aber nach meinen Infos nicht selbst zu 
beschreiben.

Kennt jemand von euch CAN-Hardware, bei denen man diese Automatismen 
übergehen kann?

Danke & viele Grüße,
Benjamin
Gast #1179850
Lesenswert?

Was willst du damit anfangen?

Das ist schon von der CAN Spec her nicht möglich. Da heutige Controller 
alle die Spec einhalten, wird auch bei allen der CRC genauso wie 
Arbitierung und die ganzen anderen Layer 1 Sachen im Controller selber 
erldigt. Nicht mal bei den mir bekannten Testhardwaretools lässt sich 
der CRC per hand einstellen.
#1181435
Lesenswert?

hallo benjamin.

> ich bin auf der Suche nach einem µC mit CAN oder einem
> Standalone-CAN-Controller, welcher mir ermöglicht, das CRC-Feld im
> CAN-Datenframe selbst zu bestimmen.

wie gesagt, wenn sich eine schnittstelle CAN schimpft, darf sie auch nur 
so tun wie CAN spezifiziert ist. und die spezifikation sieht nun mal 
keine "benutzerdefinierte" CRC vor.

einzige chance, die du hast: besorg dir einen µC (genauer gesagt einen 
pro netzwerkknoten), der schnell genug ist, und implementiere ein 
eigenes "beinahe-CAN-protokoll". viel spaß :-)

gruß

michael
Gast #1181494
Lesenswert?

Was mir noch eingefallen ist:

Wie kommst du auf die Idee den CRC verändern zu müssen? Falls es um 
Übertragungen im Auto geht, so muss man dazu sagen, dass manche 
Nachrichten zusätzlich noch einen Mini-CRC innerhalb der Datenbytes 
haben. Dieser dient aber ausschließlich der Plausiblitätsprüfung.
Dieser zusätzliche CRC wird zum Beispiel bei der Übertragung von 
sogenannten Segmentierten Nachrichten verwendet um zu überprüfen dass 
keine Nachricht fehlt.

Gruß TManiac
Gast #1181514
Lesenswert?

Ich vermute, Benjamin möchte mit seinen falschen CRCs absichtlich 
fehlerhafte Nachrichten erzeugen, um z.B. Empfängerknoten zu testen.

Wenn dem wirklich so sein sollte, würde ich einen FPGA empfehlen und 
versuchen, an einen open source CAN Core/IP für diesen FPGA zu kommen.
Das hätte den riesen Vorteil, daß man die komplette Erzeugung der 
Botschaften nach seinen eigenen Wünschen gestalten kann. Man ist also 
nicht beschränkt auf Änderungen am CRC, man könnte z.B. auch Bits 
kippen, die Bitdauer verändern, falsche Header ausgeben, etc...
Gast #1181740
Lesenswert?

Im Rahmen einer Diplomarbeit möchte ich dem CAN-Bus Sicherheit in Form 
von Authentifizierung bzw. Identifizierung der Steuergeräte 
untereinander hinzufügen. Dazu muss natürlich zusätzlicher Overhead 
aufgestaut werden. Eine Idee war es, u.a. das CRC-Feld zusätzlich dafür 
zunutzen (Kombination CRC-Feld/Authentizitätsinformationen).

Danke für die bisherigen Antworten, das hilft mir weiter!

Benjamin
Gast #1181981
Lesenswert?

Hi Benjamin,

>>Im Rahmen einer Diplomarbeit möchte ich dem CAN-Bus Sicherheit in Form
>>von Authentifizierung bzw. Identifizierung der Steuergeräte
>>untereinander hinzufügen. Dazu muss natürlich zusätzlicher Overhead
>>aufgestaut werden. Eine Idee war es, u.a. das CRC-Feld zusätzlich dafür
>>zunutzen (Kombination CRC-Feld/Authentizitätsinformationen).

Der Empfängerknoten wird die Botschaft in diesem Fall einen CRC Fehler 
erkennen und die Botschaft zerstören. Für zusätzliche Sicherheit stehen 
Dir nur die Daten und eventl. die ID zur Verfügung.

Gruß
Patrick
Gast #1182007
Lesenswert?

Ganz genau, wenn du den CRC verfälschst, wird die Botschaft vom 
Empfänger verworfen. Versuch doch mit Multiplexing zu arbeiten, in dem 
du z.B. das erst Datenbyte verwendest, um die restlichen 7 Bytes zu 
identifizieren.
Beispiel:
1.Byte: 0, restliche Bytes werden als Authentifizierungsdaten 
interpretiert
1. Byte: 1, restliche Daten werden als "normale" Botschaftsdaten 
interprtiert

Der Nachteil ist halt, daß du ein Byte "verschwendest", also mehr 
Overhead hast. Aber irgenteinen Tod wirst du sterben müssen...
Gast #1182016
Lesenswert?

Also für einen Fehlersimulator würde mir so etwas auch gefallen. Wie 
wird eigentlich in der (Entwickler-)Praxis überprüft ob der Knoten alle 
Anforderungen erfüllt (u.a. Kontrolle ob die EmpfangsCRC richtig 
berechnet werden)?

Aber für die Identifikation kann man vielleicht den 29Bit Identifier 
nutzen.

Steffen
Gast #1182944
Lesenswert?

Authentifizierung bzw. Identifizierung der Steuergeräte ist eigentlich 
schon gängige Praxis. So wird zum Beispiel ein "Querverbau" (der Einbau 
eines Steuergerätes in ein anderes Auto) schon lange erkannt und das 
Auto in den Notlauf geschickt. Oder auch die Kommunikation eines 
OBD-Testers mit den Steuergeräten ist abgesichert.

Die Strategien sind unterschiedlich. Auf der einen Seite kann man ein 
einmal aufgestartes Gerät mit einem Timeout überwachen. Und ein 
Aufstarten kann man so komplex machen, wie die Fantasie es hergibt. Auf 
der anderen Seite muss ein Steuergerät nicht nur über eine ID senden, 
man kann auch eine zweite zur Identifizierung nutzen. Oder wie es schon 
angesprochen wurde die MsgId an sich kann man auch nutzen. Und bei einer 
29bit langen hat man sehr viel Platz für solche Spielereien.

Aber es soll ja deine Diplomarbeit werden also mach die einen Kopf. Das 
beste ist meißt ganz einfach und man sieht es zu beginn nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren