rp2: Support for new RP2350 PIO instructions in the `@rp2.asm_pio` assembler
Description
The RP2350 adds several new PIO instructions/options compared to the RP2040 - currently they're not supported by MicroPython's @rp2.asm_pio assembler, so it's difficult to use them under MicroPython.
https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.pdf
The PIO changes are listed in Section 11.1.1. ('Changes from RP2040') - note that the first change is:
DBG_CFGINFO.VERSIONindicates the PIO version, to allow PIO feature detection at runtime.
This 4-bit field was reserved-0 on RP2040 (indicating version 0), and reads as 1 on RP2350.
Specifically I'm interested in the new variants of mov that allow random-access to the FIFO queue with indexed arguments:
- mov rxfifo[y], isr
- mov rxfifo[<index>], isr
- mov osr, rxfifo[y]
- mov osr, rxfifo[<index>]
where:
y: The literal token "y", indicating the RX FIFO entry is indexed by the Y register.<index>: A value (see Section 11.3.2) specifying the RX FIFO entry to write (valid range 0-3).
It's not currently possible to express these with the Micropython mov() assembler function, so far as I'm aware.
Support for the rp2040 was originally added to MicroPython with:
- https://github.com/micropython/micropython/pull/6791
See also:
- https://github.com/raspberrypi/pico-feedback/issues/437
Code Size
Random-access to the FIFO queue is a pretty substantial upgrade for PIO! I really do not know how large/difficult the implementation would be though.
Implementation
I hope the MicroPython maintainers or community will implement this feature
Code of Conduct
Yes, I agree
docs: RP2 section should include RP2350 (A/B) and/or eliminate hard references to only RP2040
Documentation URL
No response
Description
Per title, the docs on RP2 have hardcoded references to 'RP2040'; capability statements (PIO etc) or references to datasheet are specifically addressing the RP2040.
Code of Conduct
Yes, I agree