I have the led example from BlackSoC working on the Blackice Mx using SDRAM. It is using @ZipCPU's SDRAM controller with @r.miller's interface to it.
So far I have only got the led example working. That flashes leds and writes "Hello World" to the uart.
The other examples shouldn't be hard to convert. When I have converted them, I can add the relevant ones to my book.
I have it running at 20Mhz with a PLL, to maintain compatibility with the Blackice II version, but I suspect it could go at least twice as fast.
The Pmod numbering is similar to icoSoc and the Blackice II version. The double Pmods are numbered 1 - 6, anticlockwise from the usb connector.
BlackSoC is a Risc-V SoC generator based on PicoRV32. The top level Verilog file, the pcf file, an include for the make file and some other files are generated by a python program. It is based on icoSoC by Clifford Wolf.
There are a set of modules for driving many types of peripherals each with a Verilog file and a python file that defines the C API for that peripheral. Peripheral include LED panels, SPI, flash, I2C, SD card, GPIO, UART etc.
For each example of the SoC, you write a short configuration file that specifies how many of each peripheral you want, what Pmods they are connected to and some parameters. The SoC is then generated by the python program (icosoc.py).
To run the led example, you do:
git clone https://github.com/lawrie.blacksoc
You need to do `stty -F /dev/ttyACM0 raw -echo;cat /dev/ttyACM0" in another terminal to see the output.
You will see the bootloader running (in BRAM) and the appimage.hex file sent to the bootloader, loaded into SDRAM and then executed.
Your C program can use some parts of the C run time library, but there is very limited support for system calls.
You need the latest firmware to run this.