MicroPython has become one of the most popular ways of programming microcontrollers, and the just-released MicroPython v1.24 adds support for the widely-used Raspberry Pi RP2350 and Espresif ESP32-C6 microcontrollers and a range of other changes.
Those include improved RISC-V support with native code generation, an updated Zephyr v3.7.0 RTOS with threading support, unified TinyUSB bindings across ports, a portable UART IRQ API, and enhanced mpremote recursive copy.
Damien George goes into more detail about the RISC-V improvements:
… include an RV32IMC native code emitter, native NLR and GC register scanning implementations for 32- and 64-bit RISC-V, support for placing RV32IMC native code in .mpy files and also freezing it, and RISC-V semihosting support. Testing for RISC-V is done with the qemu and unix ports, and the support is utilised in the esp32 and rp2 ports.
The Raspberry Pi RP2350 comes with both Arm Cortex-A33 and RISC-V cores, and the good news is that both Arm and RISC-V cores are supported since you’ll find images for both architectures on the firmware page for the Raspberry Pi Pico 2. The RP2 port is based on the Pico SDK v2.0.0 and IPv6 has been enabled by default for boards with wireless such as the upcoming Raspberry Pi Pico 2 W.
MicroPython ESP32 port now supports the ESP-IDF v5.2.2 which partially explains why ESP32-C6 MCU is now supported. We’re also told the RISC-V native emitter has been enabled on both ESP32-C3 and ESP32-C6 MCUs. Espressif SoC also received some important bug fixes for handling native code loaded from .mpy files, stack corruption, and I2S, among other changes.
MicroPythong v1.24 also implements a range of improvements for the STM32 microcontrollers which gain optional “network.PPP” support through lwIP, support for OctoSPI on STM32H7, Arduino Portenta H7 and Nicla Vision boards can now use the NXP SE05x secure element with integration in mbedTLS, and more.
A total of nine boards have been added to the release: ESP32_GENERIC_C6, M5STACK_ATOMS3_LITE, M5STACK_NANOC6, OLIMEX_ESP32_EVB, UM_FEATHERS3NEO, UM_OMGS3, UM_RGBTOUCH_MINI and UM_TINYC6 (esp32 port), RPI_PICO2 (rp2 port), ARDUINO_OPTA (stm32 port).
Since MicroPython is designed to run on resource-limited hardware, it’s important to monitor any memory footprint changes, and the code size changes are minimal with the new MicroPython v1.24 release:
1 2 3 4 5 6 7 8 9 10 11 12 |
bare-arm: +116 +0.203% minimal x86: +185 +0.100% unix x64: +8994 +1.098% stm32: +1028 +0.263% cc3200: +1152 +0.625% esp8266: +2968 +0.426% esp32: -53617 -3.101% mimxrt: +1864 +0.513% renesas-ra: +1536 +0.245% nrf: +1460 +0.781% rp2: +3592 +1.068% samd: +2244 +0.845% |
You can read Damien’s announcement on GitHub, check out the huge list of changes, and download the source code. You’ll find binary firmware files for your hardware on the MicroPython download page.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress