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.4k
Rustでチョット気軽にセンサドライバ開発
ryochack
June 17, 2019
Tweet
Share
More Decks by ryochack
See All by ryochack
RustでPagerを作ってみた
ryochack
1
910
Other Decks in Programming
See All in Programming
生成AIで日々のエラー調査を進めたい
yuyaabo
0
590
GraphRAGの仕組みまるわかり
tosuri13
7
400
Webからモバイルへ Vue.js × Capacitor 活用事例
naokihaba
0
700
イベントストーミングから始めるドメイン駆動設計
jgeem
4
850
カクヨムAndroidアプリのリブート
numeroanddev
0
430
技術懸念に立ち向かい 法改正を穏便に乗り切った話
pop_cashew
0
1.4k
都市をデータで見るってこういうこと PLATEAU属性情報入門
nokonoko1203
1
450
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
3
280
Datadog RUM 本番導入までの道
shinter61
1
290
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
770
WindowInsetsだってテストしたい
ryunen344
1
180
Passkeys for Java Developers
ynojima
3
860
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Into the Great Unknown - MozCon
thekraken
39
1.8k
Optimizing for Happiness
mojombo
379
70k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.9k
A designer walks into a library…
pauljervisheath
206
24k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
480
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