[Diao Ye aprende programación] Manual de MicroPython Biblioteca de puertos específicos ESP32 esp32.Partition.get_next_update()

Insertar descripción de la imagen aquí

MicroPython es una versión ligera del intérprete diseñada para ejecutar el lenguaje de programación Python 3 en sistemas integrados. En comparación con Python normal, el intérprete de MicroPython es pequeño (solo alrededor de 100 KB) y se compila en un archivo ejecutable binario para su ejecución, lo que resulta en una mayor eficiencia de ejecución. Utiliza un mecanismo de recolección de basura liviano y elimina la mayor parte de la biblioteca estándar de Python para adaptarse a microcontroladores con recursos limitados.

Las características principales de MicroPython incluyen:
1. La sintaxis y las funciones son compatibles con Python estándar, lo que facilita su aprendizaje y uso. Admite la mayor parte de la sintaxis principal de Python.
2. Acceda y controle directamente el hardware, controle GPIO, I2C, SPI, etc. como Arduino.
3. Potente sistema de módulos, que proporciona sistema de archivos, red, interfaz gráfica y otras funciones.
4. Admite compilación cruzada para generar código nativo eficiente, que es entre 10 y 100 veces más rápido que el intérprete.
5. La cantidad de código es pequeña y el uso de memoria es pequeño, adecuado para ejecutarse en MCU y placas de desarrollo con poca memoria.
6. Licencia de código abierto, de uso gratuito. El entorno interactivo de Shell proporciona comodidad para el desarrollo y las pruebas.
7. El controlador de E/S incorporado admite una gran cantidad de plataformas de microcontroladores, como ESP8266, ESP32, STM32, micro:bit, placa de control y PyBoard, etc. Hay una comunidad activa.

Los escenarios de aplicación de MicroPython incluyen:
1. Crear rápidamente prototipos e interacciones de usuario para productos integrados.
2. Realice algunos pequeños proyectos de hardware programables.
3. Como herramienta educativa, ayuda a los principiantes a aprender programación en Python e IoT.
4. Cree firmware para dispositivos inteligentes para lograr control avanzado y conectividad en la nube.
5. Diversas aplicaciones de microcontroladores como Internet de las cosas, inteligencia integrada, robots, etc.

Cosas a tener en cuenta al utilizar MicroPython:
1. La memoria y el espacio Flash son limitados.
2. La eficiencia de explicación y ejecución no es tan buena como la del lenguaje C.
3. Algunas funciones de la biblioteca son diferentes a las de la versión estándar.
4. Optimice la sintaxis de la plataforma y corrija las diferencias con Python estándar.
5. Utilice los recursos de memoria de forma racional y evite asignar grandes bloques de memoria con frecuencia.
6. Utilice código nativo para mejorar el rendimiento de las piezas críticas para la velocidad.
7. Utilice la abstracción de forma adecuada para encapsular las operaciones de hardware subyacentes.

En términos generales, MicroPython lleva Python al campo de los microcontroladores, lo cual es una innovación importante que no solo reduce el umbral de programación sino que también proporciona buenas capacidades de control de hardware. Es muy adecuado para el desarrollo de varios tipos de Internet de las cosas y hardware inteligente.
Insertar descripción de la imagen aquí

El esp de MicroPython se refiere al firmware de MicroPython y las bibliotecas de software relacionadas para los chips ESP8266 y ESP32. ESP8266 y ESP32 son una clase de módulos Wi-Fi y Bluetooth de bajo costo y bajo consumo ampliamente utilizados en IoT y sistemas integrados. El esp de MicroPython proporciona un entorno de secuencias de comandos avanzado para ambos chips, lo que permite a los desarrolladores utilizar el lenguaje Python para la creación y el desarrollo rápidos de prototipos.

ESP8266: Es un módulo/chip Wi-Fi de bajo costo y bajo consumo desarrollado por Espressif Systems. Tiene una pila de protocolos TCP/IP incorporada, se puede utilizar para conectarse a Internet y tiene sólidas capacidades de procesamiento. El esp de MicroPython proporciona firmware y bibliotecas de software relacionadas para ESP8266, lo que permite a los desarrolladores utilizar el lenguaje MicroPython para desarrollar aplicaciones ESP8266.

ESP32: Es un módulo/chip Wi-Fi y Bluetooth altamente integrado lanzado por Espressif Systems, en comparación con ESP8266, tiene una potencia de procesamiento más potente, más interfaces periféricas y más memoria. El esp de MicroPython también proporciona firmware y bibliotecas de software relacionadas para ESP32, lo que permite a los desarrolladores utilizar el lenguaje MicroPython para desarrollar aplicaciones ESP32.

Firmware esp de MicroPython: es una versión de firmware de MicroPython específica para chips ESP8266 y ESP32. Estos firmwares se han optimizado específicamente para ejecutarse en ESP8266 y ESP32 y proporcionan API para interacción de hardware, comunicación de red y control de periféricos.

Bibliotecas de software: el esp de MicroPython también proporciona una serie de bibliotecas de software relacionadas con el hardware ESP8266 y ESP32 para simplificar y acelerar el proceso de desarrollo. Estas bibliotecas de software proporcionan un amplio conjunto de interfaces funcionales, que cubren hardware y protocolos de comunicación de uso común, como Wi-Fi, Bluetooth, GPIO (entrada y salida de uso general), I2C, SPI y PWM, lo que permite a los desarrolladores acceder y controlar fácilmente el hardware. recursos.
Insertar descripción de la imagen aquí
esp32.Partition.get_next_update() es el método utilizado en MicroPython para obtener la siguiente información de actualización de la partición ESP32. Proporciona la posibilidad de obtener información de actualización de la partición para que pueda conocer los detalles relevantes de la próxima actualización de la partición. La siguiente es una explicación detallada de sus características principales, escenarios de aplicación y asuntos que requieren atención, y se brindan varios casos de aplicación práctica:

caracteristica principal:

El método esp32.Partition.get_next_update() se utiliza para obtener información sobre la próxima actualización de la partición.
Al llamar a este método, puede obtener la marca de tiempo y el índice de partición asociados con la próxima actualización de la partición.
La marca de tiempo devuelta indica la hora estimada de la próxima actualización y el índice de partición devuelto indica la partición que se actualizará.

Escenarios de aplicación:

El método esp32.Partition.get_next_update() es adecuado para escenarios en los que necesita conocer la información de la próxima actualización de la partición.
Puede utilizar este método para monitorear el programa de actualización de la partición y tomar las medidas adecuadas si es necesario.
Este método también se puede utilizar durante el proceso de actualización del firmware para conocer la hora y la partición de destino de la próxima actualización para poder realizar la preparación adecuada.

Cosas a tener en cuenta:

Antes de utilizar el método esp32.Partition.get_next_update(), primero debe importar el módulo esp32.
Tenga en cuenta que las marcas de tiempo devueltas son estimaciones y las actualizaciones reales pueden variar.
Los programas de actualización de particiones pueden verse afectados por otros factores, como la conectividad de la red, la disponibilidad del firmware, etc. Tenga en cuenta estos factores al utilizar la información devuelta.

A continuación se muestran algunos ejemplos de aplicaciones prácticas:

Caso 1: Obtenga la siguiente información de actualización de la partición:

import esp32

# 获取下一次分区更新的信息
next_update = esp32.Partition.get_next_update()

# 解析返回的信息
timestamp = next_update[0]
partition_index = next_update[1]

print("下一次分区更新时间戳:", timestamp)
print("下一次分区更新的分区索引:", partition_index)

Caso 2: Supervisar el plan de actualización de la partición:

import esp32
import time

while True:
    # 获取下一次分区更新的信息
    next_update = esp32.Partition.get_next_update()

    # 解析返回的信息
    timestamp = next_update[0]
    partition_index = next_update[1]
    
    # 当前时间戳
    current_time = time.time()

    if current_time >= timestamp:
        print("分区更新时间已到达,准备进行分区更新.")
        # 执行分区更新操作
        # ...
        
    # 等待一段时间后再次检查
    time.sleep(60)

Caso 3: Operaciones preparatorias antes de la actualización del firmware:

import esp32

# 获取下一次分区更新的信息
next_update = esp32.Partition.get_next_update()

# 解析返回的信息
timestamp = next_update[0]
partition_index = next_update[1]

# 根据需要进行固件更新前的准备操作
# ...

print("下一次分区更新时间戳:", timestamp)
print("下一次分区更新的分区索引:", partition_index)

Tenga en cuenta que es posible que sea necesario ajustar la marca de tiempo y el índice de partición en el ejemplo anterior en función del valor de retorno real. Asegúrese de que al utilizar el método esp32.Partition.get_next_update(), la información devuelta se analice correctamente y que se consideren otros factores antes de actuar sobre la información devuelta.

Caso 4: Verifique la hora de actualización de la partición:

import machine

# 打开分区
partition = machine.Partition('data')

# 获取下次更新的时间
next_update_time = partition.get_next_update()

# 输出下次更新的时间
print("下次更新时间:", next_update_time)

En este ejemplo, utilizamos el método esp32.Partition.get_next_update() para obtener la próxima hora de actualización de la partición. Primero abrimos una partición llamada 'datos' usando el método machine.Partition(). Luego, usamos el método get_next_update() para obtener la hora de la próxima actualización y almacenarla en la variable next_update_time. Finalmente, usamos la función print() para generar la hora de la próxima actualización.

Caso 5: Compruebe si es necesario actualizar la partición::

import machine

# 打开分区
partition = machine.Partition('data')

# 检查分区是否需要更新
need_update = partition.get_next_update() != -1

# 输出检查结果
if need_update:
    print("分区需要更新")
else:
    print("分区不需要更新")

En este ejemplo, utilizamos el método esp32.Partition.get_next_update() para comprobar si es necesario actualizar la partición. Primero abrimos una partición llamada 'datos' usando el método machine.Partition(). Luego, usamos el método get_next_update() para obtener la hora de la próxima actualización. Si el tiempo devuelto no es igual a -1, significa que es necesario actualizar la partición y configuramos la variable need_update en Verdadero. Finalmente, usamos la función print() para generar los resultados correspondientes según el valor de la variable need_update.

Caso 6: Cooperar con el temporizador para implementar la actualización de partición programada::

import machine
import utime

# 打开分区
partition = machine.Partition('data')

# 设置定时器,每隔一段时间执行分区更新
def update_partition(timer):
    partition.update()
    print("分区已更新")

# 创建定时器对象
timer = machine.Timer(0)

# 设置定时器的触发时间和间隔
timer.init(period=60000, mode=machine.Timer.PERIODIC, callback=update_partition)

# 保持程序运行,否则定时器无法触发
while True:
    utime.sleep_ms(100)

En este ejemplo, utilizamos el método esp32.Partition.update() para actualizar periódicamente la partición. Primero abrimos una partición llamada 'datos' usando el método machine.Partition(). Luego, definimos una función llamada update_partition() que realiza la operación de actualización de la partición e imprime un mensaje una vez completada la actualización. A continuación, creamos un objeto de temporizador y utilizamos el método init() para configurar el tiempo y el intervalo de activación del temporizador. Finalmente, usamos un bucle infinito para mantener el programa en ejecución; de lo contrario, el temporizador no se activará.

Caso 7: Obtener el número del área a actualizar:

from machine import Partition
part = Partition.find_partition('/update')
slot = part.get_next_update()
print('Next slot:', slot)

Caso 8: Cambiar área de actualización:

from machine import Partition
part = Partition.find_partition('/update')
slot = part.get_next_update()
part.set_next_update(1-slot)

Caso 9: Reiniciar en la actualización OTA:

from machine import Partition, reset
part = Partition.find_partition('/update')
slot = part.get_next_update()
part.set_next_update(1-slot)
reset() # reboot into next slot

El primer ejemplo obtiene el número de área para la próxima actualización. El segundo ejemplo cambia la siguiente área de actualización. El tercer ejemplo se inicia y reinicia para ingresar a la actualización OTA. Se utiliza para la gestión de actualizaciones de ESP32ota para lograr actualizaciones de software seguras y confiables.

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_41659040/article/details/132921455
Recomendado
Clasificación