Welcome to Rafiki’s documentation!¶
Rafiki is Rust on top of Simba.
Project homepage: https://github.com/eerimoq/rafiki
Getting Started¶
Note
Only the Arduino Due board is supported!
Installation¶
Install Rust. Change the
default toolchain
tonightly
. Copydefault host triple
andmodify PATH variable
from the printedCurrent installtion options
.curl https://sh.rustup.rs -sSf | sh
Source the environment setup file.
source $HOME/.cargo/env
Install bindgen and download the Rust sources.
cargo install bindgen rustup component add rust-src
Recursively clone the Rafiki repository.
git clone --recursive https://github.com/eerimoq/rafiki
Build and run the hello world example.
cd rafiki source setup.sh cd examples/hello_world make -s -j4 BOARD=arduino_due run
User Guide¶
Contents:
Hello World application¶
Let’s start with the Rafiki “Hello World” application. It examplifies what an application is and how to build and run it.
It consists of two files; main.rs
and Makefile
.
main.rs¶
main.rs defines the
application entry function main()
.
#[macro_use] extern crate rafiki;
use rafiki::kernel::sys;
#[no_mangle]
pub fn main(_: isize, _: *const *const u8) -> isize
{
sys::start();
println!("Hello World!");
0
}
Makefile¶
Makefile contains build configuration of the application.
NAME = hello_world
BOARD ?= linux
RAFIKI_ROOT = ../..
include $(RAFIKI_ROOT)/make/app.mk
Build and run¶
Cross-compile, link and then run on an Arduino Due:
$ cd examples/hello_world
$ make -s BOARD=arduino_due run
<build system output>
Hello world!
$
Examples¶
Below is a list of simple examples that are useful to understand the basics of Rafiki.
There are a lot more examples and unit tests on Github that shows how to use most of the Rafiki modules.
Hello World¶
About¶
This application prints “Hello World!” to standard output.
Source code¶
#![no_std]
/**
* @section License
*
* The MIT License (MIT)
*
* Copyright (c) 2014-2017, Erik Moqvist
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use, copy,
* modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* This file is part of the Rafiki project.
*/
#[macro_use] extern crate rafiki;
use rafiki::kernel::sys;
#[no_mangle]
pub fn main(_: isize, _: *const *const u8) -> isize
{
sys::start();
println!("Hello World!");
0
}
The source code can also be found on Github in the examples/hello_world folder.
Build and run¶
Build and run the application on an Arduino Due.
$ cd examples/hello_world
$ make -s BOARD=arduino_due run
...
Hello world!
$
License¶
The Rafiki project as a whole is licensed under the following MIT license:
The MIT License (MIT)
Copyright (c) 2017, Erik Moqvist
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.