AVR-Neuprogrammierung im Stromkreis drahtlos

Welche Optionen habe ich, wenn es darum geht, einen AVR In-Circuit neu zu programmieren? Das neue Programm wird über eine drahtlose Verbindung empfangen, daher muss es in einem temporären Speichercontainer gespeichert werden.

Ich weiß, dass der AVR auf diese Weise über eine Kabelverbindung mit SPI programmiert werden kann. Wäre es notwendig, einen dedizierten Programmierer- Slave-Controller zu implementieren, der das neue Programm empfängt und über festverdrahtete Verbindungen verfügt und über SPI erneut geflasht wird?

Irgendwelche Vorschläge?

Warum nicht einen Bootloader haben, der das Update über UART empfangen kann, genau wie der Arduino?
Wäre in diesem Fall nicht immer noch ein dedizierter zweiter Controller vorhanden - einer zum Empfangen des übertragenen Programms? Sie schlagen also vor, nur über UART und nicht über SPI zu blinken, richtig? Die Idee gefällt mir viel besser.
Sie brauchen keinen zweiten (oder in diesem Fall dritten) Controller; Beim Empfang eines speziellen Pakets sollte der drahtlose Empfänger einen GPIO drehen, der den AVR zurücksetzen und die Programmierung einleiten würde, und der Rest der Pakete wäre das eigentliche Upgrade, das direkt in den UART des AVR gepumpt würde.
Ich bin nicht vertraut genug mit Empfängern, um ihre Fähigkeiten zu kennen. Beziehen Sie sich auf einen programmierbaren Empfänger, der selbst über GPIO-Pins verfügt? Andernfalls könnte dies ziemlich schwierig zu implementieren sein, da der AVR die "speziellen" Daten zuerst seriell vom Empfänger erhalten müsste. Danach würde es sich selbst zurücksetzen, um die Programmierung einzuleiten.

Antworten (2)

Das grundlegende Problem eines Remote-Software-Updates besteht darin, wie Sie ein (unwilliges) Ziel in den Neuprogrammierungsmodus zwingen. Der sicherste Weg ist ein zusätzlicher Mikrocontroller, der die Kommunikation überwacht und den Hauptcontroller in den Boot- oder Programmiermodus zwingen oder vielleicht sogar die eigentliche (SPI-)Programmierung vornehmen kann.

JEDE andere Lösung ist der Software ausgeliefert, die auf Ihrem System läuft. Wenn aus Versehen, Hardwareproblem (Stromausfall) oder Sabotage etc. die Software bei der Neuprogrammierung nicht mitmacht, stecken Sie fest. Ob dies das Hinzufügen eines zusätzlichen Controllers rechtfertigt, ist eine technische Entscheidung.

Hier sind ein paar Referenzen, die Sie sich ansehen sollten:

Drahtlose Arduino-Programmierung/Funkverbindung

Drahtlose XBee/AVR-Programmierung