This relies on a trick I was not aware of previously, which is that transitive dependencies absorb the additive set of features enabled within a crate. see https://doc.rust-lang.org/cargo/reference/features.html#feature-unification for the full description. but basically by referring to the feature required in "aes" despite not being used in the crate but pulled in by aes-gcm-siv, i can ensure that the transitive dependency is in fact used. I think this was always there but previously I just didn't understand it correctly or didn't use it right when I tried to deploy it, but this time I think I got it right. |
||
|---|---|---|
| .. | ||
| bin | ||
| src | ||
| test | ||
| assemble.ps1 | ||
| assemble.sh | ||
| build.rs | ||
| Cargo.toml | ||
| link.x | ||
| README.md | ||
Xous Kernel
This contains the core kernel for Xous. It requires a stage 1 loader in order to start up, as it assumes the system is already running in Supervisor mode.
Building
To build the kernel, you will need a riscv32 target for Rust. Possible
targets include riscv32i-unknown-none-elf, riscv32imac-unknown-none-elf,
or riscv32imac-unknown-xous-elf.
- Decide what target you want. For simple, embedded systems this could
be
riscv32i-unknown-none-elf, and for more complex systems with compressed instructions you could useriscv32imac-unknown-none-elf. - Get Rust. Go to https://rustup.rs/ and follow its instructions.
- Install the proper toolchain:
rustup target add ${target_arch} - Build the kernel:
cargo build --release --target ${target_arch}
Using
To use the kernel, you must package it up into an arguments binary with
xous-tools.
Testing
TBD
Contribution Guidelines
Please see CONTRIBUTING for details on how to make a contribution.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide its terms.
License
Copyright © 2020
This project is licensed under the Apache License 2.0 LICENSE. For accurate information, please check individual files.