Basic Compiler für RISC-V

OP #8115453

Vor vielen Jahren habe ich AVRBasic compiler entwickelt, in Delphi. Das war echt viel Arbeit damals.

Jetzt habe ich mehrmals darüber nachgedacht das es wäre gut einen Basic Compiler für RISC-V zu haben. Naja bis gestern! Gestern habe ich Claude prompt gegeben für RiscBasic compiler. Heute läuft es auf echten FPGA hardware, ein kleines Beispiel demo was console input liest und was auf UART rausgibt gibt es auch.

https://github.com/micro-FPGA/RiscBasic

Der Compiler ist vorgesehen für FPGA SoftCores mit sehr wenig speicher 8K oder 4K bytes. Das console demo nimmt 832 bytes.

Das beispiel demo ist getestet auf CR00107 FPGA board mit Spartan-7 und Microblaze V MCS als softcore, mit IO module as Input Output.

Compiler ist ein einziges python datei, sollte auf allen OS laufen. Single pass compiler, direkt von Basic zu bin, hex, mem, elf

Wer ideen hat welche funktionen noch sinn machen würden, bitte melden, hier in Forum oder in GitHub issues

: Verschoben durch Moderator
OP #8115508

Cartman E. schrieb:

BASCOM für RISC-V. ☺ Darauf hat die Welt gewartet. Aber nicht schlecht. Further so!

Das ist mehr AVRBasic (war früher da als BASCOM!) für RISC-V

Es ist für FPGA SoftCores, da ist mal wenig Speicher verfügbar. RiscBasic ist für Konfigurationen mit 8K oder 4K Speicher.

Das ist erstaunlich was man mit KI in ein paar stunden hinkriegt. Bespiele laufen auf echten FPGA hardware, LED blinky, button lesen, UART read-write, einfaches PRINT, usw, vieles geht schon.

#8115512

Antti L. schrieb:

Das ist mehr AVRBasic (war früher da als BASCOM!) für RISC-V

Bei BASCOM würden sich wohl die Rentner und Pensionäre leichter tun.
Und schon die Messer wetzen. ☺

Es ist für FPGA SoftCores, da ist mal wenig Speicher verfügbar. RiscBasic ist für Konfigurationen mit 8K oder 4K Speicher.

Mit einen RV32 auf Cy1 habe ich auch schon getestet.

Das ist erstaunlich was man mit KI in ein paar stunden hinkriegt. Bespiele laufen auf echten FPGA hardware, LED blinky, button lesen, UART read-write, einfaches PRINT, usw, vieles geht schon.

Naja,
Das ist für so etwas sicher unkritisch. Meine Innovationen teile ich nicht mit einer K.I..☻
Da künnt ich sie ja auch gleich ans schwarze Brett heften.

#8115563

Antti L. schrieb:

Der Compiler ist vorgesehen für FPGA SoftCores

RISC-V ist nicht RISC-V; was genau für eine Variante ist das?

Interessant könnte Dein Compiler sein, wenn er die RISC-V-Cores unterstützt, die der Hersteller WCH in seinen Microcontrollern der CH32V-Reihe verwendet, wie z.B. WCH32V003.

Hier gibt es eine Auflistung der verwendeten RISC-V-Cores:

https://www.wch-ic.com/products/QingKe.html

Weiter unten auf der Seite sind drei Manuals verlinkt, die die Details der Cores beschreiben.

Diese Microcontroller sind für viele vermutlich leichter zugänglich als ein FPGA-Board; den erwähnten CH32V003 und auch andere gibt es in noch halbwgs einfach verarbeitbaren Gehäusebauformen (ab SO-8), und die einfacheren Modelle sind, da sie auch mit 5V betreiben werden können, auch recht "bastelfreundlich".

OP #8115564

Harald K. schrieb:

Antti L. schrieb:

Der Compiler ist vorgesehen für FPGA SoftCores

RISC-V ist nicht RISC-V; was genau für eine Variante ist das? Interessant könnte Dein Compiler sein, wenn er die RISC-V-Cores unterstützt, die der Hersteller WCH in seinen Microcontrollern der CH32V-Reihe verwendet, wie z.B. WCH32V003.

Der compiler is sehr generisch, sollte auf jeden RV32I/RV32IC laufen.

Leider haben ich NUR FPGA Platinen was ich verwenden kann :(

#8115652

Antti L. schrieb:

Leider haben ich NUR FPGA Platinen was ich verwenden kann

Investiere mal eine kleine Handvoll Euro hierfür:

https://de.aliexpress.com/item/1005004895791296.html

Das ist eine einfache Platine mit einem CH32V003 drauf, einem USB-Programmier- und Debug-Adapter dafür und noch fünf weiteren CH32V003.

Der Händler bei Aliexpress ist die Firma WCH höchstselbst, über den kann man auch die µCs beziehen (die Verfügbarkeit schwankt aus irgendwelchen Gründen im Wochenverlauf).

Der CH32V003 wurde auch hier im Forum schon ausführlich beleuchtet.

#8115821

Antti L. schrieb:

Aber ich glaube ich bleibe bei FPGA's.

Das ist bedauerlich, denn Du könntest mit einem Compiler für real existierende Microcontroller sicherlich eine deutlich größere Zielgruppe erreichen.

Du wirst auch einsehen, daß ein "AMD MicroBlaze v MCS subsystem" sowohl deutlich mehr Platz auf der Platine wegnimmt als auch ganz erheblich mehr Geld kostet als ein CH32V003 im SO-8 oder SO-14 ... (die bekommt man im 50er-Gurtabschnitt für ca. 10 Euro)

GPIO und UART haben solche Microcontroller selbstverständlich auch, und mehr (auch SPI, I2C und ADCs gibt es).

OP #8115825

Harald K. schrieb:

Antti L. schrieb:

Aber ich glaube ich bleibe bei FPGA's.

Das ist bedauerlich, denn Du könntest mit einem Compiler für real existierende Microcontroller sicherlich eine deutlich größere Zielgruppe erreichen.

Das projekt ist ja öffentlich und kostenlos in GitHub, jeder kann da unterstützung für Microcontroller einbauen. Hier ein beispiel wie man UART device definiert:

1
DEVICE UART0 AT &H8000_0000
2
  REG RXDATA AT +0 READONLY     ' RX FIFO
3
  REG DATA   AT +4 : 8
4
  REG STAT   AT +8 READONLY
5
  BIT RXREADY = STAT.0          ' RX FIFO has data
6
  BIT TXREADY = NOT STAT.3
7
END DEVICE

Der compiler erzeugt kleines code was sehr gut in 4K/8K system reinpasst, da kann man auch kleine FPGA's nehmen die auch gehäusemässig klein sind, die von Lattice oder Gowin

OP #8115850

Harald K. schrieb:

Antti L. schrieb:

Aber ich glaube ich bleibe bei FPGA's.

Das ist bedauerlich, denn Du könntest mit einem Compiler für real existierende Microcontroller sicherlich eine deutlich größere Zielgruppe erreichen. Du wirst auch einsehen, daß ein "AMD MicroBlaze v MCS subsystem" sowohl deutlich mehr Platz auf der Platine wegnimmt als auch ganz erheblich mehr Geld kostet als ein CH32V003 im SO-8 oder SO-14 ...

Ich habe CH32V003 include datei jetzt bei dem Kompiler, ist nicht komplett, aber mindestens CPU type und ROM/RAM sind definiert. Dass heisst CH3V003 support is etwas näher schon, nur ein datei ändern und dann sollten die Basic demos auf dem chinese chip auch laufen. Aber wie gesagt TESTEN kann ich nur an FPGA boards...

#8115872

Antti L. schrieb:

Cyblord -. schrieb:

Cartman E. schrieb:

BASCOM für RISC-V. ☺ Darauf hat die Welt gewartet.

Die Frage ist, was ist toter: RISC-V oder BASCOM?

RISC-V ist sicherlich nicht tot. Sehr lebendig sogar. Da kann ein einfacher Basic Compiler schon sinn machen.

Zweifellos.

BASCOM ist sicher auch nicht so schnell tot zu bekommen.
Da schwirrt genug Code dafür herum, den man (ich) gelegentlich für eigene Zwecke anpassen möchte. Oft wird da nicht mehr als I2C an die Pins geschoben, Tasten abgefragt, und ein LCD angesteuert.

Mit den ESP32C3 existieren ja auch recht ausgewachsene Exemplare.

OP #8116241

Harald K. schrieb:

Antti L. schrieb:

Hier ein beispiel wie man UART device definiert:

Das ist weniger wichtig als korrekter Code für den konkreten verwendeten RISC-V-Core.

den RISC-V core typ can man vorgeben:

1
TARGET RV32IC          ' RV32I | RV32IC | RV32E | RV32EC, optional +M, +Zbb

Habe dem Claude aufgabe gegeben Interrupt beispiel zum laufen zu bringen, und es hat geklappt, jetzt laufen MicroBlaze interrupts auch

Antwort schreiben

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.