From 8a7aabfdad31ca103f71c476583574ee88b06e5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Mon, 28 Sep 2020 13:22:46 +0200 Subject: [PATCH] Using sedna-buildroot as source for binaries now. Moved configs to buildroot repo. --- build.gradle | 1 + .../cil/oc2/client/gui/RISCVTestScreen.java | 31 ++++++++----------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/build.gradle b/build.gradle index 5e279bd1..de83f692 100644 --- a/build.gradle +++ b/build.gradle @@ -56,6 +56,7 @@ dependencies { minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" compile 'li.cil.sedna:sedna:0.0.1+' + compile 'li.cil.sedna:sedna-buildroot:0.0.1+' compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}:api") runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}") diff --git a/src/main/java/li/cil/oc2/client/gui/RISCVTestScreen.java b/src/main/java/li/cil/oc2/client/gui/RISCVTestScreen.java index d6eddc9e..816f4555 100644 --- a/src/main/java/li/cil/oc2/client/gui/RISCVTestScreen.java +++ b/src/main/java/li/cil/oc2/client/gui/RISCVTestScreen.java @@ -5,11 +5,12 @@ import it.unimi.dsi.fastutil.bytes.ByteArrayFIFOQueue; import li.cil.oc2.client.gui.terminal.Terminal; import li.cil.oc2.client.gui.terminal.TerminalInput; import li.cil.oc2.common.vm.VirtualMachineRunner; -import li.cil.sedna.api.device.PhysicalMemory; import li.cil.sedna.api.Sizes; +import li.cil.sedna.api.device.PhysicalMemory; +import li.cil.sedna.buildroot.Buildroot; import li.cil.sedna.device.block.ByteBufferBlockDevice; -import li.cil.sedna.device.serial.UART16550A; import li.cil.sedna.device.memory.Memory; +import li.cil.sedna.device.serial.UART16550A; import li.cil.sedna.device.virtio.VirtIOBlockDevice; import li.cil.sedna.device.virtio.VirtIOConsoleDevice; import li.cil.sedna.device.virtio.VirtIOKeyboardDevice; @@ -21,9 +22,8 @@ import org.apache.logging.log4j.Logger; import org.lwjgl.glfw.GLFW; import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.util.Objects; public final class RISCVTestScreen extends Screen { @@ -163,14 +163,11 @@ public final class RISCVTestScreen extends Screen { } private void createVirtualMachine() throws Throwable { - final String firmware = "../buildroot/output/images/fw_jump.bin"; - final String kernel = "../buildroot/output/images/Image"; - final File rootfsFile = new File("../buildroot/output/images/rootfs.ext2"); - final R5Board board = new R5Board(); final PhysicalMemory rom = Memory.create(128 * 1024); final PhysicalMemory memory = Memory.create(32 * 1014 * 1024); - hdd = new VirtIOBlockDevice(board.getMemoryMap(), ByteBufferBlockDevice.createFromFile(rootfsFile, true)); + hdd = new VirtIOBlockDevice(board.getMemoryMap(), + ByteBufferBlockDevice.createFromStream(Buildroot.getRootFilesystem(), true)); uart = new UART16550A(); console = new VirtIOConsoleDevice(board.getMemoryMap()); keyboard = new VirtIOKeyboardDevice(board.getMemoryMap()); @@ -200,21 +197,19 @@ public final class RISCVTestScreen extends Screen { board.reset(); - loadProgramFile(memory, kernel); - loadProgramFile(rom, firmware); + loadProgramFile(memory, Buildroot.getLinuxImage()); + loadProgramFile(rom, Buildroot.getFirmware()); runner = new ConsoleRunner(board); } - private static void loadProgramFile(final PhysicalMemory memory, final String path) { + private static void loadProgramFile(final PhysicalMemory memory, final InputStream stream) { try { - try (final FileInputStream is = new FileInputStream(path)) { - final BufferedInputStream bis = new BufferedInputStream(is); - for (int value = bis.read(), address = 0; value != -1; value = bis.read()) { - memory.store(address++, (byte) value, Sizes.SIZE_8_LOG2); - } + final BufferedInputStream bis = new BufferedInputStream(stream); + for (int address = 0, value = bis.read(); value != -1; value = bis.read(), address++) { + memory.store(address, (byte) value, Sizes.SIZE_8_LOG2); } - } catch (final Exception e) { + } catch (final Throwable e) { LOGGER.error(e); } }