4 releases
0.2.1 | Nov 7, 2019 |
---|---|
0.2.0 | Nov 3, 2019 |
0.1.1 | Apr 9, 2019 |
0.1.0 | Apr 9, 2019 |
#1531 in Hardware support
105KB
2.5K
SLoC
picontrol-rs
Rust version of the PiControl driver for the Revolution Pi.
An example: pitestrs
A command line tool to control the Pi Control process image is in the file pitestrs.rs.
The executable can be cross-compiled by launching ./build_pi.sh
.
See below how to enable cross compilation.
How to generate the Rust FFI bindings to C
-
Use bindgen binary directly:
TARGET=armv7-unknown-linux-gnueabihf bindgen -o src/picontrol.rs kunbus/interface/piControl/wrapper.h -- -I`pwd`/kunbus/interface/piControl
-
Use bindgen with a build.rs file
Rust cross-compilation
Cross project with Docker
See: https://github.com/rust-embedded/cross
Same operating system
See: https://medium.com/@wizofe/cross-compiling-rust-for-arm-e-g-raspberry-pi-using-any-os-11711ebfc52b
source $HOME/.cargo/env
sudo apt-get install -qq gcc-arm-linux-gnueabihf
rustup target add armv7-unknown-linux-gnueabihf
Configure Cargo for cross-compilation
mkdir -p ~/.cargo
# > should not be included when pasting
cat >> ~/.cargo/config << EOF
[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"
EOF
# you may need to install this on Ubuntu 18.06
sudo apt-get install g++-multilib libc6-dev-i386
sudo apt-get install -qq gcc-arm-linux-gnueabihf
You can now compile:
cargo build --target=armv7-unknown-linux-gnueabihf
Dependencies
~3.5MB
~60K SLoC