I am just having a look at this.
This thread is very old and I was using an external usb to serial device at the time as the Icecore firmware did not support a uart at the time I was doing this. It was added later and used /dev/ttyACM0. The external usb to serial device used /dev/ttyUSB0.
The icecore firmware still does not support writing an image to the flash apart from a bitstream at address 0, so my writeflash utility is still useful, but the instructions for using it are a bit different to the ones in this thread.
The writeflash utility is written using the risc-v saxonsoc, but its only purpose is to write an image to the flash memory. It does not run a risc-v program. But you can use a different saxonsoc bitstream to run a risc-v program from flash.
I had a variety of risc-v systems running on the Blackice Mx board. Some ran the risc-v program from flash memory, some ran it from BRAM and some loaded it into SDRAM and ran it from there. None of them had much testing and there were some issues with them that I never properly diagnosed.
I either used SaxonSoc with the VexRiscv cpu, or I used variants of picosoc or icosoc with the picorv32 cpu.
I am not sure which is easiest for your students to use.
For using SaxonSoc, this thread is a bit more up to date - https://forum.mystorm.uk/t/running-saxonsoc-on-blackice-mx
However, SaxonSoc has moved on a lot since then, and has had some incompatible changes, so I don't know if all that still works.
The instructions for using writeflash in that thread are more accurate than the ones in this thread.
An alternative to SaxonSoc is BlackSoc, which uses picorv32. With that the risc-v program is loaded over the uart link (/dev/ttyACM0) and runs from SDRAM.
Another alternative is pico_xip_soc which is described in this thread - https://forum.mystorm.uk/t/pacman-game-using-pico-xip-soc/733
That again uses picorv32, but runs the program from flash memory using execute-in place, so needs writeflash to write the image to the flash memory.
The very simpest of the risc-v Socs that I produced is described in this thread - https://forum.mystorm.uk/t/pico-ram-soc-on-blackice-mx
Again it uses picorv32, but just runs very small risc-v programs from BRAM.
As I say, I am not sure which of these (if any) suit your requirement.