mikrocontroller.net

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


Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Daniel M. (usul27)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SupaChris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.