No description
Find a file
2022-10-23 11:42:11 -05:00
py fix build? 2022-10-23 11:42:11 -05:00
.gitignore Add a tiny elfutils like library 2022-10-22 20:20:13 -05:00
LICENSE OK what are we up to? let's explain 2022-10-22 20:24:44 -05:00
Makefile fix build? 2022-10-23 11:42:11 -05:00
README.md clarify 2022-10-22 20:28:23 -05:00
sdkconfig.h standalone build for riscv ulp programs 2022-10-22 18:00:54 -05:00
ulp.c fix build? 2022-10-23 11:42:11 -05:00
ulp.riscv.ld fix build? 2022-10-23 11:42:11 -05:00

This is a demonstration prototype for CircuitPython "coproc" on esp32s2/s3

Coproc is a new feature in CircuitPython 8 for using the riscv "ultra low power" coprocessor on esp32s2 and esp32s3 microcontrollers.

Two difficulties presented themselves to me so far:

  • Building a program
  • Accessing program variables from Python without manually transcribing hex addresses

The code here builds towards addressing these problems.

Building

.../esp-idf/install.sh
. .../esp-idf/export.sh
make

This builds a.out-stripped, which contains enough information for minidump.

Running Minidump

$ py/minidump.py 
@0000: Load 2906 bytes starting at 4096
shared_mem @ 0x0b7c 0x0400 bytes

This shows the amount of code (& initialized data) to be loaded from a.out-stripped, and at what offset within a.out-stripped that data comes.

Then, it shows the size and offset in ULP memory of the symbol shared_mem.

Using

In principle, you now use a wrapper around minielf to (A) load the Coproc binary and (B) to find symbols within the CoprocMemory.