CAN Bus und zuverlässiger Blocktransfer von Daten

Gast #343474
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
Gast #343476
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
Gast #343477
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.
Gast #343478
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

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