This is one of the tricks to enable using both QSPI slots for PSRAM instead of the typical FLASH+PSRAM.
This is great for making audio modules, where the firmware is be small and operates on a big audio buffer. Since the biggest available PSRAM chips are 8MB, this combined 16 MB could hold around 3 minutes of mono 16-bit audio, which allows for a very nice multi track looper.
Another way (in case there's no other MCU to help with uart bootstrap) would be to add a logic chip to multiplex the CS line between Flash and the first PSRAM - copy firmware to flash and then switch to using ram.
The way it uses pin state (number passed as argument / result) for communicating with the outside world is genius. This way it very clearly matches what happens in hardware each cycle. Typical alternative is that the "cpu" calls read/write on the memory/peripherals - which gets tricky when the exact read/write cycle of the multi-cycle instruction matters for accuracy (e.g. racing the CRT beam).
I wonder if similar approach could realistically be applied to slightly newer generation hardware like GBA with ARM7TDMI.
Totally agree that the constant churn of new tools which come and go makes adapting to them and truly mastering them feel pointless. But there’s also the well established old things which (according to Lindy’s Effect) will be there for a long time still - things like Vim, Emacs, efficiently using shell. Investing time in truly mastering them seems like a good long term bet.
Like other folks here I also made something similar for myself. It started as a jsbin clone, but then I wanted to play with tweaking the environment itself. So now it's become a single editable directory tree where both the editor and the actual projects/demos share common parts of code, all synced between local storage and the server. If I break the editor and refresh the page, there's a simpler alternative editor backup to fix it. Lots of fun with such setup!
+1, the SDK is kind of opinionated and I found that often it won't play nicely with e.g. routing clocks/plls different than default. Coding directly against the datasheet gives you freedom to fully leverage the chip and the extra code you need to write this way is honestly not a lot.
This is great for making audio modules, where the firmware is be small and operates on a big audio buffer. Since the biggest available PSRAM chips are 8MB, this combined 16 MB could hold around 3 minutes of mono 16-bit audio, which allows for a very nice multi track looper.
Another way (in case there's no other MCU to help with uart bootstrap) would be to add a logic chip to multiplex the CS line between Flash and the first PSRAM - copy firmware to flash and then switch to using ram.