Author Topic: Arduino boot von SD  (Read 12517 times)

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Arduino boot von SD
« on: September 24, 2014, 03:32:13 PM »
Salut,

ich wurde von einem Freund angesprochen, der davon gehört hat, dass man einen Arduino dazu bringen kann, den auszuführenden Sketch von einer SD Karte zu laden. Die dabei genannten bootloader sind 2boot und bootDrive.
Hat jemand damit Erfahrung?

Ciao, Mathias

pylon

  • freakyfriday
  • Full Member
  • *
  • Posts: 158
  • Karma: +16/-0
Re: Arduino boot von SD
« Reply #1 on: September 24, 2014, 04:32:21 PM »
Ich weiss nicht genau, ob Du das richtig verstanden hast. bootDrive kenne ich zwar nicht, aber 2boot ist einfach ein Arduino Bootloader, der die SD-Karte anstatt der seriellen Schnittstelle für Uploads benutzen kann. Der Sketch wird also nicht bei jedem Start von der SD-Karte geladen, sondern der Flash-Bereich wird mit dem Sketch auf der SD-Karte überschrieben, falls eine solche steckt und dann wird ein Reset ausgelöst.
Dies wird hauptsächlich verwendet, wenn ein Arduino im Feld per SD-Karte eine neue "Firmware" bekommen soll. Die SD-Karte kann danach problemlos entfernt werden, der Sketch ist dann normal im Flash gespeichert. 2boot entspricht einem Duemillanove-Bootloader (also nicht optiboot), passt in 2kB Flash, somit etwas grösser als der UNO-Bootloader.

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: Arduino boot von SD
« Reply #2 on: September 24, 2014, 05:55:49 PM »
Salut,

sorry, hatte mich unklar ausgedrückt. So habe ich das auch verstanden. Wie wird aber der Upload ausgelöst? Und hat das schon mal jemand ausprobiert?

Ciao, MAthias

microtherion

  • freakyfriday
  • Full Member
  • *
  • Posts: 163
  • Karma: +13/-0
Re: Arduino boot von SD
« Reply #3 on: September 24, 2014, 09:34:46 PM »
sorry, hatte mich unklar ausgedrückt. So habe ich das auch verstanden. Wie wird aber der Upload ausgelöst? Und hat das schon mal jemand ausprobiert?

Ich habe keine praktische Erfahrung damit, aber wenn die SD Karte per SPI angeschlossen ist, nehme ich an, dass diese einfach bei jedem RESET abgefragt wird (vielleicht mit einer Checksum, damit man die Update nicht in einer Endlosschleife macht).
 

pylon

  • freakyfriday
  • Full Member
  • *
  • Posts: 158
  • Karma: +16/-0
Re: Arduino boot von SD
« Reply #4 on: September 25, 2014, 11:13:10 AM »
Quote
Wie wird aber der Upload ausgelöst?

Der Bootloader schaut nicht auf die SD-Karte, ausser man schreibt den Namen der Datei, die es zu laden gilt, in den obersten Bereich des EEPROMs. Dann wird beim Power-Up (nicht bei einem Reset) die entsprechende Datei in das Flash geschrieben. Steht beim nächsten Stromunterbruch immer noch der Name im EEPROM und die Karte ist vorhanden, wird erneut in's Flash geschrieben. Damit kann relativ einfach ein Fern-Update programmiert werden. Die Update-Datei wird per Internet an den Arduino geschickt und auf die SD-Karte geschrieben. Dann wird der Name der Datei in's EEPROM geschrieben und beim nächsten Power-Cycle wird der Update eingespielt. Wenn beim Start des Sketches noch der oberste Bereich des EEPROMs gelöscht wird, ist eine ständige Re-Programmierung unterbunden.

Die Anpassung des Codes an Deine Bedürfnisse ist auch nicht sehr schwierig, er ist relativ übersichtlich und gut dokumentiert. So kannst Du z.B. den im normalen Code notwendigen Power-Cycle entfernen und nach einem Watchdog-Reset den neuen Code von der Karte laden. Der Auslöser des Resets kann aus dem Register MCUSR gelesen werden.

 

anything