Inhaltsverzeichnis:

Arduino Over the Air (OTA) programmieren - Ameba Arduino - Gunook
Arduino Over the Air (OTA) programmieren - Ameba Arduino - Gunook

Video: Arduino Over the Air (OTA) programmieren - Ameba Arduino - Gunook

Video: Arduino Over the Air (OTA) programmieren - Ameba Arduino - Gunook
Video: OTA update mit der Arduino IDE, MQTT und BME280. | #EdisTechlab 2024, Dezember
Anonim
Arduino Over the Air (OTA) programmieren - Ameba Arduino
Arduino Over the Air (OTA) programmieren - Ameba Arduino

Es gibt viele Wi-Fi-Mikrocontroller auf dem Markt, viele Hersteller genießen es, ihren Wi-Fi-Mikrocontroller mit Arduino IDE zu programmieren. Eine der coolsten Funktionen, die ein Wi-Fi-Mikrocontroller zu bieten hat, wird jedoch oft übersehen, nämlich das Programmieren und Hochladen Ihres Codes aus der Ferne und drahtlos mit der OTA-Funktion (Over-The-Air).

In diesem Instructable zeige ich Ihnen, wie Sie OTA auf Ihrem Wi-Fi-Mikrocontroller mit der allgegenwärtigen Arduino IDE auf dem Ameba Arduino Wi-Fi-Mikrocontroller einrichten!

Lieferungen

Ameba Arduino x 1

Schritt 1: OTA

OTA
OTA

OTA (Over-The-Air) bezieht sich auf den Online-Upgrade-Mechanismus über das Internet.

Arduino IDE bietet eine OTA-Funktion, die dem Workflow in der obigen Abbildung folgt.

(i) Arduino IDE sucht über mDNS nach Geräten mit Arduino IDEOTA-Dienst im lokalen Netzwerk.

(ii) Da der mDNS-Dienst auf Ameba läuft, antwortet Ameba auf die mDNS-Suche und öffnet den spezifischen TCP-Port für die Verbindung.

(iii) Der Benutzer entwickelt ein Programm in der Arduino IDE. Wenn Sie fertig sind, wählen Sie den Netzwerkport.

(iv) Klicken Sie auf Hochladen. Dann sendet Arduino IDE das OTA-Image über TCP an Ameba, Ameba speichert das Image an einer bestimmten Adresse und stellt die Boot-Option so ein, dass beim nächsten Mal von diesem Image gestartet wird.

Der Workflow besteht aus drei Teilen: mDNS-, TCP- und OTA-Image-Prozess. Details zu mDNS werden im mDNS-Tutorial beschrieben. Die TCP-Socket-Programmierung wird beim Übertragen von Bildern verwendet und ist bereits in der OTA-API enthalten.

Im nächsten Abschnitt werden wir die Verarbeitung des OTA-Images besprechen und einige grundlegende Kenntnisse zum Ameba-Flash-Speicher-Layout und zum Boot-Flow einführen.

Schritt 2: Ameba Flash-Speicher-Layout

Ameba Flash-Speicher-Layout
Ameba Flash-Speicher-Layout

Die Flash-Speichergröße von Ameba RTL8195A beträgt 2 MB und reicht von 0x00000000 bis 0x00200000. Die Flash-Speichergröße von Ameba RTL8710 beträgt jedoch 1 MB. Um die Verwendung verschiedener Boards zu ermöglichen, gehen wir davon aus, dass das Flash-Speicherlayout 1 MB beträgt.

Wie in der Abbildung oben gezeigt, belegt das Ameba-Programm drei Teile des Flash-Speichers:

- Boot-Image:

Das heißt, der Bootloader. Wenn Ameba hochfährt, legt es das Boot-Image im Speicher ab und führt die Initialisierung durch. Darüber hinaus bestimmt es, wo nach dem Bootloader fortgefahren werden soll. Der Bootloader schaut sich die OTA-Adresse und den Recovery-Pin im Systemdatenbereich an und bestimmt, welches Image anschließend ausgeführt wird. Am Ende des Bootloaders legt er das Image im Speicher ab und fährt mit der Ausführung fort.

- Standardbild 2:

In diesem Teil wird der Entwicklercode platziert, die Adresse beginnt bei 0x0000B000. Die ersten 16 Bytes sind der Image-Header, 0x0000B008~0x0000B00F umfasst die Signatur, mit der überprüft wird, ob das Image gültig ist. Das Signaturfeld hat zwei gültige Werte, um das neue Bild vom alten Bild zu unterscheiden.

- OTA-Bild:

Die Daten in diesem Teil sind auch Entwicklercode. Standardmäßig beginnt dieser Teil des Speichers bei 0x00080000 (kann geändert werden). Die Hauptunterschiede zwischen OTA-Image und Standard-Image 2 sind die Flash-Speicheradresse und der Signaturwert.

Abgesehen vom Code gibt es einige Datenblöcke:

- Systemdaten:

Der Systemdatenblock beginnt bei 0x00009000. Es gibt zwei OTA-bezogene Daten:

1. OTA-Adresse: 4 Byte Daten ab 0x00009000. Es teilt die OTA-Image-Adresse mit. Wenn der OTA-Adresswert ungültig ist (d. h. 0xFFFFFFFF), kann das OTA-Image im Flash-Speicher nicht richtig geladen werden.

2. Wiederherstellungs-Pin: 4 Byte Daten beginnend mit 0x00009008. Der Wiederherstellungs-Pin wird verwendet, um zu bestimmen, welches Image (Standard-Image 2 oder OTA-Image) ausgeführt werden soll, wenn beide Images gültig sind. Wenn der Wiederherstellungs-Pin-Wert ungültig ist (d. h. 0xFFFFFFFF), wird das neue Image standardmäßig ausgeführt.

Systemdaten werden entfernt, wenn wir ein Programm über DAP auf Ameba hochladen. Das heißt, die OTA-Adresse wird entfernt und Ameba stellt fest, dass kein OTA-Image vorhanden ist.

- Kalibrierungsdaten: Die peripheren Kalibrierungsdaten werden in diesem Block platziert. Normalerweise sollten diese Daten nicht gelöscht werden.

Schritt 3: Boot-Flow

Boot-Flow
Boot-Flow

Aus dem Bild oben, Wir diskutieren die folgenden Szenarien: (i) OTA wird nicht verwendet, verwenden Sie DAP, um das Programm hochzuladen:

In dieser Situation überprüft der Bootloader die Signatur des Standardimages 2 und die OTA-Adresse. Da die OTA-Adresse entfernt wurde, wird das Standardbild 2 zur Ausführung ausgewählt.

(ii) OTA-Image wird an Ameba übertragen, OTA-Adresse ist korrekt eingestellt, Wiederherstellungs-Pin ist nicht gesetzt:

Ameba hat ein aktualisiertes Image über OTA erhalten, die Signatur von Standardimage 2 würde auf alte Signatur gesetzt.

Bootloader überprüft die Signatur von Standardimage 2 und OTA-Adresse. Es wird feststellen, dass die OTA-Adresse ein gültiges OTA-Image enthält. Da der Wiederherstellungs-Pin nicht gesetzt ist, wählt er das neue Bild (d. h. das OTA-Bild) aus, das ausgeführt werden soll.

(iii) Das OTA-Image wird an Ameba übertragen, die OTA-Adresse ist richtig eingestellt, der Wiederherstellungs-Pin ist eingestellt:

Ameba hat ein aktualisiertes Image über OTA erhalten, die Signatur von Standardimage 2 würde auf alte Signatur gesetzt.

Bootloader überprüft die Signatur von Standardimage 2 und OTA-Adresse. Es wird feststellen, dass die OTA-Adresse ein gültiges OTA-Image enthält. Überprüfen Sie dann den Wiederherstellungs-Pin-Wert. Wenn der Recovery-Pin mit LOW verbunden ist, wird das neue Image (d. h. das OTA-Image) ausgeführt. Wenn der Recovery-Pin mit HIGH verbunden ist, wird das alte Image (d. h. das Standardimage 2) ausgeführt.

Schritt 4: Beispiel

Beispiel
Beispiel
Beispiel
Beispiel
Beispiel
Beispiel
Beispiel
Beispiel

Um die OTA-Funktion zu verwenden, aktualisieren Sie bitte die DAP-Firmware auf Version > 0.7 (v0.7 ist nicht enthalten). Die werkseitige Standard-DAP-Firmware ist Version 0.7. Bitte befolgen Sie die Anweisungen zum Aktualisieren der DAP-Firmware:

Öffnen Sie das Beispiel: "Datei" -> "Beispiele" -> "AmebaOTA" -> "ota_basic"

Geben Sie die ssid- und Kennwortinformationen in den Beispielcode für die Netzwerkverbindung ein.

Es gibt einige Parameter im Zusammenhang mit OTA:

§ MY_VERSION_NUMBER:In der ersten Version müssen wir die OTA-Adresse und den Wiederherstellungs-Pin festlegen. Da dieses Mal das Hochladen über USB die erste Version ist, müssen wir diesen Wert nicht ändern.

§ OTA_PORT:Arduino IDE findet Ameba über mDNS. Ameba teilt der Arduino IDE mit, dass der TCP-Port 5000 geöffnet wird, um auf das OTA-Image zu warten.

§ RECOVERY_PIN: Konfigurieren Sie den Pin, der für die Wiederherstellung verwendet wird. Wir verwenden hier Pin 18.

Dann verwenden wir das USB-Upload-Programm zu Ameba. Klicken Sie auf Tools -> Ports, überprüfen Sie den zu verwendenden seriellen Port:

Bitte beachten Sie, dass die Arduino IDE einen Port für das Upload-Programm und das Ausgabeprotokoll verwendet. Um die Situation zu vermeiden, dass das Protokoll bei Verwendung von OTA nicht ausgegeben werden kann, verwenden wir anstelle des seriellen Monitors ein anderes serielles Port-Terminal (z. B. Tera term oder putty), um die Protokollnachricht zu beobachten.

Klicken Sie dann auf Upload und drücken Sie die Reset-Taste.

In der Log-Meldung:

1. Zwischen „===== Enter Image 1====“und „Enter Image 2 ====“finden Sie „Flash Image 2:Addr 0xb000“. Dies bedeutet, dass Ameba festlegt, von Default Image 2 bei 0xb000 zu booten.

2. Nach „Enter Image 2 ====“finden Sie „This is version 1“. Dies ist die Protokollnachricht, die wir in der Skizze hinzufügen.

3. Nachdem Ameba mit dem AP verbunden ist und die IP-Adresse „192.168.1.238“erhält, aktiviert es mDNS und wartet auf den Client.

Als Nächstes ändern wir "MY_VERSION_NUMBER" auf 2.

Klicken Sie auf "Extras" -> "Port", Sie sehen eine Liste der "Netzwerkports". Suchen Sie "MyAmeba at 192.168.1.238 (Ameba RTL8195A)", MyAmeba ist der mDNS-Gerätename, den wir im Beispielcode festgelegt haben, und "192.168.1.238" ist die IP von Ameba.

Wenn Sie den Netzwerkport von Ameba nicht finden können, bestätigen Sie bitte:

- ob sich Ihr Computer und Ameba im selben lokalen Netzwerk befinden?

- Versuchen Sie, die Arduino-IDE neu zu starten.

- Überprüfen Sie die Protokollnachricht im Serial Monitor, um zu sehen, ob Ameba erfolgreich mit dem AP verbunden ist.

Klicken Sie dann auf Hochladen. Dieses Mal wird das Programm über TCP hochgeladen. Im Protokollterminal können Sie Informationen zur Clientverbindung anzeigen.

Wenn das OTA-Image erfolgreich heruntergeladen wurde, wird Ameba neu gestartet und das folgende Protokoll wird im Protokollterminal angezeigt.

- Zwischen „===== Enter Image 1====“und „Enter Image 2 ====“sehen Sie eine Log-Meldung „Flash Image 2:Addr 0x80000“. Dies bedeutet, dass Ameba festlegt, von OTA Image bei 0x80000 zu booten.

- Nach „Enter Image 2 ====“ist das Protokoll „This is version 2“die Nachricht, die wir in der Skizze hinzufügen.

Um das vorherige Bild wiederherzustellen, nachdem das OTA-Image auf Ameba heruntergeladen wurde, verbinden Sie den Wiederherstellungs-Pin, den wir in der Skizze festgelegt haben (d. h. Pin 18) mit HIGH (3,3 V) und drücken Sie Reset.

Dann wird beim Booten das Default Image 2 gewählt. Beachten Sie, dass das heruntergeladene OTA-Image nicht gelöscht wird, sobald der Wiederherstellungs-Pin von HIGH getrennt wird, wird das OTA-Image ausgeführt.

Wir fassen den Entwicklungsablauf mit OTA in der folgenden Abbildung zusammen.

Empfohlen: