RISC-V Emulator en Linux Systeem vanaf Nul

Broncode

  • /lib bevat de volledige emulatorcode voor de rv32ima-instructieset, evenals een minimale set geëmuleerde apparaten.
  • /main bevat de configuratie voor de machine en de functies die beschikbaar zijn voor gebruik met WebAssembly.

Configuratie

Alle configuratiebestanden die nodig zijn om Linux te bouwen, zijn te vinden in /boot. Het hoofdprogramma verwacht tevens dat alle gebouwde binaries in de bootmap staan.

  • riscv32-unknown-linux-gnu.config is het configuratiebestand voor de crosstool-ng toolchain.
  • riscvemulatordefconfig is het configuratiebestand voor de Linux Kernel.
  • device_tree.dts is de minimale device tree. Deze kan worden gecompileerd naar een dtb met het volgende commando:

dtc -I dts -O dtb devicetree.dts -o devicetree.dtb

  • init.c is het init-programma. Dit kan worden gecompileerd met:

riscv32-unknown-linux-gnu-gcc -static init.c -o init

  • initramfs.txt is het geninitcpio-configuratiebestand om de initramfs te genereren. Dit kan worden gecompileerd naar een cpio met:

usr/geninitcpio initramfs.txt -o initramfs.cpio

Over dit project

Dit is een RISC-V rv32ima-emulator die in staat is om Linux op te starten.

Meer informatie is te vinden op: werwolv.net/posts/linuxbringup/