Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
プログラミング言語 Rust によるベアメタル環境向け SW 開発の一側面
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
tarotene
November 21, 2024
Technology
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
プログラミング言語 Rust によるベアメタル環境向け SW 開発の一側面
tarotene
November 21, 2024
More Decks by tarotene
See All by tarotene
mikroBus HAT を用いた簡易ベアメタル開発
tarotene
0
700
Other Decks in Technology
See All in Technology
初対面のメンバーがチームを組み、Claude Codeでゼロからサービスをリリース
mkdev10
1
120
Datadog の学び方 - あるいは、オブザーバビリティを学ぶとは何か
mananyuki
1
540
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
190
Running Kotlin + Quarkus with Lambda
nealle
1
420
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
870
継続的なAIコスト最適化
bgpat
1
280
味覇で作るパスタが美味い - 20261001_yabaubuki.dev
livesense
PRO
0
120
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
370
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.5k
OR学会2026年秋期大会_機械学習と数理最適化の融合による、配合レシピ最適化システム開発事例
brainpadpr
0
130
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.5k
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
6
4.4k
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
300
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
490
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
590
Test your architecture with Archunit
thirion
2
2.4k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
470
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
450
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
GitHub's CSS Performance
jonrohan
1033
470k
Building AI with AI
inesmontani
PRO
1
1.3k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
530
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
Being A Developer After 40
akosma
92
590k
Transcript
Kentaro Sugimoto (tarotene) / 第18回オープンエッジデバイス研究会 / ソニークリエイティブラウンジ プログラミング言語 Rust による
ベアメタル環境向け SW 開発の一側面 Embedded Rust Driver Made Easy
自己紹介 • 氏名: 杉本 健太朗 (すぎもと けんたろう) • 所属: ArkEdge
Space Inc. • 2023/04 - • 人工衛星の姿勢制御系 FW • 前職: Photosynth Inc. • 2021/04(新卒)- 2023/03 • スマートロックの FW • あんまり制御っぽいことはしていない • 興味のあること • 高速通信向け物理層(Ethernet, USB, …) • 制御理論全般 GitHub LinkedIn Follow me!
• 要求: PoC 開発の高速化、小ロット生産、異種混合カスタマイズ、… • OSS の恩恵を最大限受けられる状態にある • デバイスドライバや各種 HW
依存コードが再利用可能 • 再利用を促進するエコシステム込みで考える • 不自由な開発環境(IDE)の強制を受けない • いつでも等価なビルドを plaintext で as as code できる • 自動テストやその他の検証周りが pluggable にできる 2024 年時点でのスナップショット 自分の考える「組込み開発」
• 要求: PoC 開発の高速化、小ロット生産、異種混合カスタマイズ、… • OSS の恩恵を最大限受けられる状態にある • デバイスドライバや各種 HW
依存コードが再利用可能 • 再利用を促進するエコシステム込みで考える • 不自由な開発環境(IDE)の強制を受けない • いつでも等価なビルドを plaintext で as as code できる • 自動テストやその他の検証周りが pluggable にできる 2024 年時点でのスナップショット 自分の考える「組込み開発」 HW スタートアップにありがちなこと
• 要求: PoC 開発の高速化、小ロット生産、異種混合カスタマイズ、… • OSS の恩恵を最大限受けられる状態にある • デバイスドライバや各種 HW
依存コードが再利用可能 • 再利用を促進するエコシステム込みで考える • 不自由な開発環境(IDE)の強制を受けない • いつでも等価なビルドを plaintext で as as code できる • 自動テストやその他の検証周りが pluggable にできる 2024 年時点でのスナップショット 自分の考える「組込み開発」 Embedded Rust の主戦場 HW スタートアップにありがちなこと
Q. 元々 C がメインの現場で 即座に Rust の導入は可能?
Q. 元々 C がメインの現場で 即座に Rust の導入は可能? A. 状況による
• target-triple によって Tier 1, Tier 2, Tier 3 に分類
• Tier 1: 完全なビルド + 完全な動作 を担保 • 例: aarch64-unknown-linux-gnu, x86_64-apple-darwin • Tier 2: 完全なビルド + 一部の動作 を担保 • 例: armv7-unknown-linux-gnueabihf, thumbv7em-none-eabihf • Tier 3: 一部のビルド + 一部の動作 を担保 • 例: mipsel-sony-psp • Host tools と言って開発環境としての利用の担保もある • 要するに Tier 3 までの何かしらに引っかかる CPU の選定が必要! The rustc book / Platform support より Rust は元来特定 CPU 向け
Q. 結局、タイミングクリティカルな製品向けの(ベア メタルな)動作環境として、SW エンジニアの開発者 体験だけを考えるとどうなる…?
Q. 結局、タイミングクリティカルな製品向けの(ベア メタルな)動作環境として、SW エンジニアの開発者 体験だけを考えるとどうなる…? A. 有効な解の一つは Arm Cortex-M
• 要求: PoC 開発の高速化、小ロット生産、異種混合カスタマイズ、… • OSS の恩恵を最大限受けられる状態にある • デバイスドライバや各種 HW
依存コードが再利用可能 • 再利用を促進するエコシステム込みで考える • 不自由な開発環境(IDE)の強制を受けない • いつでも等価なビルドを plaintext で as as code できる • 自動テストやその他の検証周りが pluggable にできる 2024 年時点でのスナップショット 自分の考える「組込み開発」
• 要求: PoC 開発の高速化、小ロット生産、異種混合カスタマイズ、… • OSS の恩恵を最大限受けられる状態にある • デバイスドライバや各種 HW
依存コードが再利用可能 • 再利用を促進するエコシステム込みで考える • 不自由な開発環境(IDE)の強制を受けない • いつでも等価なビルドを plaintext で as as code できる • 自動テストやその他の検証周りが pluggable にできる 2024 年時点でのスナップショット 自分の考える「組込み開発」 パッケージマネージャ兼プロジェクトマネージャ Cargo の力 Crate システムによる SW のモジュール化促進
• 要求: PoC 開発の高速化、小ロット生産、異種混合カスタマイズ、… • OSS の恩恵を最大限受けられる状態にある • デバイスドライバや各種 HW
依存コードが再利用可能 • 再利用を促進するエコシステム込みで考える • 不自由な開発環境(IDE)の強制を受けない • いつでも等価なビルドを plaintext で as as code できる • 自動テストやその他の検証周りが pluggable にできる 2024 年時点でのスナップショット 自分の考える「組込み開発」
• 要求: PoC 開発の高速化、小ロット生産、異種混合カスタマイズ、… • OSS の恩恵を最大限受けられる状態にある • デバイスドライバや各種 HW
依存コードが再利用可能 • 再利用を促進するエコシステム込みで考える • 不自由な開発環境(IDE)の強制を受けない • いつでも等価なビルドを plaintext で as as code できる • 自動テストやその他の検証周りが pluggable にできる 2024 年時点でのスナップショット 自分の考える「組込み開発」 コマンドラインツール Cargo の力 ビルドやテストもその場でできる(コンテキストスイッチ軽減にも寄与) 任意のテキストエディタ、IDE を使用可能 特にロジックを注入する仕組みに強い
• HW の用意 • ターゲット: STS32-DIS-10KS • I2C の温度センサ •
Thermo 30 Click (MIKROE) という評価ボードを通して利用 • 開発用基板: STM32F4 Discovery Board • その他: STM32F4 Discovery Shield (MIKROE) • SW の用意 • 実装(ビルド・サンプルアプリの書き込みや実行など) • テスト(target-tests という sub-directory crate を用意) テーマ: 再利用可能なデバイスドライバを書く お品書き
HW の用意: STM32F4 Discovery Shieldの紹介
HW の用意 STM32F4 Discovery Shield • STM32F4 Discovery Board を挿して使う
• mikroBUS が 4 つ搭載 • MIKROE のソケット規格 • センサ・アクチュエータ・ CPU の評価基板などは基 本これ • cf. seeed の xiao / grove
HW の用意 STM32F4 Discovery Shield • STM32F4 Discovery Board を挿して使う
• mikroBUS が 4 つ搭載 • MIKROE のソケット規格 • センサ・アクチュエータ・ CPU の評価基板などは基 本これ • cf. seeed の xiao / grove
HW の用意 STM32F4 Discovery Shield • STM32F4 Discovery Board を挿
して使う • mikroBUS が 4 つ搭載 • MIKROE のソケット規格 • センサ・アクチュエータ・CPU の評価基板などは基本これ • cf. seeed の xiao / grove • Thermo 30 Click で検証する
SW の開発
• ここから疑似ライブコーディングをするので、少し画面を変えます. • やること • cargo init --lib • .cargo/config.toml
の編集 • Patch: stm32f3xx.yaml の追加 • Cargo.toml の編集 • dependencies • bitfield-struct • embedded-hal • dev-dependencies(基本コピペ) • cortex-m{,rt} • defmt{,-rtt} • panic-probe • stm32f3xx-hal • lib.rs の編集(コピペ) • examples/hello.rs のテスト • 最後に target-tests という空の crate を掘る プロジェクトの立ち上げ SW の開発
おまけ
Thermo 30 Click STS-32-DIS-10KS • ソースコードはこちらに: https://github.com/tarotene/ sts32-33-dis • 使用したライブラリなど
• bitfield_struct • レジスタマップの as a code にはよく利用する • embedded-hal (v1.x.y) • マルチドロップ環境でバス共有 の仕組みが比較的良い感じ
Thermo 30 Click STS-32-DIS-10KS (Sensiron の Datasheet STS3x-DIS より)
閑話休題 / Tips 着実にドライバ開発を進める方法 • デバイス(センサ・アクチュエータ)が持つ性 質の volatility/ambiguity に着目して順にやる •
恒久的に不変: シリアルナンバーなど • 一定の論理制約のもとで不変: 設定値など • 不変性を保証できない: 測定値など • Prinf 文デバッグ(大粒度極限)とデバッガに よる step 実行(小粒度極限)の間で上手く開 発者体験を調節する • シリアル端末の埋込み • rust-embedded-community/ menu • funbiscuit/embedded-cli-rs