Rust userland library for Tock
Generally this library was tested with Tock Release 2.1.1.
The library should work on all Tock boards, but currently apps must be compiled
for the flash and RAM address they are executed at. See Fix
relocation for more details. You
may either compile a process binary especially for your board and use only a
single application written in rust at a time, or use the make tab
target that
builds examples for a series of likely useful flash and RAM addresses.
-
Ensure you have rustup installed.
-
Clone the repository:
git clone --recursive https://github.com/tock/libtock-rs cd libtock-rs
-
Install the dependencies:
make setup
-
Use
make
to build examplesmake nrf52 EXAMPLE=console # Builds the console example for the nrf52
The easiest way to start using libtock-rs is adding an example to the
examples/
folder. We recommend starting by copying the console
example, as
it is a simple example that shows you how to perform normal debug prints.
To build your example for your board you can use
make <platform> EXAMPLE=<example>
An example can be flashed to your board after the build process by running:
make flash-<platform> EXAMPLE=<example>
This script does the following steps for you:
- cross-compile your program
- create a TAB (tock application bundle)
- if you have a J-Link compatible board connected: flash this TAB to your board (using tockloader)
libtock-rs can be built to be compatible with the rust-embedded
embedded_hal by
including the following when running make
FEATURES=rust_embedded
If using libtock-rs or a sub-crate as a cargo dependency the rust_embedded
can also be enabled via Cargo.
To build your example for a variety of boards you can use
make tab EXAMPLE=<example>
To install the tab use tockloader
tockloader install target/tab/<example.tab>
Tockloader will determine which compiled version with the correct flash and RAM addresses to use.
libtock-rs is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Submodules, as well as the code in the ufmt
directory, have their own licenses.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
The contribution guidelines can be found here: contribution guidelines