Xous SDK (pinned for betrusted transpilation)
Find a file
Sean Cross 73ad16d367 loader: fix loading when init spans pages
Due to an issue withow MiniELF files were loaded, one page was mapped to
two addresses rather than having two adjacent addresses mapped.  This
occurred when a small section spanned two pages.

This has now been corrected, and an additional test binary will be added
to demonstrate the issue.

Signed-off-by: Sean Cross <sean@xobs.io>
2020-04-06 15:29:37 +08:00
docs kernel: properly share pages between processes 2020-04-03 12:28:44 +08:00
emulation messaging: first message passing example 2020-03-30 16:07:58 +08:00
examples test mutable borrows 2020-04-03 14:24:02 +08:00
kernel kernel: remove old code at top of syscall::handle 2020-04-06 10:44:41 +08:00
loader loader: fix loading when init spans pages 2020-04-06 15:29:37 +08:00
tools tools: generate byte addresses for mini elf files 2020-03-12 15:29:26 +08:00
xous-rs kernel: return context on failure 2020-04-06 10:43:26 +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

$