Hallo Community! Heute ist ein neues Spielzeug (VisionFive2) bei mir angekommen. Will ein wenig in die RISC-V Welt hinein schnuppern. Cross compiler (GCC 14.2 konfiguriert für riscv64-none-elf) ist auch schon einsatzbereit. Bin gerade dabei OpenSBI und U-Boot zu compilieren um das Board mal zu testen. Weiterer Schritt wäre ein simples "Hello World" Programm über die serielle Schnittstelle. Da ich aber noch gerne weiter in die Materie eintauchen würde (Bare-Metal), würde ich ein paar Informationen benötigen, die ich leider noch nicht gefunden habe. Zum Beispiel ein grundlegendes TRM für die RISC-V Architektur, was mal die Basisarchitektur erklärt, Speichermanagement, Exception und Interrupt handling, Systemregister, grundlegende Interfaces und so weiter... Auf der offiziellen RISC-V Präsenz hab ich derzeit bis auf die ISA und die verwendete ABI nur wenig gefunden, leider. :( Kennt hier wer nützliche Ressourcen, die den Einstieg leichter machen?
Johannes schrieb: > Auf der offiziellen RISC-V Präsenz hab ich derzeit bis auf die ISA und > die verwendete ABI nur wenig gefunden, leider. :( Viel nehr als die ISA zu definieren schreibt sich RISC-V association doch auch gar nicht auf die Fahnen. Alles drumherum ist Sache des jeweiligen Herstellers. Da darf jeder sein eigenes Süppchen kochen.
Klaus schrieb: > Johannes schrieb: >> Auf der offiziellen RISC-V Präsenz hab ich derzeit bis auf die ISA und >> die verwendete ABI nur wenig gefunden, leider. :( > > Viel nehr als die ISA zu definieren schreibt sich RISC-V association > doch auch gar nicht auf die Fahnen. Okay, das habe ich nicht gewusst. Bin davon ausgegangen, dass die RISC-V Organisation so (ähnlich) wie ARM agiert. Hätte mich vorher besser informieren müssen. > Alles drumherum ist Sache des jeweiligen Herstellers. Da darf jeder sein > eigenes Süppchen kochen. Das ist natürlich meiner Meinung nach nicht vorteilhaft. Das heißt also für mich, dass mir bis auf das TRM des Herstellers des eingesetzten SoC (Starfive JH-7110), nur wenig für den Einstieg zur Verfügung steht. Gut, der Quellcode von U-Boot (wo ich auch mal in der Vergangenheit einen Patch in der Mailinglist veröffentlicht habe und sogar eingepflegt wurde) und Linux bleibt auch noch als zusätzliche Informationsquelle.
An Introduction to Assembly Programming with RISC-V - Edson Borin Digital Design and Computer Architecture RISC-V Edition - Sarah L. Harris, David Harris
Monte Dalrymple - Inside an Open-Source Processor An Introduction to RISC-V (2021) Warren Gay - RISC-V Assembly Language Programming (2022) Stephen Smith - RISC-V Assembly Language Programming (2024) D. Patterson, J. Hennesy - Computer Organization and Design, The Hardware/Software Interface RISC-V Edition (2021)
:
Bearbeitet durch User
Motopick schrieb: > An Introduction to Assembly Programming with RISC-V - Edson Borin > > Digital Design and Computer Architecture RISC-V Edition - Sarah L. > Harris, > David Harris Harald K. schrieb: > Monte Dalrymple - Inside an Open-Source Processor An Introduction to > RISC-V (2021) > > Warren Gay - RISC-V Assembly Language Programming (2022) > > Stephen Smith - RISC-V Assembly Language Programming (2024) > > D. Patterson, J. Hennesy - Computer Organization and Design, The > Hardware/Software Interface RISC-V Edition (2021) Vielen Dank! Werde die Bücher mal (falls vorhanden) bei meiner örtlichen Bibliothek der technischen Universität ausleihen. Müsste nur den Bibliotheksausweis noch finden. :) Mal durchblättern die Bücher und später dann kaufen. OT: Leider verzögert sich die Kompilation von OpenSBI und U-Boot etwas, da ich das vor ein paar Monaten gebaute Toolchain (GNU binutils und GCC) falsch konfiguriert habe. Hab es nämlich gleich wie für ARM als *-none-elf gebaut. Allerdings unterstützt die riscv64-none-elf Variante (noch) kein PIE (Position Independent Executable). GCC 14.2 meckert zwar nicht, aber GNU ld 2.43.1 kann das (derzeit) noch nicht. Wird zwar in der Hilfe die Option "-pie" angezeigt, kommt aber die Fehlermeldung "riscv64-none-elf-ld: -pie not supported".
Noch zwei Nachzügler: Patterson, Waterman - The RISC-V Reader (2017) Stephen Smith - RISC-V Assembly Language Programming (2024)
Johannes schrieb: > müsste nur den Bibliotheksausweis noch finden. :) Hier https://libgen.is kannst du ohne Bibo-Ausweis eintreten und findest die Bücher!
Motopick schrieb: > Digital Design and Computer Architecture RISC-V Edition - Sarah L. > Harris, > David Harris Gibt es hier: github.com/berred16/BLDC-motor-encoder/blob/master/BLDC-Encoder.pdf
Im Berkeley- und Stanford-Umkreis glaube ich mich zu erinnern, dass es massig PDFs zur MIPS-Architektur zum herunterladen gab. Fuers grundlegende Verstaendnis wuerde ich damit mal anfangen, da gab es zum Pipelining und Hazards ziemlich gutes Material aus den diversen "CS"-Kursen. RISC-V ist quasi das gleiche in gruen, nur dass der verwirrende Branch-Delay-Slot wegfaellt, und die Opcodes anders gemappt sind. Alles andere um den Core ist in der Tat herstellerspezifisch, das sollte dann das TRM des Chips liefern. Keiner muss sich an den 'Standard' halten, insbesondere bei den CSR-Registern kochen einige ihre eigene Suppe.
Evtl. auch interessant: "The RISC-V Instruction Set Manual Volume I: Unprivileged ISA" "The RISC-V Instruction Set Manual Volume II: Privileged Architecture" "RISC-V ABIs Specification" Es gibt dann noch diverse Interrupt Controller wie z.B. PLIC, ECLIC, etc. "RISC-V Platform-Level Interrupt Controller Specification" Für RISC-V Bare metal könnte unsere Toolchain (Achtung Werbung) hilfreich sein: https://www.segger.com/products/development-tools/embedded-studio/
Motopick schrieb: > An Introduction to Assembly Programming with RISC-V - Edson Borin Das gibt es online auf https://riscv-programming.org/, zusätzlich gibt es da ein Übungsbuch und einen in JavaScript geschriebenen Simulator.
Harald K. schrieb: > Motopick schrieb: >> An Introduction to Assembly Programming with RISC-V - Edson Borin > > Das gibt es online auf https://riscv-programming.org/, zusätzlich gibt > es da ein Übungsbuch und einen in JavaScript geschriebenen Simulator. Da ich es etwas handfester mag, gibt es hier: https://github.com/stnolting/neorv32 einen RISC-V Softcore. Damit hat man dann, z.B. auf einem MAX10(M08) echte Hardware zum Spielen. Das ist auch ein sehr gutes Studienobjekt fuer alle die an FPGAs und VHDL interessiert sind. Interne Ablaeufe kann man in der Simulation mit Modelsim, oder an der Hardware mit SignalTap/Chipscope ins Auge fassen. Heute kann man natuerlich auch ein ESP32C3-Board beim Chinesen ordern.
Motopick schrieb: > Heute kann man natuerlich auch ein ESP32C3-Board beim Chinesen > ordern. Oder, wenn man es kleiner mag, sich einen CH32V003 ansehen. Der ist für viele einfache Anwendungen ausreichend, und ist insofern bastelfreundlich, als daß er auch mit 5V betrieben werden kann. (Das Ding kommt in verschiedenen Gehäusen, logischerweise mit unterschiedlich vielen I/Os daher, SO-8, SO-14, TSSOP-20 und QFN-20). Der Hersteller WCH stellt dafür mit "Mounriver Studio" eine etwas gewöhnungsbedürftige IDE zur Verfügung (wobei die seit dem Schritt zur Version 2.x wohl besser geworden sein soll), aber man kann auch vscode verwenden und sich eine Arbeitsumgebung selbst zusammenstellen: https://github.com/cnlohr/ch32v003fun Wahlweise mit oder auch ohne platformio Vom gleichen Hersteller gibt es auch "größere Brüder". Und entgegen der recht dürftigen Dokumentation der früheren Bausteine von WCH (wie z.B. die USB-UART-Bridge CH340), sind die Datenblätter und Reference Manuals recht vollständig und in erträglichem Englisch verfügbar. Wer eh' schon bei Ali bestellt ... kann auch im "WCH Official Store" einkaufen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.