Skip to content

ESP32 ULP Co-Processor toolchain implemented in MicroPython

License

Notifications You must be signed in to change notification settings

PGNetHun/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-gdb toolchain (esp32-elf-as) from Espressif on a development machine.

It can also be useful in cases where esp32-elf-as 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.importupipupip.install('micropython-esp32-ulp') # Step 2: Run an example# First, upload examples/counter.py to the ESP32.importcounter

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

  • Python86.1%
  • Assembly7.6%
  • Shell6.3%
close