Arduino come ISP senza computer


12

Qualcuno ha visto o conosce un metodo di precaricamento (usando un computer o altro) un firmware come dati su un arduino configurato per funzionare come isp e quindi usando quell'arduino collegare l'interfaccia isp in un altro e caricare il firmware.

Per essere chiari, sto cercando un modo per rendere possibile il caricamento di schizzi di Arduino senza una connessione diretta a un computer in piena regola.

Idealmente i passaggi coinvolti sarebbero:

  1. Scrivi nuovo schizzo / firmware
  2. Compilare il firmware
  3. Scrivi una copia del firmware su Arduino A come dati (Arduino A è impostato per funzionare come ISP)
  4. Stacca Arduino A dal computer
  5. In una posizione separata collegare Arduino A ad Arduino B usando le intestazioni ISP
  6. Utilizzando un metodo (forse un pulsante) attivare Arduino A per caricare il firmware precaricato su Arduino B.

Suppongo che teoricamente potrebbe funzionare perché il caricamento del firmware è solo uno scambio di byte attraverso l'interfaccia SPI ma non sono sicuro della realtà.

Lo scenario per il quale sto prendendo in considerazione è se dovessi installare un arduino (in modo permanente) in una posizione lontana dal mio computer (non ho un laptop né ne voglio uno) sarebbe difficile riprogrammare esso.

L'altro metodo che ho preso in considerazione è l'utilizzo di ATMEGA in pacchetto DIL che posso quindi rimuovere dalla scheda e programmare sul computer e tornare alla scheda, tuttavia preferirei di gran lunga non rischiare la flessione dei pin e la seccatura di dover rimuovere il chip ogni volta che voglio riprogrammare.


Il risultato sarebbe che si sarebbe in grado di programmare solo altri Arduinos con lo sketch / firmware esatto che è stato caricato nel programmatore (Arduino A). Quindi sarebbe utile fare copie come in una linea di produzione, vero? Se è necessario modificare qualcosa nello schizzo, è necessario tornare al computer per modificarlo e caricarlo di nuovo. Ho capito bene?
Ricardo,

1
Non è possibile mantenere "l'immagine flash" da copiare sulla destinazione su un altro supporto (come una scheda SD)?
jfpoilpret,

Sì. Suppongo che sarebbe buono anche per una linea di produzione. La mia situazione è che ho un arduino incollato in un recinto che è difficile da spostare ed è in una stanza diversa dal mio computer (anche difficile da spostare). Quindi sarei felice di caricare lo schizzo su Arduino A ogni volta che volevo cambiarlo.
m3z

2
È stato fatto con lo scopo limitato di programmare un bootloader - github.com/WestfW/OptiLoader - ma dovrebbe funzionare per qualsiasi payload più piccolo del flash disponibile meno le dimensioni dello strumento. Per un firmware con payload più grande, dovrebbe funzionare un dispositivo di archiviazione esterno (o semplicemente un Arduino Mega?).
Chris Stratton,

@ChrisStratton che mi sembra perfetto per adattarmi. Grazie
m3z

Risposte:


5

Penso che µProg - programmatore AVR piccolo, veloce e portatile con SD fa quello che vuoi. È possibile memorizzare più file nella scheda SD (hex, eep ecc.) E selezionare dal menu del dispositivo quale scrivere sull'MCU di destinazione senza bisogno di un PC.
La parte migliore è che è disponibile gratuitamente (PCB, schema, firmware ecc.).

Programmatore AVR unico nel suo genere! Aiuta ovunque sia necessario aggiornare il firmware del dispositivo, in cui il dispositivo di destinazione si trova in una posizione difficile da raggiungere e non è possibile (o non si desidera) portare il proprio laptop con un sacco di fili con sé. Incredibilmente facile da usare, super economico da realizzare, super piccolo, super veloce, utilizza schede SD ...

Caratteristiche:

  • super piccolo - dimensioni 44 x 39 x 5,5 mm
  • super veloce - scrivi fino a 12,5kB / s, leggi fino a 14,5kB / s
  • utilizza un supporto di archiviazione economico - schede MICRO SD piccole
  • supporta i file system FAT16 e FAT32
  • può leggere, scrivere, verificare la memoria flash ed eeprom
  • può leggere, scrivere, verificare fusebit e lockbits
  • scrivere e leggere in file BIN, HEX e TXT
  • può impostare valori predefiniti di miccebit, cancellare memorie
  • display grafico LPH7779 economico, facile da ottenere
  • mostra animazioni divertenti dopo ogni operazione
  • header di programmazione standard - Atmel 6-PIN ISP
  • ha una funzione di aggiornamento automatico del proprio firmware (da SD)
  • molto semplice da usare, navigazione a 4 pulsanti
  • menu di impostazione dell'utente
  • selezione automatica della velocità di programmazione (fino a 4 MHz)
  • Funziona a 3V, programma chip forniti da 3V a 5V

Elenco di chip supportati

inserisci qui la descrizione dell'immagine


Sembra buono. Investigherà nel fine settimana.
m3z

Non so come ho perso questa domanda l'altro giorno. Ho solo parlato con un amico della creazione di questo esatto progetto da soli. E poi vedo la tua risposta.
Madivad,

4

Non ho una soluzione diretta per quello che vuoi, ma sì è possibile farlo. È possibile hackerare un firmware bootloader in modo che legga il codice flash del firmware e lo carichi tramite ISP.

Anche se ovviamente non puoi caricare 32k di firmware sull'AVR di destinazione se entrambi gli Arduinos hanno solo 32k di flash totale nelle loro MCU, dovrai volere che il lampeggiatore abbia più flash rispetto al target se vuoi farlo (un 1284p o 2560 Mega saranno abbastanza lontani, o un 328 / 32u4 sarà cood per far lampeggiare un 168 o un attiny). L'unica eccezione sarebbe quella di avere il firmware per il flashing molto più piccolo della memoria totale (come per uno schizzo lampeggiante).

Alla fine, non sarà facile, è un codice AVR puro al 100%, ma puoi farlo. Dai un'occhiata a:

Il modo in cui implementerei sarebbe quello di adattare tutto al bootloader del dispositivo lampeggiatore, quindi legge il firmware (tutto da 0x00 all'indirizzo di avvio del bootloader) e lo fa lampeggiare attraverso l'ISP unendo AVRISP con Optiboot.

Ad ogni modo, è un progetto interessante per un seminario su bootloader e AVR che posso suggerire nel mio hackerpace locale! ;-)

HTH


Grazie, il codice sorgente AVRISP non sembra così complesso come mi aspettavo. Ne esaminerò un po 'più a fondo questo fine settimana
m3z

Dov'è il tuo spazio hacker locale? :)
Madivad,

è in Francia Le Loop
zmo

nessun problema, ecco a cosa serve votare ;-)
zmo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.