Xous SDK (pinned for betrusted transpilation)
Find a file
Sean Cross beea92ddab kernel: fix context id assignment
previously, we were assigning the trap context as a valid ID.  This is
not valid, and causes many problems.

Signed-off-by: Sean Cross <sean@xobs.io>
2020-03-27 15:58:59 +08:00
docs arguments: use byte-sized granularity for IniE 2020-03-12 15:28:28 +08:00
emulation emulation: add powershell script to build renode 2020-03-18 14:40:23 +08:00
examples examples: the beginnings of message passing and receiving 2020-03-19 17:26:16 +08:00
kernel kernel: fix context id assignment 2020-03-27 15:58:59 +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 context id and context error 2020-03-27 13:32:41 +08:00
.gitattributes
.gitignore
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
CONTRIBUTING.md
README.md

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

$