Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rustでチョット気軽にセンサドライバ開発
Search
ryochack
June 17, 2019
Programming
2
3.4k
Rustでチョット気軽にセンサドライバ開発
ryochack
June 17, 2019
Tweet
Share
More Decks by ryochack
See All by ryochack
RustでPagerを作ってみた
ryochack
1
930
Other Decks in Programming
See All in Programming
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
8
20k
FluorTracer / RayTracingCamp11
kugimasa
0
220
251126 TestState APIってなんだっけ?Step Functionsテストどう変わる?
east_takumi
0
310
JETLS.jl ─ A New Language Server for Julia
abap34
1
190
How Software Deployment tools have changed in the past 20 years
geshan
0
28k
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
26
22k
愛される翻訳の秘訣
kishikawakatsumi
1
310
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
1
1k
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
2
650
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
360
ハイパーメディア駆動アプリケーションとIslandアーキテクチャ: htmxによるWebアプリケーション開発と動的UIの局所的適用
nowaki28
0
390
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
590
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Faster Mobile Websites
deanohume
310
31k
Being A Developer After 40
akosma
91
590k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Building Applications with DynamoDB
mza
96
6.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
970
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
[SF Ruby Conf 2025] Rails X
palkan
0
490
What's in a price? How to price your products and services
michaelherold
246
12k
Music & Morning Musume
bryan
46
7k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
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