Forum: Mikrocontroller und Digitale Elektronik CAN Bus und zuverlässiger Blocktransfer von Daten


von Dietmar (Gast)


Lesenswert?

Ich möchte über den CAN Bus eine "In Application Programmierung", IAP,
Fernupdate der Firmware, bei einer Hardware mit Philips LPC2129
durchführen. Der CAN Frame ist an sich schon sehr sicher, bietet eine
Redundanz von HD=6. HD, Hamming-Distanz, Definition, kann man in
Wikipedia nachschauen.

Es handelt sich hier um einen lokalen CAN Bus mit zentralem
Steuergerät, welches die Daten z.B. über Ethernet empfängt und an den
ausgewählten CAN Knoten weitergibt.

Nun, der CAN Bus ist von Haus aus eigentlich nicht dazu gedacht,
Blocktransfers von Daten durchzuführen. Aber, er ist sehr flexibel, und
nichts spricht dagegen.

Die einzelnen Datenblöcke haben eine Größe von z.B. 128 Byte.

Also, mehrere Blöcke für einen Software-Download.

Ist da jemand der Meinung, daß ich bei einem Datenblock oder für die
gesamten Daten noch einen CRC-Check hinzufügen soll, wenn ich die
gesendeten und empfangenen Bytes auch numeriere (Numerierung z.B. 1
oder 2 Byte im 8 Byte Datenblock des CAN Frames) und die Numerierung
überwache?

Oder konzentriere ich mich besser sofort auf CRC des gesamten
Datensatzes?

Hat da jemand schon Erfahrung, oder einen Tip?

Gruß

Dietmar

von Daniel M. (usul27)


Lesenswert?

CRC über alles reicht völlig. Du wirst ja vermutlich eh abbrechen, wenn
es einen Fehler gibt. Solange du nicht explizit einen Retransmit für
einzelne Frames vorsiehst, ist es völlig ausreichend, am Ende eine
Prüfsumme (halt CRC o.ä.) über alles zu bilden.

von Dietmar (Gast)


Lesenswert?

@Daniel:

Ein Retransmit für einzelne Blöcke dürfte auch möglich sein. Das kann
ich jetzt noch entscheiden. Z.B. eine Modulo-Prüfsumme oder CRC für
einzelne Blöcke? Vielleicht ist da noch ein Ansatz?

Abbrechen kann ich ansonsten nur bei einem CAN Frame Error, z.B.
falsche CRC bezüglich des Frames. Auch dann, ließe sich ein einzelner
Block neu anfordern.

Denn, für den gesamten Transfer des Datenpaketes, veranschlage ich gut
5 Minuten. Das könnte im Extremfall, bei CRC-Bildung erst am Ende, ins
Endlose führen.

Gruß

Dietmar

von SupaChris (Gast)


Lesenswert?

Also auf Arbeit machen wir das schon lange. Klappt wunderbar und die
normale Fehlerbehandlung des CAN reichte bisher immer aus. Wir
programmieren da TMS320F2812 über IXXAT oder Sontheim Interfaces vom PS
aus. Dauer eine Weile, aber man kann eben gleich mehrere Controller in
einem Rutsch programmieren ohne JTAG.

von Dietmar (Gast)


Lesenswert?

@SupaChris:

Danke für die Info.

Die Interfaces, muß ich erst selbst erstellen.

Absicht ist, einen, mehrere oder alle Controller am Bus zu updaten, je
nach Akzeptanzfilterung bzw. ausgewählten Identifiern.

Tritt ein Fehler auf, wiederholt der Sender ohnehin den Frame bis zum
Erfolg. Das scheint also kein ernsthaftes Problem zu sein.

Gruß

Dietmar

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.