mirror of
https://github.com/saymrwulf/xous-core.git
synced 2026-11-10 06:36:32 +00:00
Xous SDK (pinned for betrusted transpilation)
Due to an initial misunderstanding of how the RISC-V is architected, contexts were going to be an emergent property of the kernel. However, after further consideration, contexts must now be baked into the kernel. Switching between contexts can be handled by the scheduler, but the kernel must keep track of processor registers. Keep track of context IDs and ensure they are sane. With this patch, interrupts work, as does basic context switching. Signed-off-by: Sean Cross <sean@xobs.io> |
||
|---|---|---|
| docs | ||
| emulation | ||
| examples | ||
| kernel | ||
| loader | ||
| tools | ||
| xous-rs | ||
| .gitattributes | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| 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
$