Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rustでチョット気軽にセンサドライバ開発
Search
ryochack
June 17, 2019
Programming
3.5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rustでチョット気軽にセンサドライバ開発
ryochack
June 17, 2019
More Decks by ryochack
See All by ryochack
RustでPagerを作ってみた
ryochack
1
970
Other Decks in Programming
See All in Programming
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
220
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
550
5分で問診!Composer セキュリティ健康診断
codmoninc
0
960
「人を評価する AI」の設計と実装
ryoyanara
0
190
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
660
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
What's New in Android 2026
veronikapj
0
260
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
180
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
140
テーブルをDELETEした
yuzneri
0
140
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
220
Featured
See All Featured
A Soul's Torment
seathinner
6
3.4k
Color Theory Basics | Prateek | Gurzu
gurzu
0
410
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
610
エンジニアに許された特別な時間の終わり
watany
108
250k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
How to Ace a Technical Interview
jacobian
281
24k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
270
Making Projects Easy
brettharned
120
6.7k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
430
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
790
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
510
Transcript
Rustでチョット気軽にセンサドライバ開発 Rust×組み込み Interfaceオフ会@東京 2019-06-17 @ryochack
About Me @ryochack 組み込みソフトウェア開発が仕事 システムプログラミング目当てでRustを触り始めた 「いつまで僕らはC/C++を使い続けなければならないのか…」 2
この発表の構成要素 Rust FT232H, MPSSE bindgen embedded-hal 3
Rustでチョット気軽にセンサドライバ開発 4
センサのドライバ開発どうやっていますか? ※本発表での「センサ」は GPIO, I2C, SPI, UARTのI/Fを持つセンサを指します 5
おそらくだいたいこんな感じ? PCもしくはLinuxボード上で開発、Linuxボード上で実行 PC上で開発、MCUボード上で実行 6
こうできたら楽 PC上で開発、PC上で実行 7
できます 8
FTDI FT232H Adafruit FT232Hモジュール http://akizukidenshi.com/catalog/g/gM-08942/ 秋月電子通商 FT232HLモジュール http://akizukidenshi.com/catalog/g/gK-06503/ ※これ自体は全く新しいものではないです 9
MPSSE (Multi-Protocol Synchronous Serial Engine) USB経由でGPIO, SPI, I2Cを制御 これを使ってRustでのセンサのドライバ開発を楽にできないか? ➡
MPSSEの上でセンサのドライバ開発ができる環境を作ってみよう 10
既存のCのコード資産を活用したい 一からRustで実装し直すのは大変… 11
bindgen https://github.com/rust-lang/rust-bindgen CのヘッダファイルからRustのFFIバインディングを自動生成 MPSSEのOSS実装のlibmpsseからRustのコードを生成 https://code.google.com/archive/p/libmpsse/ 12
PCで開発したコードをターゲット上でも そのまま動かしたい MPSSE専用APIを抽象化したい 13
embedded-hal https://github.com/rust-embedded/embedded-hal RustのEmbedded devices Working Groupが策定 https://docs.rust-embedded.org/book/portability/ 今回は"Hardware Abstraction Layer
Impl"を実装 14
mpsse-rs https://github.com/ryochack/mpsse-rs Workspace構成 mpsse-sys : bindgen生成のunsafeなFFIバインディング mpsse : Rustらしくするwrapper mpsse-hal
: embedded-hal実装 ※いろいろ未完成… 15
Demo 16
余談 17
bindgen生成コードはケアする必要あり bindgenが出力するRustコードはunsafeかつ、直接的な呼び出しになっている ➡ 上位からRustらしく呼び出せるようにWrapする必要がある 18
bindgen wrap例 19
FT232Hは1つだけ接続する FT232Hが他にも接続されているとlibmpsseがデバイスを見つけられなくなる DigilentのAnalog Discovery 2などにもFT232Hが載っているため、波形計測は他のPCから… 20
オチ 既にmpsse-halと同じことをやってるcrateがあった…! https://github.com/geomatsi/ftdi-embedded-hal Rustで組込み系の何かを作る時には まずawesome-embedded-rustリポジトリを確認しましょう…! https://github.com/rust-embedded/awesome-embedded-rust 21
ありがとうございました This slide was generated by Marp 22