Tabla de contenido:

Programación de Arduino por aire (OTA) - Ameba Arduino: 4 pasos
Programación de Arduino por aire (OTA) - Ameba Arduino: 4 pasos

Video: Programación de Arduino por aire (OTA) - Ameba Arduino: 4 pasos

Video: Programación de Arduino por aire (OTA) - Ameba Arduino: 4 pasos
Video: ¿Acertijos? El primer chip de Wi-Fi de 5 GHz compatible con Arduino 2024, Noviembre
Anonim
Programación de Arduino por aire (OTA) - Ameba Arduino
Programación de Arduino por aire (OTA) - Ameba Arduino

Hay muchos microcontroladores Wi-Fi en el mercado, muchos fabricantes disfrutan programando su microcontrolador Wi-Fi usando Arduino IDE. Sin embargo, una de las características más interesantes que ofrece un microcontrolador Wi-Fi tiende a pasarse por alto, es decir, programar y cargar su código de forma remota e inalámbrica mediante la función OTA (Over-The-Air).

En este Instructable, le mostraré cómo configurar OTA en su microcontrolador Wi-Fi usando el ubicuo IDE Arduino en el microcontrolador Ameba Arduino Wi-Fi.

Suministros

Ameba Arduino x 1

Paso 1: OTA

OTA
OTA

OTA (Over-The-Air) se refiere al mecanismo de actualización en línea a través de Internet.

Arduino IDE ofrece la función OTA, que sigue el flujo de trabajo de la figura anterior.

(i) Arduino IDE busca a través de mDNS para dispositivos con servicio Arduino IDEOTA en la red local.

(ii) Dado que el servicio mDNS se está ejecutando en Ameba, Ameba responde a la búsqueda de mDNS y abre el puerto TCP específico para la conexión.

(iii) El usuario desarrolla el programa en Arduino IDE. Cuando termine, elija el puerto de red.

(iv) Haga clic en cargar. Luego, Arduino IDE envía la imagen OTA a Ameba a través de TCP, Ameba guarda la imagen en una dirección específica y configura la opción de arranque para arrancar desde esta imagen la próxima vez.

El flujo de trabajo consta de tres partes: proceso de imagen mDNS, TCP y OTA. Los detalles relacionados con mDNS se describen en el tutorial de mDNS. La programación de sockets TCP se utiliza para transferir imágenes y ya se proporciona en la API de OTA.

En la siguiente sección, analizaremos cómo procesar la imagen OTA y presentaremos algunos conocimientos básicos sobre el diseño de la memoria flash Ameba y el flujo de arranque.

Paso 2: Diseño de la memoria flash Ameba

Diseño de memoria flash Ameba
Diseño de memoria flash Ameba

El tamaño de la memoria flash de Ameba RTL8195A es de 2 MB, varía de 0x00000000 a 0x00200000. Sin embargo, el tamaño de la memoria flash de Ameba RTL8710 es de 1 MB. Para adaptarse al uso de diferentes placas, asumimos que el diseño de la memoria flash es de 1 MB.

Como se muestra en la figura anterior, el programa Ameba ocupa tres partes de la memoria flash:

- Imagen de arranque:

Es decir, el gestor de arranque. Cuando Ameba arranca, coloca la imagen de arranque en la memoria y realiza la inicialización. Además, determina dónde proceder después del cargador de arranque. El cargador de arranque mira la dirección OTA y el pin de recuperación en el área de datos del sistema y determina qué imagen se ejecutará después. Al final del gestor de arranque, coloca la imagen en la memoria y procede a ejecutarla.

- Imagen predeterminada 2:

El código de desarrollador se coloca en esta parte, la dirección comienza desde 0x0000B000. Los primeros 16 bytes son el encabezado de la imagen, 0x0000B008 ~ 0x0000B00F comprende la Firma, que se utiliza para verificar si la imagen es válida. El campo de firma tiene dos valores válidos para distinguir la nueva imagen de la antigua.

- Imagen OTA:

Los datos de esta parte también son código de desarrollador. De forma predeterminada, esta parte de la memoria comienza desde 0x00080000 (se puede cambiar). Las principales diferencias entre la imagen OTA y la imagen predeterminada 2 son la dirección de la memoria flash y el valor de la firma.

Aparte del código, hay algunos bloques de datos:

- Datos de sistema:

El bloque de datos del sistema comienza desde 0x00009000. Hay dos datos relacionados con OTA:

1. Dirección OTA: datos de 4 bytes a partir de 0x00009000. Indica la dirección de la imagen OTA. Si el valor de la dirección OTA no es válido (es decir, 0xFFFFFFFF), la imagen OTA en la memoria flash no se puede cargar correctamente.

2. Pin de recuperación: 4 bytes de datos a partir de 0x00009008. El pin de recuperación se utiliza para determinar qué imagen (Imagen 2 predeterminada o Imagen OTA) ejecutar cuando ambas imágenes son válidas. Si el valor del pin de recuperación no es válido (es decir, 0xFFFFFFFF), la nueva imagen se ejecutará de forma predeterminada.

Los datos del sistema se eliminarán cuando carguemos el programa en Ameba a través de DAP. Es decir, se eliminará la dirección OTA y Ameba determinará que no hay imagen OTA.

- Datos de calibración: los datos de calibración periférica se colocan en este bloque. Normalmente, estos datos no deben eliminarse.

Paso 3: flujo de arranque

Flujo de arranque
Flujo de arranque

De la imagen de arriba, Discutimos los siguientes escenarios: (i) No se usa OTA, use DAP para cargar el programa:

En esta situación, el cargador de arranque verifica la firma de la imagen predeterminada 2 y la dirección OTA. Dado que se elimina la dirección OTA, se seleccionará la imagen predeterminada 2 para su ejecución.

(ii) La imagen OTA se transfiere a Ameba, la dirección OTA está configurada correctamente, el pin de recuperación no está configurado:

Ameba ha recibido una imagen actualizada a través de OTA, la firma de la imagen predeterminada 2 se establecería en la firma anterior.

Bootloader comprueba la firma de la imagen 2 predeterminada y la dirección OTA. Encontrará que la dirección OTA contiene una imagen OTA válida. Dado que el pin de recuperación no está configurado, elige la nueva imagen (es decir, la imagen OTA) que se ejecutará.

(iii) La imagen OTA se transfiere a Ameba, la dirección OTA está configurada correctamente, el pin de recuperación está configurado:

Ameba ha recibido una imagen actualizada a través de OTA, la firma de la imagen predeterminada 2 se establecería en la firma anterior.

Bootloader comprueba la firma de la imagen 2 predeterminada y la dirección OTA. Encontrará que la dirección OTA contiene una imagen OTA válida. Luego verifique el valor del pin de recuperación. Si el pin de recuperación está conectado a LOW, se ejecutará la nueva imagen (es decir, imagen OTA). Si el pin de recuperación está conectado a HIGH, se ejecutará la imagen anterior (es decir, la imagen predeterminada 2).

Paso 4: Ejemplo

Ejemplo
Ejemplo
Ejemplo
Ejemplo
Ejemplo
Ejemplo
Ejemplo
Ejemplo

Para utilizar la función OTA, actualice el firmware DAP a la versión> 0.7 (la versión 0.7 no está incluida). El firmware DAP predeterminado de fábrica es la versión 0.7. Siga las instrucciones para actualizar el firmware DAP:

Abra el ejemplo: "Archivo" -> "Ejemplos" -> "AmebaOTA" -> "ota_basic"

Complete la información de ssid y contraseña en el código de muestra para la conexión de red.

Hay algunos parámetros relacionados con OTA:

§ MY_VERSION_NUMBER : En la primera versión, necesitamos configurar la dirección OTA y el pin de recuperación. Dado que esta vez que cargamos a través de USB es la primera versión, no necesitamos cambiar este valor.

§ OTA_PORT: Arduino IDE encontrará Ameba a través de mDNS. Ameba le dirá a Arduino IDE que abre el puerto TCP 5000 para esperar la imagen OTA.

§ RECOVERY_PIN: Configure el pin utilizado para la recuperación. Usamos el pin 18 aquí.

Luego usamos el programa de carga USB a Ameba. Haga clic en Herramientas -> Puertos, verifique el puerto serie que desea usar:

Tenga en cuenta que Arduino IDE utiliza un puerto para cargar el programa y el registro de salida. Para evitar la situación de que el registro no se pueda generar cuando usamos OTA, usamos otro terminal de puerto serie (por ejemplo, término Tera o putty) en lugar del monitor en serie para ver el mensaje de registro.

Luego haga clic en cargar y presione el botón de reinicio.

En el mensaje de registro:

1. Entre “===== Enter Image 1 ====” e “Enter Image 2 ====”, puede encontrar “Flash Image 2: Addr 0xb000”. Esto significa que Ameba determina arrancar desde la Imagen predeterminada 2 en 0xb000.

2. Después de “Ingresar imagen 2 ====”, puede encontrar “Esta es la versión 1”. Este es el mensaje de registro que agregamos en el boceto.

3. Después de que Ameba se conecta al AP y obtiene la dirección IP “192.168.1.238”, activa mDNS y espera al cliente.

A continuación, modificamos "MY_VERSION_NUMBER" a 2.

Haga clic en "Herramientas" -> "Puerto", puede ver una lista de "Puertos de red". Busque "MyAmeba en 192.168.1.238 (Ameba RTL8195A)", MyAmeba es el nombre del dispositivo mDNS que configuramos en el código de muestra y "192.168.1.238" es la IP de Ameba.

Si no puede encontrar el puerto de red de Ameba, confirme:

- si su computadora y Ameba están en la misma red local?

- intente reiniciar Arduino IDE.

- Verifique el mensaje de registro en Serial Monitor para ver si Ameba está conectado al AP correctamente.

Luego haga clic en cargar. Esta vez, el programa se cargará a través de TCP. En el terminal de registro, puede ver la información de conexión del cliente.

Cuando la imagen OTA se descargue correctamente, Ameba se reiniciará y el siguiente registro se mostrará en el terminal de registro.

- Entre “===== Enter Image 1 ====” y “Enter Image 2 ====”, puede ver un mensaje de registro “Flash Image 2: Addr 0x80000”. Esto significa que Ameba determina arrancar desde la imagen OTA en 0x80000.

- Después de “Ingresar imagen 2 ====”, el registro “Esta es la versión 2” es el mensaje que agregamos en el boceto.

Para recuperar la imagen anterior después de descargar la imagen OTA a Ameba, conecte el pin de recuperación que establecimos en el boceto (es decir, el pin 18) a HIGH (3.3V) y presione reiniciar.

Entonces se elegirá la imagen predeterminada 2 al arrancar. Tenga en cuenta que la imagen OTA descargada no se elimina, una vez que el pin de recuperación se desconecta de HIGH, se ejecutará la imagen OTA.

Resumimos el flujo de desarrollo usando OTA en la siguiente figura.

Recomendado: