www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CAN-Netzwerk mit Infineon, Flashen der Knotenteilnehmer


Autor: Holger B. (rst-el)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein CAN-Netzwerk mit 64 Knoten mittels Infineon XC886
am laufen. Ich suche nach einer Möglicheit, die Knoten von einer 
Zentraleinheit aus zu programmieren. Alle Knoten arbeiten mit derselben 
Software.

Das Ganze müßte vermutlich so aussehen:
- In einem Sektor der Knoten, der nicht gelöscht wird, stehen die 
Flash-Routinen
- Die Knoten werden über eine Broadcast Nachricht von der Zentraleinheit 
aus in den Programmiermode versetzt und warten dort auf die Datenblöcke.
- Die Zentraleinheit sendet die Datenblöcke (Broadcast Nachricht) zum 
Flashen über CAN, alle Knoten werden gleichzeitig programmiert.
- Da alles über Broadcast Nachrichten erfolgt, spielen die Identifier im 
Programmiermode keine Rolle.
- Eventuell könnte noch eine Checksumme mitübertragen werden, die nach 
der Programmierung jeder Knoten an die Zentraleinheit sendet.


Hat jemand schonmal so etwas ähnliches realisiert bzw. Erfahrung damit, 
wie solche Flash-Updates in der Praxis durchgeführt werden?

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen solchen Bootloader kann man über CAN bedienen. Das geht, wird z.B. 
im Automobilumfeld sehr häufig gemacht.

Allerdings würde ich auf das gleichzeitige Flashen aller Teilnehmer via 
Broadcast verzichten. Lieber jeden einzeln ansprechen und updaten. So 
kann der entsprechende Teilnehmer sich melden wenn was schiefläuft oder 
er nicht hinterherkommt, oder die Botschaft nicht korrekt empfangen 
wurde, oder oder oder ....

Ansonsten funktioniert das prinzipiell so wie du beschrieben hast.

Autor: Markus K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennst du die Seite schon?
Kannst ja hier was abkupfern
http://www.kreatives-chaos.com/artikel/can-bootloader

Autor: TManiac (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Holger,

das Szenario was du beschreibst ist, gelebte Praxis im Automobil. Auch 
hier werden (sogar verschiedene) "Controller" über den CAN (inzwischen 
auch FlexRay) geflasht.

Bei allen passiert so ungefähr das gleiche.
a) Bestimmte Dienste, wie auch der des Reprogramierens sind durch ein 
"Seed&Key" Mechanismus geschützt. Dieser soll verhindern das "jederman" 
das aufspielen kann was er will.
b) Das Steuergerät wird durch ein Kommando in die sogenannte Programming 
Session geschickt. Dies ist eine Minimal-Software (ein Bootloader) der 
eben auch das Kommunikationsprotokoll (in reduzierten Umfang) kennen 
muss. Das ist vor allem bei FlexRay wichtig, bei CAN geht es nur um die 
IDs.
-> Das SG fällt von allein wieder zurück in den Normalen Betrieb wenn es 
nicht explizit in der Programming Session gehalten wird. Wie es dort 
gehalten wird hängt von der Situation ab. Das "nichts-tuende-warten" 
heißt hier "TesterPresent". Aber auch eine laufende Datenübertragung 
hält die Session aufrecht.
c) die Routinen zum Beschreiben (und Löschen) des Flashs liegen NIEMALS 
im SG. Sie werden erst am Anfang der Programming Session in das SG 
geladen. -> Sicherheit geht vor.
Die Routinen werden im RAM abgelegt und dort auch ausgeführt. Manche 
Controller können eben nicht gleichzeitig aus dem Flash lesen und hinein 
schreiben (ist der Fall, wenn die Flash-Routine selber auch im Flash 
liegt und von dort ausgeführt wird)
d) Jetzt erst wird die eigentliche Applikation übertragen und in den 
Flash geschrieben.
e) Nach dem Schreiben wird anhand einer Checksumme geprüft ob der 
Flash-Vorgang erfolgreich war. Das Ergebnis wird auch irgendwo im SG 
abgelegt (EEPROM oder Flash).
f) Im EEPROM wird noch eine Kennung abgelegt, die beschreibt, wann und 
wer das SG zuletzt geflasht hat.
g) Das SG startet die Applikation nur dann, wenn das in e) beschriebene 
Ergebnis positiv ist. Sonst verbleibt das SG auch nach einem Reset im 
Bootloader.

Welches SG, bzw welcher Controller die neue Software bekommt wird durch 
den Mechanismus im Schritt b) bestimmt. Hier muss bei "nur" jeder 
Controller auf den gleichen Befehl reagieren.
Da CAN selber sicherstellt, dass alle Controller alle Packete korrekt 
erhalten braucht man sich in der SW darüber nicht den Kopf zerbrechen. 
Man muss nur zusehen dass alle schnell genug die Daten in den Flash 
bekommen oder rechtzeitig, zB durch eine Nachricht signalisieren das es 
eng wird.

Gruß,
TManiac

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.