Thinking “why not” I bought a Pico2 board for my PicoCalc… flashed it and put it in and all seems well but I only have PicoMite flashed so-far…
But now, I’m looking at loading it up with my own code I’ve had a bit of a thought - the PicoCalc has on-board 8MB of PSRAM… The Pico2 Board I bought (Pimoroni Pico Plus 2 W) also has 8MB of PSRAM…
Now, knowing from another RP2350 system I’m working on (Adafruit Fruit Jam board), the PSRAM can only be memory mapped to one location so here, both PSRAM chips will be at the same locations on both the on-board chip and off-board ones, so wondering if this is going to affect anything and if I should remove it and put in a Raspberry Pi Pico2 board which I also have. (With no PSRAM and no Wi-Fi)
However… The Pimoroni board uses GP47 as the PSRAM /CE signal. The PSRAM in the PicoCalc appears to be connected to GP20 … which I don’t think is capable of driving the RAMs /CE signal automatically.
Actually, while typing this I’ve started to dig deeper and look at the code and so on… Is it that the PSRAM is controlled by some PIO functionality (or is supposed to be) and that access to it isn’t via the memory but via separate (what looks like) peek and poke style operations? (I’m not familiar with the RP2040 - maybe it didn’t have native support?) If this is the case, then I guess I quietly ignore the PSRAM on the PicoCalc motherboard and use the on-board stuff on the Pico Plus 2 W board…
Anyone have any thoughts/ideas or further insights?
The PSRAM on the PicoCalc is all but useless. It can be written and read S..L..O..W..L..Y but AFAIK non-one has managed anything better than 1 bit SPI access. And, as you identify, it can’t be memory mapped so can only be used to copy information to and from real RAM. The PSRAM on the Pimoroni Pico Plus 2 W is properly wired to be memory mapped and can be supported by any PicoCalc application. However, my experience with the Pimoroni Pico Plus 2 W is not good. Mine won’t overclock beyond 200MHz whereas the Pimoroni Pico Plus 2 runs happily at 378MHz. Unless you need the wifi capability stick with the standard version which is the optimum RP board for the PicoCalc
But anyway, I did a bit of a deeper dive later last night and came to the same conclusion. Shame. I do feel they should have just left it and brought out those extra 6 pins to the external GPIO connector. Maybe I’ll do that at a later date.
Although I suspect when they were designing it a couple of years back they’d no idea about the Pico2 and that some makers would put the PSRAM on the same carrier - which does make sense, given the high speed nature of the signals and so on.
I’m not bothered about overclocking for my applications - which is to get my own little standalone OS running on it which is written entirely in RISC-V. I already have the Pico 2 Plus W installed , so that’ll do for now. Not sure if I’ll ever use the Wi-Fi though but it’s there if I ever get the energy to write my own code for it. (Same for the Wi-Fi on the Adafruit board although they’re using the ESP32-C6 board for that… (More RISC-V niceness from my point of view)
The Pimoroni’s PSRAM is set on-board as XIP but the PicoCalc’s use GPIO, which means both can be used at the same time.
Picoware makes use of both actually, with the PicoCalc’s for frame buffering and module-usage (like the new PSRAM uf2loader), and the Pimoroni’s for extra RAM (when needed)
I had/have a similar experience, being only able to push is to 210 MHz (otherwise WiFi and the PicoCalc’s PSRAM become unstable)
Im able to get hundreds of full 320x320 frames per second using QSPI with the PSRAM.
Funny enough, I’ve noticed that the Pimoroni’s PSRAM is pretty slow in comparison with the PicoCalc’s. You can test this within Picoware in two places: the psram-test app and the System Information app