QUERY · ISSUE
Pico W ENOMEM error when (re)using PIO (rp2_pio_init, CYW43)
bugport-rp2
First reported here: Pico W ENOMEM error when using PIO - Raspberry Pi Forums.
A program that uses PIO (such as the example code: micropython/pio_1hz.py at master · micropython/micropython) can't be reliably stopped and restarted on a Pico W, while it can on a Pico.
Expected result: being able to stop and start PIO example at will
Actual result: after a small number of attempts OSError: [Errno 12] ENOMEM
The cause appears to be identified as PIO.remove_program() not being usable when the CYW43 driver is loaded, as the CYW43 itself is running a PIO program.
Indeed, comments inside rp2_pio_init() suggest this may be an issue:
void rp2_pio_init(void) {
// Reset all PIO instruction memory.
#if MICROPY_PY_NETWORK_CYW43
// TODO: cannot reset PIO memory when CYW43 driver is enabled and active
// because it uses a PIO for the bus interface.
Version:
MicroPython v1.19.1 on 2022-07-29; Raspberry Pi Pico W with RP2040
rp2-pico-w-20220729-unstable-v1.19.1-223-g963e599ec.uf2
CANDIDATE · ISSUE
rp2 asm_pio : no module named 'array'
Error when running demo code in ports/rp2/README.md : PIO Blinky
MPY: soft reboot
MicroPython v1.14 on 2021-02-03; Raspberry Pi Pico with RP2040
Type "help()" for more information.
>>> import rp2
>>> def foo():
... pass
>>> rp2.asm_pio(set_init=rp2.PIO.OUT_LOW)(foo)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "rp2.py", line 228, in asm_pio
File "rp2.py", line 36, in __init__
ImportError: no module named 'array'