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

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.set_boot() es el método en MicroPython utilizado para configurar la partición ESP32 para que arranque. Le permite especificar una partición como partición de inicio, cambiando así el comportamiento de inicio del dispositivo. 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.set_boot() se utiliza para configurar la partición de inicio del dispositivo ESP32.
Puede cambiar el comportamiento de inicio del dispositivo marcando una partición específica como partición de inicio.
El valor del índice de la partición (a partir de 0) se utiliza para identificar la partición que se establecerá como partición de inicio.

Escenarios de aplicación:

El método esp32.Partition.set_boot() es adecuado para escenarios en los que es necesario cambiar el comportamiento de inicio del dispositivo ESP32.
Puede utilizar este método para seleccionar una de varias particiones como partición de inicio para cambiar el código de inicio o el firmware en diferentes escenarios de aplicación.
Este método también se puede utilizar durante el proceso de actualización del firmware para escribir el nuevo firmware en una partición y configurarla como partición para el próximo inicio.

Cosas a tener en cuenta:

Antes de utilizar el método esp32.Partition.set_boot(), primero debe importar el módulo esp32.
Al configurar una partición de inicio, asegúrese de proporcionar el índice de partición correcto para evitar seleccionar la partición incorrecta como partición de inicio.
La modificación de la partición de inicio puede provocar cambios en el comportamiento del dispositivo. Haga una copia de seguridad de los datos importantes antes de hacerlo y asegúrese de comprender el impacto.

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

Caso 1: Establezca la partición 0 como partición de inicio:

import esp32

# 将分区0设置为启动分区
esp32.Partition.set_boot(0)

print("分区0已设置为启动分区.")

Caso 2: Cambiar la partición de arranque:

import esp32

# 将分区1设置为启动分区
esp32.Partition.set_boot(1)

print("分区1已设置为启动分区.")

Caso 3: Cambiar la partición de inicio después de la actualización del firmware:

import esp32

# 写入新固件到分区1
# ...

# 将分区1设置为启动分区
esp32.Partition.set_boot(1)

print("新固件已写入分区1,并设置为启动分区.")

Tenga en cuenta que es posible que sea necesario ajustar el índice particionado en el ejemplo anterior según la configuración de partición real. Puede seleccionar el índice de partición apropiado para operar según el diseño de la partición y las necesidades del ESP32. Además, asegúrese de que cuando utilice el método esp32.Partition.set_boot(), proporcione el índice de partición correcto y lo haga conociendo su impacto.

Caso 4: Cambiar la partición de arranque:

import machine

# 设置要作为启动分区的分区号
boot_partition = 1

# 设置分区为启动分区
machine.Partition.set_boot(boot_partition)

# 重启设备
machine.reset()

En este ejemplo, utilizamos el método esp32.Partition.set_boot() para cambiar la partición de inicio. Primero configuramos una variable boot_partition para especificar el número de partición que se utilizará como partición de inicio. Luego, usamos el método set_boot() para configurar la partición especificada como partición de arranque. Finalmente reiniciamos el dispositivo usando el método machine.reset() para que los cambios surtan efecto.

Caso 5: Partición de arranque de copia de seguridad::

import machine

# 设置要备份的分区号
source_partition = 0

# 设置备份的目标分区号
target_partition = 1

# 备份启动分区
machine.Partition.set_boot(source_partition, target_partition)

# 重启设备
machine.reset()

En este ejemplo, utilizamos el método esp32.Partition.set_boot() para hacer una copia de seguridad de la partición de inicio. Primero configuramos dos variables source_partition y target_partition para especificar el número de partición de la que se realizará la copia de seguridad y el número de partición de destino de la que se realizará la copia de seguridad, respectivamente. Luego, usamos el método set_boot() para copiar el contenido de la partición de origen a la partición de destino para completar la copia de seguridad. Finalmente reiniciamos el dispositivo usando el método machine.reset() para que los cambios surtan efecto.

Caso 6: Restaurar la partición de arranque predeterminada::

import machine

# 恢复为默认启动分区
machine.Partition.set_boot()

# 重启设备
machine.reset()

En este ejemplo, utilizamos el método esp32.Partition.set_boot() para restaurar la partición de inicio predeterminada. No pasamos ningún parámetro al método set_boot(), que revertirá el dispositivo a la configuración de partición de arranque predeterminada. Luego usamos el método machine.reset() para reiniciar el dispositivo y que los cambios surtan efecto.

Caso 7: Establezca la partición de inicio predeterminada:

import esp32

partition = esp32.Partition(esp32.Partition.RUNNING)
partition.set_boot()

En este ejemplo, usamos la clase esp32.Partition() para obtener el objeto de partición que se está ejecutando actualmente. Luego, al llamar al método set_boot() del objeto de partición, configuramos la partición actual como la partición de arranque predeterminada. Esto significa que ESP32 cargará código desde esta partición la próxima vez que arranque.

Caso 8: Cambiar la partición de arranque::

import esp32

partition = esp32.Partition(esp32.Partition.SUBTYPE_APP_1)
partition.set_boot()

En este ejemplo, usamos la clase esp32.Partition() para obtener un objeto de partición de un subtipo específico. En el ejemplo, usamos esp32.Partition.SUBTYPE_APP_1 para obtener el objeto de la partición 1 de la aplicación. Configuramos la partición 1 de la aplicación como la partición de inicio llamando al método set_boot() del objeto de partición. Esto se puede utilizar para implementar OTA (actualización de firmware inalámbrica) o la funcionalidad de sistema dual cambiando las particiones de arranque para cargar diferentes versiones de firmware.

Caso 9: Configurar una partición de arranque protegida::

import esp32

partition = esp32.Partition(esp32.Partition.RUNNING)
partition.set_boot(protect=True)

En este ejemplo, usamos la clase esp32.Partition() para obtener el objeto de partición que se está ejecutando actualmente. Al llamar al método set_boot() del objeto de partición y pasar protect=True como parámetro, configuramos la partición actual como una partición de arranque protegida. Esto significa que la partición estará protegida contra escrituras accidentales. Esto se puede utilizar para proteger el código de inicio o las particiones críticas del sistema contra cambios no autorizados.

Estos ejemplos muestran el método esp32.Partition.set_boot() en acción. Puede ayudarle a configurar la partición de inicio predeterminada, cambiar la partición de inicio para lograr la funcionalidad OTA o de sistema dual y configurar una partición de inicio protegida para evitar cambios no autorizados. Cuando utilice el método set_boot(), tenga en cuenta lo siguiente:

Elija su partición de arranque con cuidado, asegúrese de seleccionar la partición correcta y haga una copia de seguridad de los datos importantes.
Al cambiar las particiones de inicio, asegúrese de que haya firmware válido en la partición de destino para cargar.
Al configurar una partición de inicio protegida, asegúrese de comprender sus implicaciones y considere cuidadosamente las restricciones de acceso de escritura en la partición.

Tenga en cuenta que el ID de partición específico y la operación pueden variar según la configuración y la versión de firmware del ESP32; ajústelo de acuerdo con su situación real.

Insertar descripción de la imagen aquí

Supongo que te gusta

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