Arduino als ISP ohne Computer


12

Hat jemand eine Methode zum Vorabladen (mit einem Computer oder was auch immer) einer Firmware als Daten auf ein Arduino gesehen oder gewusst, das für den Betrieb als ISP eingerichtet ist, und dann mit diesem Arduino die ISP-Schnittstelle in ein anderes einsteckt und die Firmware hochlädt?

Um es klar zu sagen: Ich suche nach einer Möglichkeit, das Hochladen von Arduino-Skizzen ohne direkte Verbindung zu einem vollwertigen Computer zu ermöglichen.

Im Idealfall wären die Schritte:

  1. Neue Skizze / Firmware schreiben
  2. Firmware kompilieren
  3. Schreiben Sie eine Kopie der Firmware auf Arduino A als Daten (Arduino A ist so eingerichtet, dass es als ISP funktioniert).
  4. Trennen Sie Arduino A vom Computer
  5. An einem separaten Ort verbinden Sie Arduino A mit Arduino B unter Verwendung von ISP-Headern
  6. Verwenden Sie eine Methode (möglicherweise einen Druckknopf), um Arduino A zu starten und die vorinstallierte Firmware auf Arduino B hochzuladen.

Ich gehe davon aus, dass es theoretisch funktionieren könnte, da das Hochladen von Firmware nur ein Austausch von Bytes über die SPI-Schnittstelle ist, aber ich bin nicht sicher, ob dies der Fall ist.

Das Szenario, für das ich überlege, ist, wenn ich ein Arduino (dauerhaft) an einem Ort installieren würde, der von meinem Computer entfernt ist (ich habe keinen Laptop und möchte auch keinen haben), wäre es mühsam, es neu zu programmieren es.

Die andere Methode, die ich in Betracht gezogen habe, ist die Verwendung des DIL-verpackten ATMEGA, das ich dann von der Platine entfernen und am Computer programmieren und zur Platine zurückkehren kann Chip jedes Mal, wenn ich neu programmieren möchte.


Das Ergebnis wäre, dass Sie andere Arduinos nur mit der genauen Skizze / Firmware programmieren könnten, die in den Programmierer (Arduino A) geladen wurde. Es wäre also nur sinnvoll, Kopien wie in einer Produktionslinie anzufertigen, oder? Wenn Sie etwas an der Skizze ändern müssen, müssen Sie zum Ändern und erneuten Laden des Computers zurückkehren. Habe ich das richtig verstanden?
Ricardo

1
Ist es nicht möglich, das "Flash-Image" auf einem anderen Datenträger (z. B. einer SD-Karte) auf dem Ziel zu speichern?
Jfpoilpret

Ja. Ich nehme an, es wäre auch gut für eine Produktionslinie. Meine Situation ist, dass ich einen Arduino in ein Gehäuse geklebt habe, das schwer zu bewegen ist und sich in einem anderen Raum befindet als mein Computer (auch schwer zu bewegen). Daher würde ich die Skizze gerne jedes Mal auf Arduino A laden, wenn ich sie ändern wollte.
M3Z

2
Es wurde zu dem begrenzten Zweck erstellt, einen Bootloader zu programmieren - github.com/WestfW/OptiLoader - aber es sollte für jede Nutzlast funktionieren, die kleiner als der verfügbare Flash-Speicher ist, abzüglich der Größe des Tools. Für eine größere Nutzlast-Firmware sollte ein externes Speichergerät (oder einfach ein Arduino Mega?) Funktionieren.
Chris Stratton

@ ChrisStratton das sieht für mich perfekt aus, um sich anzupassen. Vielen Dank
M3Z

Antworten:


5

Ich denke µProg - winziger, schneller, portabler AVR-Programmierer mit SD macht das, was Sie wollen. Sie können mehrere Dateien auf der SD-Karte speichern (hex, eep usw.) und im Gerätemenü auswählen, welche auf die Ziel-MCU geschrieben werden soll, ohne dass ein PC erforderlich ist.
Das Beste daran ist, dass es kostenlos erhältlich ist (PCB, Schaltplan, Firmware usw.).

Einzigartiger, portabler AVR-Programmierer! Hilft überall dort, wo Sie die Geräte-Firmware aktualisieren müssen, sich das Zielgerät an einem schwer erreichbaren Ort befindet und Sie Ihren Laptop nicht mit ein paar Kabeln mitnehmen können (oder wollen). Trivial einfach zu bedienen, supergünstig herzustellen, superklein, superschnell, verwendet SD-Karten ...

Eigenschaften:

  • super klein - Maße 44 x 39 x 5,5 mm
  • superschnell - schreibe bis zu 12,5kB / s, lese bis zu 14,5kB / s
  • verwendet billiges Speichermedium - kleine MICRO SD-Karten
  • unterstützt die Dateisysteme FAT16 und FAT32
  • kann Flash- und EEPROM-Speicher lesen, schreiben und überprüfen
  • kann Fusebits und Lockbits lesen, schreiben und verifizieren
  • Schreiben und Lesen von BIN-, HEX- und TXT-Dateien
  • kann Standardwerte für Fusebits festlegen, Speicher löschen
  • Günstiges, leicht zu beschaffendes LPH7779-Grafikdisplay
  • zeigt nach jeder Operation lustige Animationen
  • Standard-Programmierkopfzeile - Atmel 6-PIN ISP
  • hat eine Funktion zur automatischen Aktualisierung der eigenen Firmware (von SD)
  • Sehr einfach zu bedienen, 4-Tasten-Navigation
  • Benutzereinstellungsmenü
  • Automatische Auswahl der Programmiergeschwindigkeit (bis zu 4 MHz)
  • Arbeitet mit 3 V, programmiert Chips, die von 3 V bis 5 V versorgt werden

Liste der unterstützten Chips

Bildbeschreibung hier eingeben


Sieht gut aus. Wird am Wochenende untersuchen.
m3z

Ich weiß nicht, wie ich diese Frage neulich verpasst habe. Ich habe nur mit einem Freund darüber gesprochen, dieses genaue Projekt selbst zu erstellen. Und dann sehe ich deine Antwort.
Madivad

4

Ich habe keine direkte Lösung für das, was Sie wollen, aber es ist möglich, es zu tun. Sie können eine Bootloader-Firmware so hacken, dass sie den Firmware-Flash-Code liest und über ISP hochlädt.

Obwohl Sie offensichtlich keine 32k Firmware auf den Ziel - AVR hochladen können, wenn beide Arduinos nur 32k Total Flash in ihren MCUs haben, müssen Sie den Flasher mehr Flash als das Ziel haben, wenn Sie dies möchten (ein 1284p oder 2560 Mega werden weit genug sein, oder eine 328 / 32u4 wird genügen, um eine 168 oder einen attiny zu blinken). Die einzige Ausnahme wäre, dass die Firmware viel kleiner als der Gesamtspeicher geflasht wird (wie bei einer Blinkskizze).

Am Ende wird das nicht einfach sein, es ist 100% reiner AVR-Code, aber Sie können es tun. Schauen Sie sich an:

Die Art und Weise, wie ich das implementieren würde, wäre, entweder alles in den Bootloader des Flasher-Geräts einzupassen, damit die Firmware (alles von 0x00 bis zur Startadresse des Bootloaders) gelesen und durch Zusammenführen von AVRISP mit Optiboot über den ISP geflasht wird.

Wie auch immer, das ist ein interessantes Projekt für einen Workshop über Bootloader und AVRs, den ich in meinem lokalen Hackerspace vorschlagen kann! ;-)

HTH


Danke, der AVRISP-Quellcode sieht nicht so komplex aus, wie ich erwartet hatte. Ich werde am Wochenende etwas
genauer darauf eingehen

Wo ist dein lokaler Hackerspace? :)
Madivad

Es ist in Frankreich Le Loop
zmo

keine probleme, dafür ist abstimmen
;-)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.