Taula de continguts:

Programació d'Arduino Over the Air (OTA) - Ameba Arduino: 4 passos
Programació d'Arduino Over the Air (OTA) - Ameba Arduino: 4 passos

Vídeo: Programació d'Arduino Over the Air (OTA) - Ameba Arduino: 4 passos

Vídeo: Programació d'Arduino Over the Air (OTA) - Ameba Arduino: 4 passos
Vídeo: Platformio ESP32 OTA TEST 2024, Desembre
Anonim
Programació d'Arduino Over the Air (OTA): Ameba Arduino
Programació d'Arduino Over the Air (OTA): Ameba Arduino

Hi ha molts microcontroladors Wi-Fi al mercat, a molts fabricants els agrada programar el seu microcontrolador Wi-Fi mitjançant Arduino IDE. Tanmateix, sol passar per alt una de les funcions més interessants que ofereix un microcontrolador Wi-Fi, és a dir, programar i penjar el codi de forma remota i sense fils mitjançant la funció OTA (Over-The-Air).

En aquest instructiu, us mostraré com configurar OTA al vostre microcontrolador Wi-Fi mitjançant l’omnipresent Arduino IDE al microcontrolador Wi-Fi Ameba Arduino.

Subministraments

Ameba Arduino x 1

Pas 1: OTA

OTA
OTA

OTA (Over-The-Air) fa referència al mecanisme d’actualització en línia a través d’Internet.

Arduino IDE ofereix la funció OTA, que segueix el flux de treball de la figura anterior.

(i) Arduino IDE cerca mitjançant mDNS dispositius amb el servei Arduino IDEOTA a la xarxa local.

(ii) Com que el servei mDNS s’executa a Ameba, Ameba respon a la cerca mDNS i obre el port TCP específic per a la connexió.

(iii) L'usuari desenvolupa un programa en Arduino IDE. Quan hàgiu acabat, trieu el port de xarxa.

(iv) Feu clic a penja. A continuació, Arduino IDE envia la imatge OTA a Ameba mitjançant TCP, Ameba desa la imatge en una adreça específica i estableix l’opció d’arrencada per arrencar des d’aquesta imatge la propera vegada.

El flux de treball consta de tres parts: procés d'imatges mDNS, TCP i OTA. Els detalls relacionats amb mDNS es descriuen al tutorial de mDNS. La programació de sòcol TCP s’utilitza en la transferència d’imatges i ja es proporciona a l’API OTA.

A la següent secció, parlarem de com processar la imatge OTA i introduirem alguns coneixements bàsics sobre el disseny de la memòria flash Ameba i el flux d’arrencada.

Pas 2: Disseny de memòria flash Ameba

Disseny de memòria flash Ameba
Disseny de memòria flash Ameba

La mida de la memòria flash d’Ameba RTL8195A és de 2 MB, oscil·la entre 0x00000000 i 0x00200000. Tot i això, la mida de la memòria flash d'Ameba RTL8710 és d'1 MB. Per adaptar-se a l'ús de diferents taules, suposem que el disseny de la memòria flash és d'1 MB.

Com es mostra a la figura anterior, el programa Ameba ocupa tres parts de la memòria flash:

- Imatge d'arrencada :

És a dir, el carregador d’arrencada. Quan Ameba arrenca, col·loca la imatge d’arrencada a la memòria i realitza la inicialització. A més, determina on s'ha de procedir després del gestor d'arrencada. El carregador d'arrencada mira l'adreça OTA i el pin de recuperació a l'àrea de dades del sistema i determina quina imatge s'executarà després. Al final del carregador d’arrencada, col·loca la imatge a la memòria i abans d’executar-la.

- Imatge predeterminada 2 :

El codi de desenvolupador es troba en aquesta part, l'adreça comença a partir de 0x0000B000. Els primers 16 bytes són la capçalera de la imatge, 0x0000B008 ~ 0x0000B00F comprèn la signatura, que s'utilitza per verificar si la imatge és vàlida. El camp de signatura té dos valors vàlids per distingir la imatge nova de la imatge anterior.

- Imatge OTA :

Les dades d'aquesta part també són codi de desenvolupador. Per defecte, aquesta part de memòria comença a partir de 0x00080000 (es pot canviar). Les principals diferències entre la imatge OTA i la imatge predeterminada 2 són l’adreça de la memòria flash i el valor de la signatura.

A part del codi, hi ha alguns blocs de dades:

- Dades del sistema :

El bloc de dades del sistema comença a partir de 0x00009000. Hi ha dues dades relacionades amb l’OTA:

1. Adreça OTA: dades de 4 bytes a partir de 0x00009000. Indica l'adreça de la imatge OTA. Si el valor de l'adreça OTA no és vàlid (és a dir, 0xFFFFFFFF), la imatge OTA de la memòria flash no es pot carregar correctament.

2. Pin de recuperació: dades de 4 bytes a partir de 0x00009008. El pin de recuperació s'utilitza per determinar quina imatge (imatge predeterminada 2 o imatge OTA) s'ha d'executar quan les dues imatges siguin vàlides. Si el valor del pin de recuperació no és vàlid (és a dir, 0xFFFFFFFF), la nova imatge s'executarà per defecte.

Les dades del sistema s’eliminaran quan pengem el programa a Ameba mitjançant DAP. És a dir, s'eliminarà l'adreça OTA i Ameba determinarà que no hi ha cap imatge OTA.

- Dades de calibració : Les dades de calibració perifèriques es col·loquen en aquest bloc. Normalment, aquestes dades no s’han d’eliminar.

Pas 3: arrenca el flux

Flux d'arrencada
Flux d'arrencada

De la imatge superior, Discutim els escenaris següents: (i) OTA no s'utilitza, utilitzeu DAP per carregar el programa:

En aquesta situació, el carregador d’arrencada comprova la signatura de la imatge predeterminada 2 i l’adreça OTA. Com que s'elimina l'adreça OTA, se seleccionarà la imatge 2 per defecte per executar-la.

(ii) La imatge OTA es transfereix a Ameba, l'adreça OTA s'estableix correctament, el pin de recuperació no està definit :

Ameba ha rebut una imatge actualitzada mitjançant OTA; la signatura de la imatge predeterminada 2 es definiria com a signatura antiga.

El carregador d'arrencada comprova la signatura de la imatge predeterminada 2 i l'adreça OTA. Trobarà que l’adreça OTA conté una imatge OTA vàlida. Com que el pin de recuperació no està definit, tria la nova imatge (és a dir, la imatge OTA) que s’executarà.

(iii) La imatge OTA es transfereix a Ameba, l'adreça OTA s'estableix correctament, el pin de recuperació està establert :

Ameba ha rebut una imatge actualitzada mitjançant OTA; la signatura de la imatge predeterminada 2 es definiria com a signatura antiga.

El carregador d'arrencada comprova la signatura de la imatge predeterminada 2 i l'adreça OTA. Trobarà que l’adreça OTA conté una imatge OTA vàlida. A continuació, comproveu el valor del pin de recuperació. Si el pin de recuperació està connectat a BAIX, s’executarà la nova imatge (és a dir, la imatge OTA). Si el pin de recuperació està connectat a HIGH, s’executarà la imatge antiga (és a dir, la imatge predeterminada 2).

Pas 4: Exemple

Exemple
Exemple
Exemple
Exemple
Exemple
Exemple
Exemple
Exemple

Per utilitzar la funció OTA, actualitzeu el firmware DAP a la versió> 0.7 (la v0.7 no està inclosa). El firmware DAP per defecte de fàbrica és la versió 0.7. Seguiu les instruccions per actualitzar el firmware DAP:

Obriu l'exemple: "Fitxer" -> "Exemples" -> "AmebaOTA" -> "ota_basic"

Empleneu la informació de ssid i contrasenya al codi de mostra per a la connexió de xarxa.

Hi ha alguns paràmetres relacionats amb l'OTA:

§ MY_VERSION_NUMBER : A la primera versió, hem d’establir l’adreça OTA i el pin de recuperació. Com que aquesta vegada carreguem per USB és la primera versió, no cal que canviem aquest valor.

§ OTA_PORT : Arduino IDE trobarà Ameba mitjançant mDNS. Ameba li dirà a Arduino IDE que obre el port TCP 5000 per esperar la imatge OTA.

§ RECOVERY_PIN : Configureu el pin que s'utilitza per a la recuperació. Aquí fem servir el pin 18.

A continuació, fem servir el programa de càrrega USB a Ameba. Feu clic a Eines -> Ports, comproveu el port sèrie que voleu utilitzar :

Tingueu en compte que Arduino IDE utilitza un port per carregar el programa i el registre de sortida. Per evitar que el registre no es pugui generar quan fem servir OTA, fem servir un altre terminal de port sèrie (per exemple, terme Tera o massilla) en lloc del monitor sèrie per veure el missatge de registre.

A continuació, feu clic a Carrega i premeu el botó de restabliment.

Al missatge de registre:

1. Entre "===== Introduïu la imatge 1 ====" i "Introduïu la imatge 2 ====", podeu trobar "Imatge Flash 2: Addr 0xb000". Això significa que Ameba decideix arrencar des de la imatge predeterminada 2 a 0xb000.

2. Després de "Introduïu la imatge 2 ====", podeu trobar "Aquesta és la versió 1". Aquest és el missatge de registre que afegim a l'esbós.

3. Després que Ameba es connecti a AP i obtingui l'adreça IP "192.168.1.238", activa mDNS i espera el client.

A continuació, modificem "MY_VERSION_NUMBER" a 2.

Feu clic a "Eines" -> "Port" per veure una llista de "ports de xarxa". Cerqueu "MyAmeba a 192.168.1.238 (Ameba RTL8195A)", MyAmeba és el nom del dispositiu mDNS que hem definit al codi de mostra i "192.168.1.238" és la IP d'Ameba.

Si no trobeu el port de xarxa d’Ameba, confirmeu:

- si el vostre equip i Ameba es troben a la mateixa xarxa local?

- proveu de reiniciar Arduino IDE.

- comproveu el missatge de registre a Serial Monitor per veure si Ameba està connectat amb AP correctament.

A continuació, feu clic a penja. Aquesta vegada, el programa es carregarà mitjançant TCP. Al terminal de registre, podeu veure la informació de connexió del client.

Quan la imatge OTA es baixi correctament, Ameba es reiniciarà i es mostrarà el registre següent al terminal de registre.

- Entre "===== Introduïu la imatge 1 ====" i "Introduïu la imatge 2 ====", podeu veure un missatge de registre "Imatge Flash 2: Addr 0x80000". Això significa que Ameba decideix arrencar des de la imatge OTA a 0x80000.

- Després de "Introduïu la imatge 2 ====", el registre "Aquesta és la versió 2" és el missatge que afegim a l'esbós.

Per recuperar la imatge anterior després de descarregar la imatge OTA a Ameba, connecteu el pin de recuperació que hem definit a l'esbós (és a dir, el pin 18) a HIGH (3,3 V) i premeu reset.

A continuació, es seleccionarà la imatge 2 per defecte en arrencar. Tingueu en compte que la imatge OTA descarregada no s’esborra, un cop desconnectat el pin de recuperació de HIGH, s’executarà la imatge OTA.

A la figura següent resumim el flux de desenvolupament mitjançant OTA.

Recomanat: