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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
960
Other Decks in Programming
See All in Programming
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
320
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
160
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.8k
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
110
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
220
Lessons from Spec-Driven Development
simas
PRO
0
230
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
620
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
150
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.6k
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.8k
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
140
はてなアカウント基盤 State of the Union
cockscomb
1
1.2k
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
280
Chasing Engaging Ingredients in Design
codingconduct
0
230
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
440
From π to Pie charts
rasagy
0
220
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
270
The untapped power of vector embeddings
frankvandijk
2
1.8k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
210
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
The Invisible Side of Design
smashingmag
301
52k
How to Talk to Developers About Accessibility
jct
2
270
We Have a Design System, Now What?
morganepeng
55
8.2k
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