Small RISC-V chips
Peter Jakacki
Posts: 10,193
I've got a few of these Sipeed Longan Nano - RISC-V GD32VF103CBT6 development boards which come with a 108MHz 32-bit RISC-V core packed with all the peripherals including USB and 128kB Flash and 32kB RAM. The board also has a 160x96 color tft and uSD and a USB-C connector etc.
I want to use these in the next generation of USB serial and support chips as there is one available in QFN36 but even the 7x7mm LQFP48 is not bad.
At the moment I have managed to install all the dev tools and working with PlatformIO in the VS IDE. I've used a RISC-V version of mecrisp Forth to talk to the board but I will develop a Forth along Tachyon lines for it so I can drop a chip onto a board and program it serially via the host P1/P2 as required.
I have USB serial dongle connected to the pin header for this and needed 3.3V but my dongle only had 5V, so I took a chance that the current wouldn't be too high and inserted a red LED from 5V to 3.3V (about 1.8V drop) and it works fine and the LED is still working.
Here's a photo next to an older P2D2
I want to use these in the next generation of USB serial and support chips as there is one available in QFN36 but even the 7x7mm LQFP48 is not bad.
At the moment I have managed to install all the dev tools and working with PlatformIO in the VS IDE. I've used a RISC-V version of mecrisp Forth to talk to the board but I will develop a Forth along Tachyon lines for it so I can drop a chip onto a board and program it serially via the host P1/P2 as required.
I have USB serial dongle connected to the pin header for this and needed 3.3V but my dongle only had 5V, so I took a chance that the current wouldn't be too high and inserted a red LED from 5V to 3.3V (about 1.8V drop) and it works fine and the LED is still working.
fibos fibo(6 ) = 8 fibo(7 ) = 13 fibo(8 ) = 21 fibo(9 ) = 34 fibo(10 ) = 55 fibo(11 ) = 89 fibo(12 ) = 144 fibo(13 ) = 233 fibo(14 ) = 377 fibo(15 ) = 610 fibo(16 ) = 987 fibo(17 ) = 1597 fibo(18 ) = 2584 fibo(19 ) = 4181 fibo(20 ) = 6765 fibo(21 ) = 10946 fibo(22 ) = 17711 fibo(23 ) = 28657 fibo(24 ) = 46368 fibo(25 ) = 75025 fibo(26 ) = 121393 fibo(27 ) = 196418 fibo(28 ) = 317811 fibo(29 ) = 514229 fibo(30 ) = 832040 fibo(31 ) = 1346269 fibo(32 ) = 2178309 fibo(33 ) = 3524578 fibo(34 ) = 5702887 fibo(35 ) = 9227465 fibo(36 ) = 14930352 fibo(37 ) = 24157817 fibo(38 ) = 39088169 fibo(39 ) = 63245986 fibo(40 ) = 102334155 fibo(41 ) = 165580141 fibo(42 ) = 267914296 fibo(43 ) = 433494437 fibo(44 ) = 701408733 fibo(45 ) = 1134903170 fibo(46 ) = 1836311903 ok.
Here's a photo next to an older P2D2
Comments
https://www.eevblog.com/forum/microcontrollers/risc-v-microcontrollers-from-gigadevice/msg3027160/#msg3027160
Appears to have a stacked flash die.
Nice find! Did it come with the plastic case too?
Would be nice to find a cheap micro that can connect a USB keyboard and USB mouse to a serial port(s) for connecting into a P1 or P2 using 1 or 2 pins.
I have been pouring over RISC-V documents and simulators and lecture notes on assembly language etc and the ISA is indeed strange. There are no condition codes and the conditional jumps do the "compare" and branch. The equivalent to augs to load 32-bits but not is lui which loads the upper 20 bits directly into the register and so therefore you need to do an addi or similar to add in the lsbs, although there is a corner case due to automatic sign extension.
To load register x10 with "0xDEADBEEF" (corner case exeception) It's not as pretty as I had hoped, but it works. So much nicer always having 32-1 registers usable instead of the Cortex crippling registers.
The USB on the GD32VF103 is OTG so I can also host devices.
@jmg - Interesting that they must load Flash into hidden RAM for zero wait states then.
for sure you can also write: and the assembler will generate the LUI and the ADDI instruction for you, just like
mov reg,##$DEADBEEF with P2 assembly.
Andy
For instance, there is no move register or a jump instruction etc but they use the encoding to achieve this in one instruction whereas others such as "long 32-bit immediate" must use two instructions and compensate for sign extension.
Since I like to write a Forth that really groks the ISA, I need to understand it well so that I can even write my own assembler if need be which is sometimes necessary just to get it to work the way you need.
After having worked with ARM and Prop conditional ALU operations, I am once again having to work with none
Do you have any update for us poor souls ?
I saw another Risc-V module on your microMat board in the P2D2 thread so hopefully you didn't abandoned that project, did you ?