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:
- Neue Skizze / Firmware schreiben
- Firmware kompilieren
- Schreiben Sie eine Kopie der Firmware auf Arduino A als Daten (Arduino A ist so eingerichtet, dass es als ISP funktioniert).
- Trennen Sie Arduino A vom Computer
- An einem separaten Ort verbinden Sie Arduino A mit Arduino B unter Verwendung von ISP-Headern
- 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.
Antworten:
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.).
Liste der unterstützten Chips
quelle
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
quelle