Programming The Arduino Due in Rust

Preview:

DESCRIPTION

Slides from my talk at GlueCon '14 about programming an Arduino Due in Rust, and about using Rust for embedded or IoT applications.

Citation preview

Rust on Arduino Due

Tim Kellogg@kellogh

Source: https://github.com/tkellogg/dueboot

Getting started on OSX:• http://arduino.cc/en/Guide/ArduinoDue• brew install rust• brew install llvm --all-targets• edit Rakefile of dueboot repository

• As fast as C/C++• No manual memory management, no GC• Functional goodies• Built-in unit testing• Polymorphism (but no inheritance)• Compiles to ARM (Android, Raspberry Pi, Due)

CPU Power?

Battery Life?

Quality?

Ariane 5

https://www.youtube.com/watch?v=kYUrqdUyEpI

"We've demonstrated how as little as a single bit flip can cause the driver to lose control of the engine speed in real cars due to software malfunction that is not reliably detected by any fail-safe"

• Buffer overflow• Unsafe casting• Race conditions between tasks

C binding generator:https://github.com/crabtw/rust-bindgen

Remaining Issues• Heap allocations• Interrupts as Tasks• Non-trivial language features

Book: Practical Internet of Things

@kellogh

Recommended