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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Katsuhiko Kageyama
December 04, 2025
Technology
49
1
Share
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
350
M5UnifiedとPicoRubyで楽しむM5シリーズ
kishima
0
480
Rubyでmicro-ROS!
kishima
0
130
mruby(PicoRuby)で ファミコン音楽を奏でる2
kishima
1
170
mruby(PicoRuby)で ファミコン音楽を奏でる
kishima
2
740
PicoRuby/R2P2で自分だけのコンピュータを作ろう
kishima
1
470
mrubyと micro-ROSが繋ぐロボットの世界
kishima
3
1k
わたしのRubyKaigi Effect
kishima
2
240
思い出の技術書 F-BASICの世界
kishima
0
49
Other Decks in Technology
See All in Technology
CARTA HOLDINGS エンジニア向け 採用ピッチ資料 / CARTA-GUIDE-for-Engineers
carta_engineering
0
47k
AI とサービス・デザイン / AI and Service Design
ks91
PRO
0
160
その英語学習、AWSで代替できませんか?
suzutatsu
1
230
業務に残された「良くない型」で考える「TypeScriptの難しさ」
sajikix
3
2k
「使われるデータ基盤」を目指してデータアナリストとワークショップをやった話
jackojacko_
2
850
権限管理設計を完全に理解した
rsugi
1
200
論文紹介:Pixal3D (SIGGRAPH 2026)
tenten0727
0
720
Generative UI × A2UI で AI エージェントを作った話 AI-DLC も使ってみた!
kmiya84377
1
110
管理アカウント単一運用からAWS Organizationsに移行するの大変で滅
hiramax
0
200
[みん強]AIの価値を最大化するデータ基盤戦略:Self-Service型Data Meshへの転換とAgentic AI Meshに向けた取り組み with Snowflake他
y_matsubara
1
180
GCASアップデート(202603-202605)
techniczna
0
280
ソフトウェアサプライチェーン攻撃対策として今からサクッとできること
flatt_security
2
130
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
Practical Orchestrator
shlominoach
191
11k
GraphQLとの向き合い方2022年版
quramy
50
15k
RailsConf 2023
tenderlove
30
1.4k
Claude Code のすすめ
schroneko
67
220k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
700
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
400
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
How to Think Like a Performance Engineer
csswizardry
28
2.6k
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