www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootloader per Infrarot


Autor: Armin Kniesel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wäre das möglich, daß man das Programm per Infrarot in den AVR flasht?
Was bräuchte man dafür? Einen IrDA-Empfänger?
Oder reicht da ein normales Fotomodul wie TSOP1836 oä?

Mich nervt, daß man ständig das Kabel zum programmieren einstecken muß,
ich kann in meinem Fall das Kabel aus mechanischen Gründen nicht drin
stecken lassen beim Betrieb.

Armin.

Autor: Armin Kniesel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Gedankengang war der, ein IrDA-Modul am PC habe ich schon, einen
virtuellen COM-Port auch, somit müsste PC-seitig das Problem nicht
liegen. Nur wie sieht das AVR-seitig aus? In einem anderen Thread habe
ich verschiedene Meinungen über RS232 über IrDA gelesen.

Armin

Autor: Arvid Teichtmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich setze an einem MSP430 einen IrDA Controller MCP2150 von Microchip
ein. Allerdings nicht zum Flashen, sondern zur Datenübertragung. Ich
plane, eine In-System-Update Funktion zu integrieren, mit der der
Controller sich selber mit einem neuen Programm über IrDA flashen
kann.

Was Du vorschlägst, wird so einfach wahrscheinlich nicht funktionieren.
Du verlierst über IrDA Pakete, d.h. Du must ein Protokoll aufsetzen, um
sicherzustellen, dass alle Pakete angekommen sind (es sei denn, es gibt
IrDA-Controller, die diesen Part übernehmen können).
Dazu must Du auf der PC-Seite Software schreiben und auf AVR-Seite auch
Routinen für den Software-Update haben. Möglicherweise sogar einen
extra AVR, der das Protokoll und das flashen des eigentlichen
AVR-Controllers übernimmt.

Wenn Du eine gute Lösung gefunden haben solltest, würde mich
interessieren, wie Du es gelöst hast.


Gruss
Arvid

Autor: Markus Kaufmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Armin:
Man könnte das Signal auch mit dem TSOP1836 empfangen, aber nicht per
IRDA. Die Übertragungsrate ist wohl deutlich geringer als bei Irda,
könnte aber vermutlich mit der normalen ISP-Programmierung mithalten.

Wie Arvid schon erwähnt hat, braucht man im Prinzip einen Rückkanal,
damit man sehen kann, ob die Programmierung funktioniert hat. Man
könnte darauf verzichten, wenn man eine fehlerhafte Übertragung
anderweitig erkennen kann, d.h. wenn man z.B. eine sowieso vorhandene
LED zur Statusanzeige verwendet. Man muß dann aber eine fehlgeschlagene
Übertragung nochmal komplett wiederholen und die Programmiersoftware
weis nicht, ob die Übertragung geklappt hat.

Nur Hin-Kanal: IR-LED an PC, TSOP an AVR.
Hin- und Rückkanal: IR-LED und TSOP an PC und AVR.

Prinzipiell mußt Du aber auf jeden Fall einen Bootloader für den AVR
schreiben und beim PC ein Programm, daß die Daten übertragen kann.


Bei IRDA (mit passendem Chip) könnte es sein, daß Du den
RS232-Bootloader verwenden kannst, aber da bin ich mir nicht sicher, da
ich nicht weis, wie der Bootloader erkennt, daß Daten anliegen.

Markus

Autor: Armin Kniesel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wie schreibt man so einen Bootloader?
Wenn Infrarot Daten -> Dann kopieren ins Flash?
Geht das so einfach? Ich habe noch nie mit dem Bootloader gearbeitet
und weiß nicht was man dem sagen muß.

Aber schonmal Danke für die Tipps.

Armin

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vor allem solltest Du erst einmal absolut (soweit wie möglich)
sicherstellen, das sich der Bootloader nich alleine aktivieren kann
(EMV-Probleme ect.).
Sogar Atmel hat ja Probleme damit.
Ich habe zwar meinen Bootloader (allerdings PIC) eigentlich fertig,
scheue mich aber trotzdem (noch) diesen befehlsgesteuert zu aktivieren.
Ich habe schon überlegt einen speziellen Header zu verwenden und die
Programmierung nur durchzuführen wenn der stimmt. Aber was ist, wenn
aus irgendeinem nichterfindlichen Grund der Programmcounter genau
hinter die Abfrage zeigt (besser gesagt durch irgendeine Störung
dahingeworfen wird)?

Dazu würden mich eure Meinungen interessieren.

Zurück zur eigentlichen Frage:

Der Bootloader ist im Prinzip nur ein kleines Programm, was in der Lage
ist Befehlsgesteuert (vom PC z.B. über RS232) den restlichen Flash des
Prozessors zu programmieren. Der Schnittstellentyp zum PC ist dabei
eigentlich egal. Wichtig ist nur, das der Prozessor nach dem Schreiben
eines Datenblockes ein Prüflesen durchführt und das Resultat an den PC
zurückmeldet. Kommt keine Rückmeldung oder ein Fehler, dann wird
einfach versucht den Block nochmal zu programmieren. Ohne
Bidirektionale Datenübertragung funktioniert das natürlich nicht.

Steffen

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Steffen,


"Aber was ist, wenn
aus irgendeinem nichterfindlichen Grund der Programmcounter genau
hinter die Abfrage zeigt (besser gesagt durch irgendeine Störung
dahingeworfen wird)?"


Das darf einfach nicht passieren !
Also immer schön einen ordentlichen Reset-IC nehmen oder den internen
Brown-Out.

Ansonsten kannst Du doch jedes Programm vergessen, wenn Du erwartest,
daß der PC kreuz und quer an eine beliebige Stelle hüpft.


Ich habe mir auch einen Bootloader für den Mega8 geschrieben,
funktioniert super.
Er ist aber nur für 200ms nach dem Einschalten aktiv und versucht die
Baudrate zu erkennen und das Paßwort.
Die PC-Software versucht ständig das Paßwort zu senden, d.h. das
PC-Programm muß zuerst gestartet werden.

Super ist am Mega8, daß auch der Botloader Interrupts benutzen kann,
d.h. während eine Page geschrieben wird, können schon die Bytes für die
nächste Page empfangen werden.
Man muß bloß vor dem Start der Anwendung die Interruptvektoren wieder
zurück in den User-Flash setzen.


Peter

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Das darf eigentlich nicht passieren !"

Sollte es eigentlich auch nicht. Aber was wenn das System irgendwo
extremsten Störungen ausgesetzt ist?

Ich erwarte nicht, das der PC kreuz und quer springt aber eine 100%-ige
Sicherheit habe ich eigentlich nicht.

Aus dem Grund sperre ich den Flash gegen Schreibzugriffe. Das hat
natürlich den Nachteil, dass ich das System nur über die
ICSP-Schnittstelle programmieren kann. Über den Bootloader geht es
etwas ellegannter.

Steffen

Autor: Markus Kaufmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Steffen:
Entweder Deine Schaltung ist für diese "extremsten Störungen"
ausgelegt, dann darf der PC auch unter diesen Bedingungen nicht
springen. Oder die Schaltung ist nicht dafür ausgelegt, dann sind diese
Störungen ganz klar außerhalb des Spezifikation und dann kann eben
alles passieren.

Außerdem stellt sich die Frage, ob der Schutz gegen Schreibzugriffe
überhaupt noch funktioniert, wenn die Störungen so stark sind, daß
Register willkürlich verändert werden.

Markus

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Markus,

das ist soweit richtig. Es ist nur so, das wir teilweise Baugruppen,
die ich leider auch nicht in einem geschirmten Gehäuse unterbringen
kann, als OEM-Produkte (Platine zum Einbau in andere Systeme)
verkaufen.

Gerade eine dieser Installationen ist problematisch. Ich habe noich
nicht den blassesten Schimmer was da genau passiert. Es ist auch nur
eine von mehreren Hundert. Ein EMV-Test wurde natürlich nach allen
Normen ohne Probleme durchgeführt.

Wie gesagt eigentlich hab ihr beide Recht aber ich bin da lieber
vorsichtig.

Steffen

Autor: Daniel Roth (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi !

In der AppNote AVR109 "Self Programming" ist ein Bootloader mit
C-Quelltext beschrieben, der über die serielle Schnittstelle läuft. Als
Software auf dem PC kommt AVR Prog (im Studio integriert) zum Einsatz.
Vielleicht hilft's !? Für die Übertragung müsste dann ein fertiger
IR-Adapter, der einen Com-Port emuliert, funktionieren.

Daniel

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.