Might fly, might coo (coo).
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.cargo
src
util
.gitignore
Cargo.lock
Cargo.toml
Makefile
README.md

README.md

Setup

VM setup

VirtualBox is the preferred virtualizer, although any other virtualizer that can provided shared folders and port forwarding will also work. Docker might be considered as a replacement in the future.

Debian 9 Stretch is the distro of choice.

Prerequsites:

  • Insert Guest Additions CD image
# Initial dependencies
sudo apt-get install curl

# rustup
curl https://sh.rustup.rs -sSf > rustup.sh
chmod +x rustup.sh
./rustup.sh -y
rm rustup.sh

# For ARMv7 support
rustup target add armv7-unknown-linux-gnueabihf

# Add Raspberry Pi 3 arch
sudo dpkg --add-architecture armhf
sudo apt-get update

# Cross-compile dependencies
sudo apt-get install -y build-essential crossbuild-essential-armhf

# Guest additions build dependencies
sudo apt-get install -y module-assistant dkms

# Prepare system to build kernel modules
sudo m-a prepare

# Mount Guest additions CD and build
sudo mount /dev/sr0 /mnt
cd /mnt
sudo ./VBoxLinuxAdditions.run

# Allow current user to access shared folders
sudo adduser "$USER" vboxsf

# Reboot
sudo reboot

SSH keys are recommended.

Cross-compiling

The included Makefile cross-compiles the project on the Linux VM and transfers it onto a target system (ARMv6/ARMv7 hard-float based). Environment variables are used for configuration.

Environment Variables

  • TARGET_ADDRESS
    Address of machine that the compiled binary should be deployed on.
    Example: pigeon.local
  • TARGET_BIN_LOCATION
    Target location of the deployed binary.
    Example: '~'
  • TARGET_USER
    Username on target system.
    Example: philip
  • VM_PORT
    SSH port of cross-compile VM.
    Example: 2222
  • VM_PROJECT_LOCATION
    Shared project folder location.
    Example: /media/sf_9000d
  • VM_USER
    Username on cross-compile VM.
    Example: philip
  • CONFIGURATION
    Defaults to debug, set to release for optimized builds.
    Example: release
  • TARGET
    Defaults to armv7, set to arm for ARMv6 builds.
    Example: arm

Run python3 util/generate_env.sh to generate a .env file containing these variables. Use something like autoenv to automatically run this file.