Inhoudsopgave:

Arduino Over the Air (OTA) programmeren - Ameba Arduino - Ajarnpa
Arduino Over the Air (OTA) programmeren - Ameba Arduino - Ajarnpa

Video: Arduino Over the Air (OTA) programmeren - Ameba Arduino - Ajarnpa

Video: Arduino Over the Air (OTA) programmeren - Ameba Arduino - Ajarnpa
Video: How to Perform the OTA Upload to an ESP32 Board Using Arduino Cloud 2024, November
Anonim
Arduino Over the Air (OTA) programmeren - Ameba Arduino
Arduino Over the Air (OTA) programmeren - Ameba Arduino

Er zijn veel Wi-Fi-microcontrollers op de markt, veel makers vinden het leuk om hun Wi-Fi-microcontroller te programmeren met Arduino IDE. Een van de coolste functies die een Wi-Fi-microcontroller te bieden heeft, wordt echter vaak over het hoofd gezien, namelijk het op afstand en draadloos programmeren en uploaden van uw code met behulp van de OTA-functie (Over-The-Air).

In deze Instructable laat ik je zien hoe je OTA instelt op je Wi-Fi-microcontroller met behulp van de alomtegenwoordige Arduino IDE op Ameba Arduino Wi-Fi-microcontroller!

Benodigdheden

Ameba Arduino x 1

Stap 1: OTA

OTA
OTA

OTA (Over-The-Air) verwijst naar het online upgrademechanisme via internet.

Arduino IDE biedt OTA-functie, die de workflow in de bovenstaande afbeelding volgt.

(i) Arduino IDE zoekt via mDNS naar apparaten met Arduino IDEOTA-service in het lokale netwerk.

(ii) Aangezien de mDNS-service op Ameba draait, reageert Ameba op de mDNS-zoekopdracht en opent de specifieke TCP-poort voor verbinding.

(iii) Gebruiker ontwikkelt programma in Arduino IDE. Kies netwerkpoort als u klaar bent.

(iv) Klik op uploaden. Vervolgens stuurt Arduino IDE de OTA-afbeelding naar Ameba via TCP, Ameba slaat de afbeelding op naar een specifiek adres en stelt de opstartoptie in om de volgende keer vanaf deze afbeelding op te starten.

De workflow bestaat uit drie delen: mDNS, TCP en OTA-beeldproces. Details met betrekking tot mDNS worden beschreven in de mDNS-zelfstudie. TCP-socketprogrammering wordt gebruikt bij het overbrengen van afbeeldingen en is al voorzien in de OTA API.

In de volgende sectie zullen we bespreken hoe de OTA-afbeelding moet worden verwerkt en wat basiskennis over de indeling van het Ameba-flashgeheugen en de opstartstroom introduceren.

Stap 2: Ameba Flash-geheugenlay-out

Ameba Flash-geheugenlay-out
Ameba Flash-geheugenlay-out

De grootte van het flashgeheugen van Ameba RTL8195A is 2 MB, variërend van 0x00000000 tot 0x00200000. De grootte van het flashgeheugen van Ameba RTL8710 is echter 1 MB. Om te passen bij het gebruik van verschillende boards, gaan we ervan uit dat de lay-out van het flashgeheugen 1 MB is.

Zoals weergegeven in de bovenstaande afbeelding, neemt het Ameba-programma drie delen van het flashgeheugen in beslag:

- Opstartafbeelding:

Dat wil zeggen, de bootloader. Wanneer Ameba opstart, plaatst het de opstartkopie in het geheugen en voert de initialisatie uit. Bovendien bepaalt het waar u verder moet gaan na de bootloader. Bootloader kijkt naar het OTA-adres en de herstelpin in het systeemgegevensgebied en bepaalt welke afbeelding daarna wordt uitgevoerd. Aan het einde van de bootloader plaatst het de afbeelding in het geheugen en gaat het verder om het uit te voeren.

- Standaard afbeelding 2:

De ontwikkelaarscode wordt in dit deel geplaatst, het adres begint bij 0x0000B000. De eerste 16 bytes zijn de afbeeldingsheader, 0x0000B008~0x0000B00F omvat de handtekening, die wordt gebruikt om te controleren of de afbeelding geldig is. Het handtekeningveld heeft twee geldige waarden om de nieuwe afbeelding van de oude afbeelding te onderscheiden.

- OTA-afbeelding:

De gegevens in dit deel zijn ook ontwikkelaarscode. Standaard begint dit deel van het geheugen vanaf 0x00080000 (kan worden gewijzigd). De belangrijkste verschillen tussen OTA-afbeelding en standaardafbeelding 2 zijn het flashgeheugenadres en de handtekeningwaarde.

Naast de code zijn er enkele datablokken:

- Systeemgegevens:

Systeemgegevensblok begint vanaf 0x00009000. Er zijn twee OTA-gerelateerde gegevens:

1. OTA-adres: gegevens van 4 bytes vanaf 0x00009000. Het vertelt het OTA Image-adres. Als de OTA-adreswaarde ongeldig is (d.w.z. 0xFFFFFFFF), kan de OTA-afbeelding in het flashgeheugen niet correct worden geladen.

2. Herstelpin: gegevens van 4 bytes vanaf 0x00009008. De herstelpin wordt gebruikt om te bepalen welke afbeelding (standaardafbeelding 2 of OTA-afbeelding) moet worden uitgevoerd wanneer beide afbeeldingen geldig zijn. Als de herstelpinwaarde ongeldig is (d.w.z. 0xFFFFFFFF), wordt de nieuwe afbeelding standaard uitgevoerd.

Systeemgegevens worden verwijderd wanneer we programma's uploaden naar Ameba via DAP. Dat wil zeggen, het OTA-adres wordt verwijderd en Ameba zal vaststellen dat er geen OTA-afbeelding is.

- Kalibratiegegevens: de kalibratiegegevens van de randapparatuur worden in dit blok geplaatst. Normaal gesproken mogen deze gegevens niet worden verwijderd.

Stap 3: Opstartstroom

Opstartstroom
Opstartstroom

Uit de afbeelding hierboven, We bespreken de volgende scenario's: (i) OTA wordt niet gebruikt, gebruik DAP om programma te uploaden:

In deze situatie controleert de bootloader de handtekening van standaardafbeelding 2 en het OTA-adres. Aangezien het OTA-adres is verwijderd, wordt standaardafbeelding 2 geselecteerd om uit te voeren.

(ii) OTA-afbeelding wordt overgebracht naar Ameba, OTA-adres is correct ingesteld, herstelpin is niet ingesteld:

Ameba heeft een bijgewerkte afbeelding ontvangen via OTA, de handtekening van standaardafbeelding 2 zou worden ingesteld op de oude handtekening.

Bootloader controleert de handtekening van standaardafbeelding 2 en OTA-adres. Het zal ontdekken dat het OTA-adres een geldige OTA-afbeelding bevat. Omdat de herstelpin niet is ingesteld, kiest deze de nieuwe afbeelding (d.w.z. OTA-afbeelding) die moet worden uitgevoerd.

(iii) OTA-afbeelding wordt overgebracht naar Ameba, OTA-adres is correct ingesteld, herstelpin is ingesteld:

Ameba heeft een bijgewerkte afbeelding ontvangen via OTA, de handtekening van standaardafbeelding 2 zou worden ingesteld op de oude handtekening.

Bootloader controleert de handtekening van standaardafbeelding 2 en OTA-adres. Het zal ontdekken dat het OTA-adres een geldige OTA-afbeelding bevat. Controleer vervolgens de waarde van de herstelpin. Als de herstelpin is aangesloten op LOW, wordt de nieuwe afbeelding (d.w.z. OTA-afbeelding) uitgevoerd. Als de herstelpin is aangesloten op HIGH, wordt de oude afbeelding (d.w.z. standaardafbeelding 2) uitgevoerd.

Stap 4: Voorbeeld

Voorbeeld
Voorbeeld
Voorbeeld
Voorbeeld
Voorbeeld
Voorbeeld
Voorbeeld
Voorbeeld

Om de OTA-functie te gebruiken, moet u de DAP-firmware upgraden naar versie > 0.7 (v0.7 is niet inbegrepen). De standaard fabrieks DAP-firmware is versie 0.7. Volg de instructies om de DAP-firmware te upgraden:

Open het voorbeeld: "Bestand" -> "Voorbeelden" -> "AmebaOTA" -> "ota_basic"

Vul de ssid- en wachtwoordinformatie in de voorbeeldcode voor netwerkverbinding in.

Er zijn enkele parameters gerelateerd aan OTA:

§ MY_VERSION_NUMBER:In de eerste versie moeten we het OTA-adres en de herstelpin instellen. Aangezien deze keer dat we uploaden via USB de eerste versie is, hoeven we deze waarde niet te wijzigen.

§ OTA_PORT:Arduino IDE vindt Ameba via mDNS. Ameba zal Arduino IDE vertellen dat het TCP-poort 5000 opent om te wachten op OTA-afbeelding.

§ RECOVERY_PIN:Configureer de pin die wordt gebruikt voor herstel. We gebruiken hier pin 18.

Dan gebruiken we een USB-uploadprogramma naar Ameba. Klik op Extra -> Poorten, controleer de te gebruiken seriële poort:

Houd er rekening mee dat Arduino IDE één poort gebruikt voor uploadprogramma en outputlog. Om te voorkomen dat het logboek niet kan worden uitgevoerd wanneer we OTA gebruiken, gebruiken we een andere seriële poortterminal (bijv. Tera-term of stopverf) in plaats van een seriële monitor om het logbericht te bekijken.

Klik vervolgens op uploaden en druk op de reset-knop.

In het logbericht:

1. Tussen “===== Enter Image 1====” en “Enter Image 2 ====” vindt u “Flash Image 2:Addr 0xb000”. Dit betekent dat Ameba bepaalt om op te starten vanaf Default Image 2 op 0xb000.

2. Na “Enter Image 2 ====”, vindt u “This is version 1”. Dit is het logbericht dat we in schets toevoegen.

3. Nadat Ameba is verbonden met AP en het IP-adres "192.168.1.238" heeft gekregen, activeert het mDNS en wacht het op de client.

Vervolgens wijzigen we "MY_VERSION_NUMBER" in 2.

Klik op "Extra" -> "Poort", u ziet een lijst met "Netwerkpoorten". Zoek "MyAmeba op 192.168.1.238 (Ameba RTL8195A)", MyAmeba is de mDNS-apparaatnaam die we in de voorbeeldcode hebben ingesteld, en "192.168.1.238" is het IP-adres van Ameba.

Als je de netwerkpoort van Ameba niet kunt vinden, bevestig dan:

- of uw computer en Ameba zich in hetzelfde lokale netwerk bevinden?

- probeer Arduino IDE opnieuw te starten.

- controleer het logbericht in Serial Monitor om te zien of Ameba succesvol is verbonden met AP.

Klik vervolgens op uploaden. Dit keer wordt het programma via TCP geüpload. In de logterminal kunt u informatie over de clientverbinding zien.

Wanneer de OTA-afbeelding met succes is gedownload, wordt Ameba opnieuw opgestart en wordt het volgende logboek weergegeven in de logterminal.

- Tussen “===== Enter Image 1====” en “Enter Image 2 ====” ziet u een logbericht “Flash Image 2:Addr 0x80000”. Dit betekent dat Ameba bepaalt om op te starten vanaf OTA Image op 0x80000.

- Na “Enter Image 2 ====”, is het logboek “This is version 2” het bericht dat we in schets toevoegen.

Om de vorige afbeelding te herstellen nadat de OTA-afbeelding naar Ameba is gedownload, sluit u de herstelpin die we in de schets hebben ingesteld (d.w.z. pin 18) aan op HOOG (3,3 V) en drukt u op reset.

Dan wordt standaardafbeelding 2 gekozen tijdens het opstarten. Merk op dat de gedownloade OTA-afbeelding niet wordt verwijderd. Zodra de herstelpin is losgekoppeld van HIGH, wordt de OTA-afbeelding uitgevoerd.

We vatten de ontwikkelingsstroom met behulp van OTA samen in de volgende afbeelding.

Aanbevolen: