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
2
3.3k
Rustでチョット気軽にセンサドライバ開発
ryochack
June 17, 2019
Tweet
Share
More Decks by ryochack
See All by ryochack
RustでPagerを作ってみた
ryochack
1
840
Other Decks in Programming
See All in Programming
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
770
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
190
StarlingMonkeyを触ってみた話 - 2024冬
syumai
3
270
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
1
540
선언형 UI에서의 상태관리
l2hyunwoo
0
160
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
2
230
数十万行のプロジェクトを Scala 2から3に完全移行した
xuwei_k
0
270
コンテナをたくさん詰め込んだシステムとランタイムの変化
makihiro
1
130
良いユニットテストを書こう
mototakatsu
7
2.2k
17年周年のWebアプリケーションにTanStack Queryを導入する / Implementing TanStack Query in a 17th Anniversary Web Application
saitolume
0
250
テストコード文化を0から作り、変化し続けた組織
kazatohiei
2
1.5k
php-conference-japan-2024
tasuku43
0
270
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
Designing for Performance
lara
604
68k
Gamification - CAS2011
davidbonilla
80
5.1k
Bash Introduction
62gerente
608
210k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Fireside Chat
paigeccino
34
3.1k
Scaling GitHub
holman
458
140k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
A better future with KSS
kneath
238
17k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
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