Skip to content
ESP32 ULP Co-Processor toolchain implemented in MicroPython
Python Assembly Shell
Branch: master
Clone or download
ThomasWaldmann Merge pull request #36 from ThomasWaldmann/gc
call the garbage collector now and then
Latest commit 89c6ed9 May 13, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
esp32_ulp Merge pull request #36 from ThomasWaldmann/gc May 13, 2018
examples add first example: a simple counter running on the ULP coprocessor May 2, 2018
tests Merge pull request #36 from ThomasWaldmann/gc May 13, 2018
.gitignore more .gitignore Mar 19, 2018
README.rst add a link to espressif's ULP examples May 3, 2018
demo.S implement tsens instruction, fixes #1 May 2, 2018 rename demo.s to demo.S Mar 13, 2018


What is py-esp32-ulp?

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

It is able to translate small, simple assembler language programs to a loadable/executable machine code binary, at runtime, on the ESP32 microcontroller, from projects implemented in MicroPython.

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


The most commonly used simple stuff should work.

We have some unit tests and also compatibility tests that compare the output whether it is identical with binutils-esp32ulp output.

There might be some stuff missing, some bugs and other symptoms of alpha software. Also, error and exception handling is rather rough yet.

Please be patient or contribute missing parts or fixes.

See the issue tracker for known bugs and todo items.


We are NOT (fully) compatible with "as", but we try to be close for the stuff that is actually implemented:

Espressif docs:

Espressif ULP examples:

You can’t perform that action at this time.