diff options
author | Bad Diode <bd@badd10de.dev> | 2021-09-08 18:21:11 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-09-08 18:21:11 +0200 |
commit | f344c83420d43193fd630012613a04085f4b1918 (patch) | |
tree | 51bb4c0e718a01c03a4d086032e843213eb51eab | |
parent | e98ffd3a32cff5d367d360be9ebe2d1e1a416054 (diff) | |
download | uxnrpi-f344c83420d43193fd630012613a04085f4b1918.tar.gz uxnrpi-f344c83420d43193fd630012613a04085f4b1918.zip |
Add README
-rw-r--r-- | README.md | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..22f99ce --- /dev/null +++ b/README.md | |||
@@ -0,0 +1,39 @@ | |||
1 | # UXNPI | ||
2 | |||
3 | This is a port of the [UXN virtual machine][uxn] for running on the Raspberry Pi | ||
4 | 3/4 without OS (baremetal). | ||
5 | |||
6 | [uxn]: https://wiki.xxiivv.com/site/uxn.html | ||
7 | |||
8 | ## Building from source | ||
9 | |||
10 | To build this software you need a compiler for the aarch64 architecture. More | ||
11 | specifically you will need the following programs in your path: | ||
12 | |||
13 | ``` | ||
14 | aarch64-elf-as | ||
15 | aarch64-elf-gcc | ||
16 | aarch64-elf-ld | ||
17 | aarch64-elf-objcopy | ||
18 | ``` | ||
19 | |||
20 | You can follow the instruction for installing these with your package manager of | ||
21 | choice or [build them from source](https://github.com/bztsrc/raspi3-tutorial/tree/master/00_crosscompiler). | ||
22 | |||
23 | Additionally you may want to test the compiled software with an emulator, since | ||
24 | testing on real hardware can be a bit of a hassle. Luckily, you can use qemu for | ||
25 | this. You will need to install `qemu-system-aarch64` for this to work. | ||
26 | |||
27 | With all of this ready, you should be able to run `make` for compiling the | ||
28 | kernel image and/or `make run` to run the kernel on a qemu VM. | ||
29 | |||
30 | To see framebuffer output from qemu, you will need a VNC client. When developing | ||
31 | this project I keep `gvncviewer` running at regular intervals so that when qemu | ||
32 | is executed it automatically connects to the screen viewer: | ||
33 | |||
34 | ``` | ||
35 | while true; do gvncviewer ::1:5900; sleep 1; done | ||
36 | ``` | ||
37 | |||
38 | Note that qvncviewer by default smooths the output so if things look weird just | ||
39 | make sure you disable smooths scaling and keep the original aspect ratio. | ||