I have the Adafruit DVI board and have been hacking on it some. It's more fun than should be allowed.
There's a project to get this running using Rust[1]. Currently it outputs the blue channel with sync, but has trouble with the other two channels. I don't have a hardware lab with scope, logic analyzer, etc., so it's not easy for me to debug.
In the meantime, I've been doing some experiments in the C codebase as well[2], mostly in the direction of proportionally spaced bitmap text, using the fonts in the X11 distribution.
Here's another [1] project that does VGA output from an RP2040 (the project also includes some game). There's also some support for VGA in the pico_extras [2] repo.
This reminds me of the Uzebox [1], a video game console based on an ATMega644, but the RP2040 in this looks far more powerful at a glance. How far could this realistically be pushed?
More than 32 instructions per PIO block: my main current project (PicoGUS) uses 32 instructions on one PIO block and 31 on the other to handle ISA IO, ISA DMA, I2S audio out, and SPI PSRAM access. Having more would let me cut a few less corners in how ISA is handled.
More/more flexible PIO instructions: branching is very limited, you can only arbitrarily SET up to 5 pins or pindirs at once (increasing to 8 would be a godsend), stalling with a sideset repeatedly executes the sideset, etc... I could go on.
Memory mapped PSRAM: I made a library to assist with accessing SPI PSRAM but it's still just functions to get/set groups of bytes. An intelligent cache around it would also mitigate the much higher latency of accessing PSRAM as well.
Another pair of PIO blocks (and two more DMA channels) is my desire. I think a lot of people would love to see a (slightly more expensive) variant with more uncommitted GPIOs.
My pet projects with the Pico and clones involve interfacing with an 8-bit processor, and the RP2040 just doesn’t expose enough pins for the full data, address, and control busses AND actually doing something interesting with the outside world.
Another dedicated USB PHY peripheral would also be great, a lot of people lose a PIO block to adding a second USB port. Obviously this also shows the power of PIO, but it’s nice to be able to reserve those blocks for more obscure physical things.
I bet a lot of people would like more analog pins, the Teensy provides a lot more, for example.
Better power consumption, especially in deep sleep. Make waking up cheap too, especially for some IOT purposes, like grabbing a sensor reading every couple minutes and storing it in a queue for future burst transmission. Optimize for that sorta thing. Measure in nanoamps.
Adafruit Feather RP2040 with HDMI Output Port
https://youtu.be/Nsvf5gnYErs
https://www.adafruit.com/product/5710
Generating PAL
https://hackaday.com/2023/01/24/generating-pal-video-with-a-...