Skip to content

ESP32 ULP Co-Processor toolchain implemented in MicroPython

License

Notifications You must be signed in to change notification settings

lmarkrol/micropython-esp32-ulp

 
 

Repository files navigation

Build Status

micropython-esp32-ulp

micropython-esp32-ulp is an assembler toolchain for the ESP32 ULP (Ultra Low-Power) Co-Processor, written in MicroPython.

It can translate small assembly language programs to a loadable/executable ULP machine code binary, directly on the ESP32 microcontroller.

This is intended as an alternative approach to assembling such programs using the binutils-esp32ulp toolchain from Espressif on a development machine.

It can also be useful in cases where binutils-esp32ulp is not available.

Features

The following features are supported:

  • the entire ESP32 ULP instruction set
  • constants defined with .set
  • constants defined with #define
  • expressions in assembly code and constant definitions
  • RTC convenience macros (e.g. WRITE_RTC_REG)
  • many ESP32 ULP code examples found on the web will work unmodified

Quick start

To get going run the following directly on the ESP32:

# Step 1: Install micropython-esp32-ulp
# IMPORTANT: Ensure the ESP32 is connected to a network with internet connectivity.
import upip
upip.install('micropython-esp32-ulp')

# Step 2: Run an example
# First, upload examples/counter.py to the ESP32.
import counter

The examples/counter.py example shows how to assemble code, load and run the resulting binary and exchange data between the ULP and the main CPU.

Documentation

See docs/index.rst.

Requirements

The minimum supported version of MicroPython is v1.12.

An ESP32 is required to run the ULP machine code binary produced by micropython-esp32-ulp (the ESP32-S2 will not work as it is not binary compatible with the ESP32).

License

This project is released under the MIT License.

About

ESP32 ULP Co-Processor toolchain implemented in MicroPython

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 86.2%
  • Assembly 7.6%
  • Shell 6.2%