Xous SDK (pinned for betrusted transpilation)
Find a file
Sean Cross 19ddb32d9d xous: add syscalls for connecting to a server
This is required because server IDs are 128 bits, but we only have
enough space for 32 bits in the message.

This is fine, because it means we can drop "Connect" permissions to
prevent compromised clients from making new connections.

Signed-off-by: Sean Cross <sean@xobs.io>
2020-03-17 13:00:06 +08:00
docs arguments: use byte-sized granularity for IniE 2020-03-12 15:28:28 +08:00
emulation syscalls: begin adding message-passing syscalls 2020-03-17 10:27:03 +08:00
examples examples: remove memory checks 2020-03-16 19:04:26 +08:00
kernel kernel: properly zero out pages prior to handing them to userspace 2020-03-17 11:35:38 +08:00
loader loader: implement byte-addressing for init elf files 2020-03-12 15:29:10 +08:00
tools tools: generate byte addresses for mini elf files 2020-03-12 15:29:26 +08:00
xous-rs xous: add syscalls for connecting to a server 2020-03-17 13:00:06 +08:00
.gitattributes initial commit 2020-03-10 12:13:05 +08:00
.gitignore initial commit 2020-03-10 12:13:05 +08:00
Cargo.lock cargo: add lock file for sha3 implementation 2020-03-16 19:04:46 +08:00
Cargo.toml log: add log example 2020-03-13 20:32:44 +08:00
CODE_OF_CONDUCT.md initial commit 2020-03-10 12:13:05 +08:00
CONTRIBUTING.md initial commit 2020-03-10 12:13:05 +08:00
README.md README: update info on running renode 2020-03-12 13:33:37 +08:00

Xous Core

Core files for the Xous microkernel operating system.

This repository contains everything necessary to build the Xous kernel from source. It consists of the following projects:

  • kernel: core memory manager, irq manager, and syscallhandler
  • loader: initial loader used to start the kernel
  • tools: programs used to construct a final boot image
  • docs: documentation on various aspects of Xous
  • emulation: Renode scripts used to emulate Xous
  • xous-rs: userspace library

Generating an image

You can build all Xous packages by running:

$ rustup target add riscv32imac-unknown-none-elf
$ cargo build --target riscv32imac-unknown-none-elf
$ cd kernel
$ cargo build -p kernel --target riscv32imac-unknown-none-elf
$ cd ..
$ cd loader
$ cargo build -p loader --target riscv32imac-unknown-none-elf
$ cd ..

This will compile all runtime packages for riscv32imac-unknown-none-elf. Note that the kernel and loader must currently be built separately, due to the fact that they have custom linker scripts.

These need to be packaged into a loadable binary. You can generate such a binary by running the following:

$ cargo run -p tools --bin create-image -- \
        --csv emulation/csr.csv \
        --kernel target/riscv32imac-unknown-none-elf/debug/kernel \
        --init target/riscv32imac-unknown-none-elf/debug/shell \
        target/args.bin

$