forked from scratchfoundation/scratch-gui
-
-
Notifications
You must be signed in to change notification settings - Fork 16
Open
Description
Smalrubot S1用ファームウェア転送機能の実装
概要
Smalrubot S1はArduino互換マイコンボードで、Optibootブートローダーがプリインストールされています。現在、Smalrubot S1拡張の接続時に、シリアルポートは開いているが適切な応答がない場合、接続に失敗します。この問題を解決するため、ファームウェア転送機能を実装し、接続失敗時にファームウェアを自動転送できるようにします。
参考実装
既存のmicro:bit用ファームウェア転送機能(src/lib/microbit-update.js)を参考に実装します。
技術調査結果
Optibootプロトコル
- プロトコル: STK500v1プロトコルを使用
- 転送方式: シリアル通信経由でのファームウェア転送
- ページサイズ: 最大128バイトずつ転送
- 通信フォーマット:
<Command_Code> <Data (if any)> <CRC_EOP>
主要コマンド
STK_GET_SYNC(0x30) - 同期確立STK_ENTER_PROGMODE(0x50) - プログラミングモード開始STK_LOAD_ADDRESS(0x55) - アドレス設定STK_PROG_PAGE(0x64) - ページプログラム
JavaScriptライブラリ
以下のライブラリが利用可能です:
jacobrosenthal/js-stk500v1- JavaScript STK500v1実装arduino/js-stk500v1- Arduino公式フォーク- WebSerial API対応
実装計画
1. scratch-vm拡張への転送機能追加
ファイル: gui/scratch-vm/src/extensions/scratch3_smalrubot_s1/index.js
- STK500v1プロトコルの実装
- WebSerial API経由でのファームウェア転送機能
uploadFirmware(hexData)メソッドの追加
2. GUI接続モーダルの拡張
ファイル: gui/smalruby3-gui/src/components/connection-modal/connection-modal.jsx
接続失敗時のフローを以下に変更:
- シリアルポート接続成功
- Smalrubot S1との通信確認失敗
- ファームウェア転送確認ダイアログ表示
- ユーザーが「転送する」を選択
- ファームウェア転送実行
- 転送完了後、再接続試行
3. エラーステップコンポーネントの拡張
ファイル: gui/smalruby3-gui/src/components/connection-modal/error-step.jsx
- ファームウェア転送ボタンの追加
- 転送進捗表示の実装
4. ファームウェアファイルの管理
一時ファイル: /Users/kouji/work/smalruby/smalruby3-develop/tmp/sr_studu.ino.hex
- HEXファイルの読み込み機能
- ファームウェアデータの前処理
実装タスク
Phase 1: STK500v1プロトコル実装
-
js-stk500v1ライブラリの調査・統合 - WebSerial API経由でのSTK500通信実装
- HEXファイル解析・転送ロジック実装
Phase 2: scratch-vm拡張
-
Scratch3SmalrubotS1BlocksにuploadFirmwareメソッド追加 - 転送進捗イベントの実装
- エラーハンドリングの実装
Phase 3: GUI実装
- 接続モーダルに転送フェーズ追加
- ファームウェア転送確認ダイアログ
- 転送進捗表示UI
- エラーステップの拡張
Phase 4: 統合テスト
- 転送機能の動作確認
- エラーケースのテスト
- ユーザビリティテスト
技術的考慮事項
セキュリティ
- ファームウェアファイルの検証
- 転送前のユーザー確認必須
パフォーマンス
- 転送進捗の適切な表示
- タイムアウト処理の実装
互換性
- 既存のSmalrubot S1との互換性維持
- WebSerial API対応ブラウザでの動作確保
関連ファイル
gui/scratch-vm/src/extensions/scratch3_smalrubot_s1/index.jsgui/smalruby3-gui/src/components/connection-modal/connection-modal.jsxgui/smalruby3-gui/src/components/connection-modal/error-step.jsxgui/smalruby3-gui/src/lib/microbit-update.js(参考実装)
受け入れ基準
- 接続失敗時にファームウェア転送確認ダイアログが表示される
- ファームウェア転送が正常に完了する
- 転送後にSmalrubot S1との接続が成功する
- 転送中の進捗が適切に表示される
- エラー発生時に適切なメッセージが表示される
🤖 Generated with Claude Code
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Backlog