Cuprins:

Programarea Arduino Over the Air (OTA) - Ameba Arduino: 4 pași
Programarea Arduino Over the Air (OTA) - Ameba Arduino: 4 pași

Video: Programarea Arduino Over the Air (OTA) - Ameba Arduino: 4 pași

Video: Programarea Arduino Over the Air (OTA) - Ameba Arduino: 4 pași
Video: How to Perform the OTA Upload to an ESP32 Board Using Arduino Cloud 2024, Noiembrie
Anonim
Programarea Arduino Over the Air (OTA) - Ameba Arduino
Programarea Arduino Over the Air (OTA) - Ameba Arduino

Există multe microcontrolere Wi-Fi pe piață, mulți producători se bucură să își programeze microcontrolerul Wi-Fi folosind Arduino IDE. Cu toate acestea, una dintre cele mai tari caracteristici pe care le poate oferi un microcontroler Wi-Fi tind să fie trecute cu vederea, adică programarea și încărcarea codului de la distanță și fără fir folosind funcția OTA (Over-The-Air).

În acest Instructable, vă voi arăta cum să configurați OTA pe microcontrolerul dvs. Wi-Fi utilizând omniprezentul Arduino IDE pe microcontrolerul Ameba Arduino Wi-Fi!

Provizii

Ameba Arduino x 1

Pasul 1: OTA

OTA
OTA

OTA (Over-The-Air) se referă la mecanismul de actualizare online prin Internet.

Arduino IDE oferă funcția OTA, care urmează fluxul de lucru din figura de mai sus.

(i) Arduino IDE caută prin mDNS dispozitivele cu serviciul Arduino IDEOTA în rețeaua locală.

(ii) Deoarece serviciul mDNS rulează pe Ameba, Ameba răspunde la căutarea mDNS și deschide portul TCP specific pentru conexiune.

(iii) Utilizatorul dezvoltă programul în Arduino IDE. După finalizare, alegeți portul de rețea.

(iv) Faceți clic pe încărcare. Apoi Arduino IDE trimite imaginea OTA către Ameba prin TCP, Ameba salvează imaginea la o anumită adresă și setează opțiunea de boot pentru a porni din această imagine data viitoare.

Fluxul de lucru constă din trei părți: mDNS, TCP și procesul de imagine OTA. Detalii legate de mDNS sunt descrise în tutorialul mDNS. Programarea socketului TCP este utilizată la transferul imaginii și este deja furnizată în API-ul OTA.

În secțiunea următoare, vom discuta despre cum să procesăm imaginea OTA și să introducem câteva cunoștințe de bază despre aspectul memoriei flash Ameba și fluxul de boot.

Pasul 2: Ameba Flash Memory Layout

Ameba Flash Layout Layout
Ameba Flash Layout Layout

Dimensiunea memoriei flash a Ameba RTL8195A este de 2 MB, variază de la 0x00000000 la 0x00200000. Cu toate acestea, dimensiunea memoriei flash a Ameba RTL8710 este de 1 MB. Pentru a se potrivi cu utilizarea diferitelor plăci, presupunem că aspectul memoriei flash este de 1 MB.

După cum se arată în figura de mai sus, programul Ameba ocupă trei părți ale memoriei flash:

- Imagine de încărcare :

Adică bootloader-ul. Când Ameba pornește, plasează imaginea de boot în memorie și efectuează inițializarea. Mai mult, determină unde să procedăm după bootloader. Bootloader analizează adresa OTA și pinul de recuperare din zona de date a sistemului și determină ce imagine va fi executată ulterior. La sfârșitul bootloader-ului, acesta plasează imaginea în memorie și depășește executarea acesteia.

- Imagine implicită 2 :

Codul dezvoltatorului este plasat în această parte, adresa începe de la 0x0000B000. Primii 16 octeți sunt antetul imaginii, 0x0000B008 ~ 0x0000B00F cuprinde semnătura, care este utilizată pentru a verifica dacă imaginea este validă. Câmpul de semnătură are două valori valide pentru a distinge imaginea nouă de imaginea veche.

- Imagine OTA :

Datele din această parte sunt, de asemenea, codul dezvoltatorului. În mod implicit, această parte a memoriei începe de la 0x00080000 (poate fi modificată). Principalele diferențe dintre imaginea OTA și imaginea implicită 2 sunt adresa memoriei flash și valoarea semnăturii.

În afară de cod, există câteva blocuri de date:

- Date de sistem :

Blocul de date al sistemului începe de la 0x00009000. Există două date legate de OTA:

1. Adresă OTA data 4 octeți date începând de la 0x00009000. Acesta indică adresa imaginii OTA. Dacă valoarea adresei OTA este nevalidă (de exemplu, 0xFFFFFFFF), imaginea OTA din memoria flash nu poate fi încărcată corect.

2. Pin de recuperare data 4 octeți de date începând de la 0x00009008, PIN-ul de recuperare este utilizat pentru a determina ce imagine (Imagine implicită 2 sau Imagine OTA) de executat atunci când ambele imagini sunt valide. Dacă valoarea pinului de recuperare nu este validă (de exemplu, 0xFFFFFFFF), noua imagine va fi executată în mod implicit.

Datele de sistem vor fi eliminate atunci când încărcăm programul pe Ameba prin DAP. Adică, adresa OTA va fi eliminată și Ameba va stabili că nu există nicio imagine OTA.

- Date de calibrare data Datele de calibrare periferice sunt plasate în acest bloc. În mod normal, aceste date nu trebuie șterse.

Pasul 3: Boot Flow

Flux de încărcare
Flux de încărcare

Din imaginea de mai sus, Discutăm următoarele scenarii: (i) OTA nu este utilizat, utilizați DAP pentru a încărca programul:

În această situație, bootloader-ul verifică semnătura imaginii implicite 2 și a adresei OTA. Deoarece adresa OTA este eliminată, imaginea implicită 2 va fi selectată pentru executare.

(ii) imaginea OTA este transferată la Ameba, adresa OTA este setată corect, pinul de recuperare nu este setat :

Ameba a primit imagine actualizată prin OTA, semnătura imaginii implicite 2 ar fi setată la semnătura veche.

Bootloader verifică semnătura imaginii implicite 2 și a adresei OTA. Adresa OTA conține o imagine OTA validă. Deoarece pinul de recuperare nu este setat, alege noua imagine (adică, imaginea OTA) pentru a fi executată.

(iii) imaginea OTA este transferată la Ameba, adresa OTA este setată corect, pinul de recuperare este setat :

Ameba a primit imagine actualizată prin OTA, semnătura imaginii implicite 2 ar fi setată la semnătura veche.

Bootloader verifică semnătura imaginii implicite 2 și a adresei OTA. Adresa OTA conține o imagine OTA validă. Apoi verificați valoarea pinului de recuperare. Dacă pinul de recuperare este conectat la LOW, noua imagine (adică, imaginea OTA) va fi executată. Dacă pinul de recuperare este conectat la HIGH, imaginea veche (adică imaginea implicită 2) va fi executată.

Pasul 4: Exemplu

Exemplu
Exemplu
Exemplu
Exemplu
Exemplu
Exemplu
Exemplu
Exemplu

Pentru a utiliza caracteristica OTA, vă rugăm să actualizați firmware-ul DAP la versiunea> 0.7 (v0.7 nu este inclus). Firmware-ul DAP implicit din fabrică este versiunea 0.7. Vă rugăm să urmați instrucțiunile pentru actualizarea firmware-ului DAP:

Deschideți exemplul: „Fișier” -> „Exemple” -> „AmebaOTA” -> „ota_basic”

Completați informațiile ssid și parolă în exemplul de cod pentru conexiunea la rețea.

Există câțiva parametri legați de OTA:

§ MY_VERSION_NUMBER : În prima versiune, trebuie să setăm adresa OTA și pinul de recuperare. Deoarece de data aceasta încărcăm prin USB este prima versiune, nu este nevoie să schimbăm această valoare.

§ OTA_PORT : Arduino IDE va găsi Ameba prin mDNS. Ameba va spune Arduino IDE că deschide portul TCP 5000 pentru a aștepta imaginea OTA.

§ RECOVERY_PIN : Configurați pinul utilizat pentru recuperare. Aici folosim pinul 18.

Apoi folosim programul de încărcare USB pe Ameba. Faceți clic pe Instrumente -> Porturi, verificați portul serial de utilizat :

Vă rugăm să rețineți că Arduino IDE folosește un singur port pentru încărcarea programului și a jurnalului de ieșire. Pentru a evita situația în care jurnalul nu poate fi afișat atunci când folosim OTA, folosim un alt terminal de port serial (de exemplu, termen Tera sau chit) în loc de monitor serial pentru a viziona mesajul jurnal.

Apoi faceți clic pe încărcare și apăsați butonul de resetare.

În mesajul jurnal:

1. Între „===== Enter Image 1 ====” și „Enter Image 2 ====”, puteți găsi „Flash Image 2: Addr 0xb000”. Aceasta înseamnă că Ameba decide să pornească din Imaginea implicită 2 la 0xb000.

2. După „Introduceți imaginea 2 ====”, puteți găsi „Aceasta este versiunea 1”. Acesta este mesajul jurnal pe care îl adăugăm în schiță.

3. După ce Ameba este conectat la AP și primește adresa IP „192.168.1.238”, activează mDNS și așteaptă clientul.

Apoi, modificăm „MY_VERSION_NUMBER” la 2.

Faceți clic pe „Instrumente” -> „Port”, puteți vedea o listă cu „Porturi de rețea”. Găsiți „MyAmeba la 192.168.1.238 (Ameba RTL8195A)”, MyAmeba este numele dispozitivului mDNS pe care l-am setat în codul eșantion și „192.168.1.238” este adresa IP a Ameba.

Dacă nu găsiți portul de rețea din Ameba, vă rugăm să confirmați:

- dacă computerul și Ameba se află în aceeași rețea locală?

- încercați să reporniți Arduino IDE.

- verificați mesajul jurnal în Serial Monitor pentru a vedea dacă Ameba este conectat cu succes la AP.

Apoi faceți clic pe încărcare. De data aceasta programul va fi încărcat prin TCP. În terminalul jurnal, puteți vedea informații despre conexiunea clientului.

Când imaginea OTA este descărcată cu succes, Ameba va reporni și următorul jurnal va fi afișat în terminalul jurnal.

- Între „===== Enter Image 1 ====” și „Enter Image 2 ====”, puteți vedea un mesaj jurnal „Flash Image 2: Addr 0x80000”. Aceasta înseamnă că Ameba decide să pornească de la OTA Image la 0x80000.

- După „Introduceți imaginea 2 ====”, jurnalul „Aceasta este versiunea 2” este mesajul pe care îl adăugăm în schiță.

Pentru a reveni la imaginea anterioară după ce imaginea OTA este descărcată pe Ameba, conectați pinul de recuperare pe care l-am setat în schiță (adică pinul 18) la HIGH (3,3V) și apăsați reset.

Apoi imaginea implicită 2 va fi selectată la pornire. Rețineți că imaginea OTA descărcată nu este ștearsă, odată ce pinul de recuperare este deconectat de la HIGH, imaginea OTA va fi executată.

Rezumăm fluxul de dezvoltare folosind OTA în figura următoare.

Recomandat: