Programming The Arduino Due in Rust
-
Upload
kellogh -
Category
Technology
-
view
124 -
download
3
description
Transcript of Programming The Arduino Due in Rust
![Page 1: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/1.jpg)
Rust on Arduino Due
Tim Kellogg@kellogh
![Page 2: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/2.jpg)
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
![Page 3: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/3.jpg)
![Page 4: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/4.jpg)
• 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)
![Page 5: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/5.jpg)
![Page 6: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/6.jpg)
CPU Power?
Battery Life?
Quality?
![Page 7: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/7.jpg)
Ariane 5
https://www.youtube.com/watch?v=kYUrqdUyEpI
![Page 8: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/8.jpg)
"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"
![Page 9: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/9.jpg)
• Buffer overflow• Unsafe casting• Race conditions between tasks
![Page 10: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/10.jpg)
![Page 12: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/12.jpg)
Remaining Issues• Heap allocations• Interrupts as Tasks• Non-trivial language features
![Page 13: Programming The Arduino Due in Rust](https://reader033.fdocuments.us/reader033/viewer/2022061300/54c845974a7959cb1c8b4579/html5/thumbnails/13.jpg)
Book: Practical Internet of Things
@kellogh