Sommario:

Programmazione Arduino Over the Air (OTA) - Ameba Arduino: 4 passaggi
Programmazione Arduino Over the Air (OTA) - Ameba Arduino: 4 passaggi

Video: Programmazione Arduino Over the Air (OTA) - Ameba Arduino: 4 passaggi

Video: Programmazione Arduino Over the Air (OTA) - Ameba Arduino: 4 passaggi
Video: The EASY Guide To Over-The-Air (OTA) Updates With ArduinoOTA 2024, Novembre
Anonim
Programmazione Arduino Over the Air (OTA) - Ameba Arduino
Programmazione Arduino Over the Air (OTA) - Ameba Arduino

Ci sono molti microcontrollori Wi-Fi sul mercato, molti produttori si divertono a programmare il loro microcontrollore Wi-Fi usando Arduino IDE. Tuttavia, una delle funzionalità più interessanti che un microcontrollore Wi-Fi ha da offrire tende a essere trascurata, ovvero la programmazione e il caricamento del codice in remoto e in modalità wireless utilizzando la funzione OTA (Over-The-Air).

In questo Instructable, ti mostrerò come configurare OTA sul tuo microcontrollore Wi-Fi usando l'onnipresente Arduino IDE sul microcontrollore Wi-Fi Ameba Arduino!

Forniture

Ameba Arduino x 1

Passaggio 1: OTA

OTA
OTA

OTA (Over-The-Air) si riferisce al meccanismo di aggiornamento online tramite Internet.

Arduino IDE offre la funzione OTA, che segue il flusso di lavoro nella figura sopra.

(i) Arduino IDE cerca tramite mDNS i dispositivi con il servizio Arduino IDEOTA nella rete locale.

(ii) Poiché il servizio mDNS è in esecuzione su Ameba, Ameba risponde alla ricerca mDNS e apre la porta TCP specifica per la connessione.

(iii) L'utente sviluppa il programma in Arduino IDE. Al termine, scegli la porta di rete.

(iv) Fare clic su Carica. Quindi Arduino IDE invia l'immagine OTA ad Ameba tramite TCP, Ameba salva l'immagine su un indirizzo specifico e imposta l'opzione di avvio per l'avvio da questa immagine la prossima volta.

Il flusso di lavoro è costituito da tre parti: processo di immagine mDNS, TCP e OTA. I dettagli relativi a mDNS sono descritti nel tutorial mDNS. La programmazione del socket TCP viene utilizzata nel trasferimento dell'immagine ed è già fornita nell'API OTA.

Nella prossima sezione, discuteremo su come elaborare l'immagine OTA e introdurremo alcune conoscenze di base sul layout della memoria flash Ameba e sul flusso di avvio.

Passaggio 2: layout della memoria flash Ameba

Layout della memoria flash Ameba
Layout della memoria flash Ameba

La dimensione della memoria flash di Ameba RTL8195A è 2 MB, varia da 0x00000000 a 0x00200000. Tuttavia, la dimensione della memoria flash di Ameba RTL8710 è di 1 MB. Per adattarsi all'uso di schede diverse, assumiamo che il layout della memoria flash sia 1 MB.

Come mostrato nella figura sopra, il programma Ameba occupa tre parti della memoria flash:

- Immagine di avvio:

Cioè, il bootloader. Quando Ameba si avvia, inserisce l'immagine di avvio in memoria ed esegue l'inizializzazione. Inoltre, determina dove procedere dopo il bootloader. Bootloader esamina l'indirizzo OTA e il pin di ripristino nell'area dei dati di sistema e determina quale immagine verrà eseguita in seguito. Alla fine del bootloader, inserisce l'immagine in memoria e procede all'esecuzione.

- Immagine predefinita 2:

Il codice sviluppatore viene inserito in questa parte, l'indirizzo parte da 0x0000B000. I primi 16 byte sono l'intestazione dell'immagine, 0x0000B008~0x0000B00F comprende la firma, che viene utilizzata per verificare se l'immagine è valida. Il campo della firma ha due valori validi per distinguere la nuova immagine dalla vecchia immagine.

- Immagine OTA:

I dati in questa parte sono anche codice sviluppatore. Per impostazione predefinita, questa parte di memoria inizia da 0x00080000 (può essere modificata). Le principali differenze tra l'immagine OTA e l'immagine predefinita 2 sono l'indirizzo della memoria flash e il valore della firma.

Oltre al codice, ci sono alcuni blocchi di dati:

- Dati di sistema:

Il blocco dati di sistema inizia da 0x00009000. Ci sono due dati relativi alle OTA:

1. Indirizzo OTA:4 byte di dati a partire da 0x00009000. Indica l'indirizzo dell'immagine OTA. Se il valore dell'indirizzo OTA non è valido (ad esempio, 0xFFFFFFFF), l'immagine OTA nella memoria flash non può essere caricata correttamente.

2. Pin di ripristino: 4 byte di dati a partire da 0x00009008, il pin di ripristino viene utilizzato per determinare quale immagine (immagine predefinita 2 o immagine OTA) eseguire quando entrambe le immagini sono valide. Se il valore del pin di ripristino non è valido (ad esempio, 0xFFFFFFFF), la nuova immagine verrà eseguita per impostazione predefinita.

I dati di sistema verranno rimossi quando carichiamo il programma su Ameba tramite DAP. Cioè, l'indirizzo OTA verrà rimosso e Ameba determinerà che non è presente alcuna immagine OTA.

- Dati di calibrazione: i dati di calibrazione della periferica vengono inseriti in questo blocco. Normalmente questi dati non dovrebbero essere cancellati.

Passaggio 3: flusso di avvio

Flusso di avvio
Flusso di avvio

Dall'immagine sopra, Discutiamo i seguenti scenari: (i) OTA non viene utilizzato, utilizzare DAP per caricare il programma:

In questa situazione, il bootloader controlla la firma dell'immagine 2 predefinita e l'indirizzo OTA. Poiché l'indirizzo OTA è stato rimosso, verrà selezionata l'immagine predefinita 2 per l'esecuzione.

(ii) L'immagine OTA viene trasferita ad Ameba, l'indirizzo OTA è impostato correttamente, il pin di ripristino non è impostato:

Ameba ha ricevuto l'immagine aggiornata tramite OTA, la firma dell'immagine predefinita 2 sarebbe impostata sulla vecchia firma.

Bootloader controlla la firma dell'immagine 2 predefinita e l'indirizzo OTA. Troverà che l'indirizzo OTA contiene un'immagine OTA valida. Poiché il pin di ripristino non è impostato, sceglie la nuova immagine (ovvero l'immagine OTA) da eseguire.

(iii) L'immagine OTA viene trasferita ad Ameba, l'indirizzo OTA è impostato correttamente, il pin di ripristino è impostato:

Ameba ha ricevuto l'immagine aggiornata tramite OTA, la firma dell'immagine predefinita 2 sarebbe impostata sulla vecchia firma.

Bootloader controlla la firma dell'immagine 2 predefinita e l'indirizzo OTA. Troverà che l'indirizzo OTA contiene un'immagine OTA valida. Quindi controlla il valore del pin di ripristino. Se il pin di ripristino è collegato a LOW, verrà eseguita la nuova immagine (ovvero l'immagine OTA). Se il pin di ripristino è collegato a HIGH, verrà eseguita la vecchia immagine (cioè l'immagine predefinita 2).

Passaggio 4: esempio

Esempio
Esempio
Esempio
Esempio
Esempio
Esempio
Esempio
Esempio

Per utilizzare la funzione OTA, aggiornare il firmware DAP alla versione > 0.7 (v0.7 non è inclusa). Il firmware DAP predefinito di fabbrica è la versione 0.7. Si prega di seguire le istruzioni per aggiornare il firmware DAP:

Apri l'esempio: "File" -> "Esempi" -> "AmebaOTA" -> "ota_basic"

Immettere le informazioni su ssid e password nel codice di esempio per la connessione di rete.

Ci sono alcuni parametri relativi all'OTA:

§ MY_VERSION_NUMBER:Nella prima versione, è necessario impostare l'indirizzo OTA e il pin di ripristino. Poiché questa volta il caricamento tramite USB è la prima versione, non è necessario modificare questo valore.

§ OTA_PORT:Arduino IDE troverà Ameba tramite mDNS. Ameba dirà ad Arduino IDE che apre la porta TCP 5000 per attendere l'immagine OTA.

§ RECOVERY_PIN:Configura il pin utilizzato per il ripristino. Usiamo il pin 18 qui.

Quindi usiamo il programma di caricamento USB su Ameba. Fare clic su Strumenti -> Porte, controllare la porta seriale da utilizzare:

Si prega di notare che Arduino IDE utilizza una porta per caricare il programma e l'outputlog. Per evitare la situazione in cui il registro non può essere emesso quando utilizziamo OTA, utilizziamo un altro terminale della porta seriale (ad es. Termine Tera o mastice) invece del monitor seriale per guardare il messaggio di registro.

Quindi fare clic su Carica e premere il pulsante di ripristino.

Nel messaggio di registro:

1. Tra "===== Inserisci immagine 1====" e "Inserisci immagine 2 ====", puoi trovare "Immagine Flash 2: Addr 0xb000". Ciò significa che Ameba determina l'avvio dall'immagine predefinita 2 a 0xb000.

2. Dopo "Inserisci immagine 2 ====", puoi trovare "Questa è la versione 1". Questo è il messaggio di registro che aggiungiamo nello schizzo.

3. Dopo che Ameba è connesso all'AP e ottiene l'indirizzo IP "192.168.1.238", attiva mDNS e attende il client.

Successivamente, modifichiamo "MY_VERSION_NUMBER" in 2.

Fare clic su "Strumenti" -> "Porta", è possibile visualizzare un elenco di "Porte di rete". Trova "MyAmeba at 192.168.1.238 (Ameba RTL8195A)", MyAmeba è il nome del dispositivo mDNS che abbiamo impostato nel codice di esempio e "192.168.1.238" è l'IP di Ameba.

Se non riesci a trovare la porta di rete di Ameba, conferma:

- se il tuo computer e Ameba sono nella stessa rete locale?

- prova a riavviare Arduino IDE.

- controllare il messaggio di registro in Serial Monitor per vedere se Ameba è connesso correttamente all'AP.

Quindi fare clic su Carica. Questa volta il programma verrà caricato tramite TCP. Nel terminale di registro, puoi vedere le informazioni sulla connessione del client.

Quando l'immagine OTA viene scaricata correttamente, Ameba si riavvierà e il registro seguente verrà mostrato nel terminale di registro.

- Tra "===== Enter Image 1====" e "Enter Image 2 ====", è possibile visualizzare un messaggio di registro "Flash Image 2:Addr 0x80000". Ciò significa che Ameba determina l'avvio dall'immagine OTA a 0x80000.

- Dopo "Enter Image 2 ====", il log "This is version 2" è il messaggio che aggiungiamo nello sketch.

Per ripristinare l'immagine precedente dopo che l'immagine OTA è stata scaricata su Ameba, collegare il pin di ripristino che abbiamo impostato nello schizzo (cioè il pin 18) su HIGH (3,3 V) e premere reset.

Quindi l'immagine predefinita 2 verrà scelta all'avvio. Si noti che l'immagine OTA scaricata non viene eliminata, una volta scollegato il pin di ripristino da HIGH, l'immagine OTA verrà eseguita.

Riassumiamo il flusso di sviluppo tramite OTA nella figura seguente.

Consigliato: