Skip to main content

Compilando MicroPython para dispositivos embebidos

Qué es MicroPython

MicroPython es una implementación de software de un lenguaje de programación ampliamente compatible con Python 3, escrito en C, que está optimizado para ejecutarse en un microcontrolador.

MicroPython consiste en un compilador de Python a bytecode y un intérprete en tiempo de ejecución de ese bytecode. Al usuario se le presenta un prompt interactivo (el REPL) para ejecutar comandos compatibles inmediatamente. Se incluye una selección de bibliotecas principales de Python; MicroPython incluye módulos que dan al programador acceso al hardware de bajo nivel.

Cómo construir firmware (Usemos Xiao SAMD como ejemplo)

Seeeduino XIAO SAMD ya soporta desarrollo con micropython.

Primero: Preparar el software relevante

"arm-none-linux-gnueabi" es la cadena de herramientas que puede instalarse en sistemas basados en Debian usando un gestor de paquetes como apt (el paquete se llama gcc-arm-linux-gnueabi). En Ubuntu el arm-none-linux-gnueabi está incluido en ubertooth-firmware-source, También necesitamos preparar el entorno instalando las herramientas necesarias como gcc python y git make. Así que ejecutamos este comando

sudo apt update
sudo apt install cmake make gcc ubertooth-firmware-source python3 git

Segundo: Cambiar espacios de trabajo Clonando código fuente

Clonar el código fuente y descargar el código para los sub-módulos necesarios

Ejecutar las siguientes declaraciones en secuencia

cd ~
git clone https://github.com/micropython/micropython
cd ~/micropython
git submodule update --init --recursive

La información que descargaremos está en este archivo, que contiene la ruta de descarga y la dirección del repositorio de código

cat ~/micropython/.gitmodules 

Tercero: Construir el mpy-cross, compilador cruzado de MicroPython

La mayoría de los puertos requieren que el compilador cruzado de MicroPython se construya primero. Este programa, llamado mpy-cross, se usa para pre-compilar scripts de Python a archivos .mpy que luego pueden incluirse (congelarse) en el firmware/ejecutable para un puerto. Para construir mpy-cross usar:

cd ~/micropython/mpy-cross
make

Siguiente: Construir dependencias externas

Usamos el Seeeduino XIAO SAMD que ya soporta desarrollo con micropython. Es un controlador basado en el chip samd de arquitectura arm. Así que especificamos el número de versión y vamos al directorio correspondiente y compilamos:

cd ~/micropython/ports/samd
BOARD=SEEED_XIAO make V=1

Finalmente: Grabando firmware

podemos ver el firmware generado aquí, copiamos el firmware al dispositivo y el micro python está disponible en el XIAO SAMD

ls ~/micropython/ports/samd/build-SEEED_XIAO/ |grep firmware.uf2
sudo cp ~/micropython/ports/samd/build-SEEED_XIAO/firmware.uf2 /media/$USER/Arduino/

Probar nuestro firmware

Copia el código de abajo y verás el led azul parpadeando

from machine import Pin, Timer

led = Pin(19, Pin.OUT)
Counter = 0
def fun(tim):
global Counter
Counter = Counter + 1
state = Counter%2
led.value(state)

tim = Timer(-1)
tim.init(period=1000, mode=Timer.PERIODIC, callback=fun)

Como puedes ver Seeeduino XIAO SAMD ya soporta desarrollo con micropython.

También puedes referirte a este proceso para compilar firmware de micropython para otros dispositivos.

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para proporcionarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para atender diferentes preferencias y necesidades.

Loading Comments...