Open siffland opened 8 months ago
Nice! I've been looking at dynamic loading of cores. It looks like switching through the SIP flash IS the way to go. We can do this either with a small Linux board (e.g. LicheeRV Nano), or with the BL616 MCU on board Nano 20K and Primer 25K (see https://github.com/nand2mario/nestang/issues/47).
The plan is for nestang to also include iosys (the softcore). Once that's done, it should improve things. It won't be necessary to powercycle to read the sd card.
This works on the tang nano 20k (i did not try on my 25k yet). I have it powered by a raspberry pi 3 A+'s USB port, also i have openFPGALoader installed on the pi. So the following works flawlessly
Loading the firmware from the snestang release 0.6
openFPGALoader -b tangnano20k -f firmware.bin -o 0x500000
Then we can load the snestang release 0.6
openFPGALoader -b tangnano20k -f snestang_nano20k.fs
And we can load the nestang release 0.8 when desired
openFPGALoader -b tangnano20k -f nestang_nano20k.fs
From there we can cycle back between the snestang.fs and the nestang.fs commands (i am assuming the nestang does not overwrite the risc core loaded at 0x500000 since i do not have to redo the firmware.bin each time). I even verified they can share the same sdcard (however the nestang core does require that you powercycle the tang to reread the sdcard, but that is quick. snestang core does not require this).
I am not sure if the 20k has rx/tx or if the risc core can use extra pins as rx/tx. If it can and it can utilize the risc core on the nestang as well, can the menu tell the raspberry pi (A+ or zero) to change cores using serial input? At first i thought it might be a big ask, but it might not (very simple menu).
If it is worth investigating it would still be a cheap system like a mini MiSTeR (for a lot of SNES and lower devices that might be able to be ported to it), however i do not have the knowledge (i can test though). Thoughts?