add ULP support with uPython assembler
Adds support for loading and running ULP code (taken from Andreas Valder's PR to Damien George's MicroPython) together with Thomas Waldmann's micropython ULP assembler.
ulp_count.py included as simple usage example pulse_counter.py shows use of GPIO by ULP to debounce a noisy pulse stream
Running a ULP blob should be integrated; it's necessary to be included in the firmware. But does it make sense to integrate Thomas Waldmann's assembler? It can just be deployed to a device and run.
Allowing it to be deployed to a device using upip would be very helpful though!
Not sure, but it certainly lowers the bar for developing code for the ULP, and ULP support is a essential feature not a nice to have, esp. if you want a battery powered device.
The code/debug/test cycle is much faster with the python assembler, as theres just one file to copy to the target, which given the lack of visibility of the ULP code, really helps development (esp. as the ULP binary is functionally very closely coupled to the python code that launches and talks to it)
Until/unless someone integrates the esp-idf ULP compiler into the build scripts, Thomas Waldmann's assembler seems like a great approach. Even then, the one file binary+python ULP update makes it preferable IMO.
Thank you for the PR.
I'll work on ULP support next month, then I'll probably merge this PR or parts of it.