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
PCとPicoRuby-ESP32間でシリアルファイル転送
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Katsuhiko Kageyama
December 04, 2025
Technology
51
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PCとPicoRuby-ESP32間でシリアルファイル転送
Katsuhiko Kageyama
December 04, 2025
More Decks by Katsuhiko Kageyama
See All by Katsuhiko Kageyama
PicoRuby as a Multi-VM Operating System
kishima
1
430
M5UnifiedとPicoRubyで楽しむM5シリーズ
kishima
0
530
Rubyでmicro-ROS!
kishima
0
160
mruby(PicoRuby)で ファミコン音楽を奏でる2
kishima
1
200
mruby(PicoRuby)で ファミコン音楽を奏でる
kishima
2
780
PicoRuby/R2P2で自分だけのコンピュータを作ろう
kishima
1
600
mrubyと micro-ROSが繋ぐロボットの世界
kishima
3
1.1k
わたしのRubyKaigi Effect
kishima
2
260
思い出の技術書 F-BASICの世界
kishima
0
52
Other Decks in Technology
See All in Technology
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
270
モダンフロントエンド 開発研修
recruitengineers
PRO
3
560
JavaScript 研修 (2026)
recruitengineers
PRO
1
460
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
200
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
150
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
1
200
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
150
クラウドセキュリティ入門 ~安全なクラウド利用のための基礎知識~
lhazy
12
8.4k
20260608_Codexの可能性_ノンプログラマー向け_大城追記
doradora09
PRO
0
780
事業価値と Engineering 2026年度版
recruitengineers
PRO
44
22k
第3回しろおびセキュリティスポンサーセッション
log0417
0
160
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Are puppies a ranking factor?
jonoalderson
1
3.8k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
420
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
260
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
410
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
So, you think you're a good person
axbom
PRO
2
2.1k
Transcript
PCとPicoRuby-ESP32間で シリアルファイル転送 @kishima
自己紹介 @kishima 組み込み系エンジニア マネージャ業 mruby好き 電子工作好き 最近はFamily mruby OSと いう趣味プロジェクトにご熱
心
ふつうのマイコンソフト開発 1. 実行したいアプリケーションをビルドする a. マイコンのOSも含めた一つのバイナリが生成される 2. ビルドした実行バイナリをシリアル通信やデバッガを使ってマイコンの FROM へ転送 a.
ファイルシステムがないので、マイコンの OSも含めてまるごと転送 3. マイコンをリセットして、アプリを起動 4. 動作確認 5. 1に戻る
PicoRubyのすごいところ FilesystemとMSC実装あり USBでつなぐと、USBスト レージとして見える Raspi Pico
ESP32版だとMSCできない USBストレージとして見せ ることができない ESP32 device
MSCが使えないなら CDCを使えばいいじゃない ESP32 device
独自のプロトコル 以下のポリシー • PCからのコマンドに対して、ESP32側が応答する • パケットは、CRC32でエラーチェック ◦ USBシリアル通信は簡単に化けるので必須 • パケット区切りはCOBSを使う
• 長いデータはチャンクで送る • チャンク単位で再送する(未実装) • ファイル操作系コマンドはJSONで表現
パケット形式 LENGTHはJSONかBinaryDataの長さを示しています では、パケットの全長はどうやって判定するのか?
COBS(Consistent Overhead Byte Stuffing) 0x00 を区切りバイトとして、扱えるようになる仕組み 0x00 が本文中に現れたら、その位置までのバイト長を OverheadByteとして挿入する 読み出すとき、0x00が来るまで読み続ければ良いので、実装が楽になる
オーバヘッドも少ない 0x00がロストしても、0x00を待ち続ければ復帰できる (パケット長を読んでから、 Bodyを読む形にした場合、パケット長が化けると大変) https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing
CMD
“PUT” command JSONの後に実際のバイナリデータが続く offで、チャンクが書き込まれるべきファイル位置を指定 0バイトデータ送信で、チャンク終わりを表現
“LS” command: Response
実際にデモ
ファイル転送(ローカルの test.rbを転送)
結果
制約 USBシリアル通信を占有するので、PC側のターミナルとのシリアル通信と競合する 片方しか使えないので、モードを切り替える仕組みが必要 たとえば・・・ 起動時に所定のボタンが押されていればファイル転送モードに入る
今後の課題 デスクトップのファイルエクスプローラーからも見えるようにしたい FUSEを使えばいけそう Filesystem on Userspace https://ja.wikipedia.org/wiki/Filesystem_in_Userspace