aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2023-05-29 21:31:09 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2023-05-29 21:31:09 +0300
commit3ace1ddd76b9c04f3ed23883de6279b4485612e8 (patch)
tree2f4af69d70967c2455cb83d8c18a5416c8d1b54d /README.md
parentb7f53b9a9001708dea5303faf52f1b508eefb712 (diff)
downloadkmi-3ace1ddd76b9c04f3ed23883de6279b4485612e8.tar.gz
kmi-3ace1ddd76b9c04f3ed23883de6279b4485612e8.zip
start trying to boot on visionfive 2
+ Not bootable quite yet. Among other things, I couldn't get the current starfive u-boot fork to boot, so try adding support for booting with precompiled u-boot via the `go` command. Initial testing with qemu shows that this should be possible, and if it works, might be useful in the (far) future with other slightly janky SBCs. Also, NS16550 is 8250-based, and I'm really only using the base 8250, so rename and add visionfive 2 uart to list of compatibles. Visionfive 2 is still completely untested.
Diffstat (limited to 'README.md')
-rw-r--r--README.md18
1 files changed, 17 insertions, 1 deletions
diff --git a/README.md b/README.md
index b2b60f2..7216c1a 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ Open `docs/output/html/index.html` in your favorite web browser.
+ `RELEASE=<0/1>`: Enable optimizations when set to `1`. Default is `0`.
Note that with `RELEASE=1` the built in serial driver is disabled, as eventually
-I'd like to provide it as a separate userspace driver. At the moment only NS16550A and
+I'd like to provide it as a separate userspace driver. At the moment only 8250 and
compatible serial devices are supported.
+ `LLVM=<0/1>`: Use LLVM toolchain when set to `1`. Default is `0`.
@@ -36,6 +36,22 @@ Note that due to some bugs in the toolchain, LTO is disabled with `RELEASE=1`.
+ `UBSAN=<0/1>`: Enable undefined behavior sanitizer, outputs a number of warnings at
runtime when undefined behavior is detected. Only available with `RELEASE=0`.
++ `GENERIC_UBOOT=<0/1>`: Compile for use with generic u-boot. This allows
+booting the kernel through u-boot's `go` command. This would in theory allow
+using essentially any precompiled u-boot as a bootloader, but requires some
+extra effort by the user to manage loading different parts to where they should
+go. I should probably come up with a full example, but approximately:
+
+1. Load `kmi.bin` to address `A`
+2. Load `initrd` to address `B`
+3. Load FDT to address `C` (either provided by u-boot or a separate file)
+4. Add `initrd` to FDT's `chosen` node
+5. Boot with `go ${A} ${C}`.
+
+Note that u-boot likes to skip the `0x` prefix for
+hexadecimal values, which can confuse my string converter.
+Check that the strings you pass to `go` have their correct prefixes.
+
+ `run`: Load a test program into `qemu` and run it. Requires some outside support at
the moment, please see [kmi-example](https://github.com/Kimplul/kmi-example).
This command might eventually be moved out of this repo.