eject-io @ kernel/vm
TRANSCRIPT
次世代 I/Oインターフェイスの提案
2014/05/25 カーネル/VM探検隊 Takeshi HASEGAWA (Twitter: @hasegaw) v 本資料中の解説内容は、所属組織における 統一的な見解を示すものではありません。
プロフィール 長谷川 猛 (HASEGAWA Takeshi) twitter: @hasegaw 主にLinuxや仮想化技術を得意とする雑食系SE Xen/KVMを調査、FreeBSD virtioを実装等 興味範囲:仮想化、ストレージ もんはんしようず ゚+.(・ω・)゚+.゚
2
おもな著書・寄稿
3
Webサイトの記事など
エンジニアなら知っておきたい仮想マシンのしくみ http://gihyo.jp/dev/serial/01/vm_work/
4
2000年頃に私が体験した出来事
5
今度、部活紹介でバトン部がパフォーマンスをします。 放送委員会で照明のお手伝いをしたいと思います
(。・ω・。)担当教諭
パソコンでスポットライトをチカチカ点けようか(笑) (`・ω・´ )副委員長
いいね(笑)(人´ω`)委員長
2000年頃に私が体験した出来事
6
副委員長、スポットライト制御用の基盤ができたよ♡(人´ω`)委員長
え?? …あれ、マジなの?(;゚д゚;)副委員長
倉庫で見つけたパソコン (PC-9801VM2)
体育館内設備
スポットライト制御(I/O基盤の構成イメージ)
7
セントロニクス仕様(IEEE1284)
電球
リレー
リレー
電球
リレー
リレー
電球
リレー
リレー
電球
リレー
リレー
電球
リレー
リレー
電球
リレー
リレー
電球
リレー
リレー
電球
リレー
リレー
コントロール
8
out 0x40, 0xB2(1011 0010)
電球
電球
電球
電球
電球
電球
電球
電球
out 0x40, 0xA5(1010 0101)
電球
電球
電球
電球
電球
電球
電球
電球
out 0x40, 0xFF(1111 11111)
電球
電球
電球
電球
電球
電球
電球
電球
out 0x40, 0x00(0000 0000)
電球
電球
電球
電球
電球
電球
電球
電球
ハードウェア
コンピュータ
スポットライト制御システムのデザイン
9
マルチメディアタイマ
セントロニクス仕様インターフェイス
キーボード
スポットライト制御ドライバ(アセンブラでDOS用TSRとして開発)
スポットライト制御システム本体(イントロ、Aメロ、Bメロ等ごとの点灯パターンデータを持つ)
タイマ割込
ライト制御信号
ユーザ操作
相対時間
ライトパターン
手作りI/Oについて今と昔の比較
10
昔 今
これまでのI/O
• I/Oポート (8ビット)、割り込み、MMIO o コンピュータの複雑化にともない簡単なポートI/Oがしづらくなった
• Serial, GPIO
• Eject o 簡単
11
12
13
14 http://www.raspberrypi.org/archives/4824
どうしてEjectなのか • 電子機器部品の知識なくモノを動かせる
• ハンダ付け不要
• お子様ですら “DIY” 可能
• いまどき CD-ROM ドライブのドライバがないOSは少ない
• Ejectコマンドは比較的ポータブル
15
Ejectの課題 • ジャンクCD-ROMは安く手に入る(100円~)が、
しかしシステムへの接続にはインターフェイスが必要
E.g.) USB-SATA アダプタ
• 電力供給。5インチのCD-ROMドライブは12V必要
12Vのバッテリをヘルメット上に載せるのは首に負担がかかる
• そもそもCD-ROMドライブはヘルメットの上に載せるには重すぎる
16
そして新しい eject の検討へ • CD-ROMをIOインターフェイスとして使うなんて!
• まるでHDDのディスク部分をそのままフラッシュに置き換えた
「SSD」的な発想じゃないか!
• これでLEDつけたりリモコンのボタン押すならそもそも
ON/OFFできるI/Oインターフェイスがあればいいよね
• よし作ろう
17
組み立てた
18
19
Eject-io
従来の Eject と Eject-io の比較 従来の Eject Eject-io
実装 CD-ROMドライブ PIC ホストからの見え方 USB Mass Storage USB Mass Storage 制御方法 ioctl, ejectコマンド等 ioctl, ejectコマンド等 EJPM (Eject PER Minute) 20EJPM前後 60EJPM〜 アクチュエータ標準搭載 あり なし
その他のインターフェイス あり 1bit デジタル出力 重さ 500g以上 100g以下 消費電力 5V (USB-Serial) +
12V (CD-ROM駆動用) 5V
20
なぜ Eject-io なのか • PICで実装されたシンプルなEjectデバイス
• USBマスストレージクラス準拠 o 特殊なドライバなく制御可能
• ON/OFFの出力が可能 o Ejectコマンドで出力
• エンドユーザの手にわたってもフィールドリプログラム可能なファームウエア o 後からの機能拡張やハックが可能、子供のマイコントレーニングにも
• 世界で最も低消費電力な eject 対応デバイス
21
アプリケーションと接続された Eject-io
22
Eject-io on Linux
23
Eject-ioにより軽量化された変態ヘルメット
24
25
Eject-io の作り方
買い物 • PIC18F25J50
o 選定理由 o USB対応、メインメモリ3KB以上 (マスストレージのサンプルが約2KB) o ブレットボードで使えるICタイプ o 5.0Vだとよかったけど3.3Vタイプで妥協
• 東芝製三端子レギュレータ o USBバスパワー 5.0V を 3.3V にできればなんでもない
• USB端子、コンデンサ、LED、抵抗などは手持ちのもので適当に • ROMライター(PICKit2 とか PICKit3 とか色々ある) • ブレットボードなど
o ブレットボード、ジャンパなど
26
27
28
29
USBサンプルをロードする
30 http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en547784
サンプルをビルド • USB\Device – Mass Storage – Internal Flash\ サンプルを
MPLAB Xでビルドする
• ビルドする時に最低限やらないといけないこと o ターゲットになるデバイスの設定
31
ファームウェアのカスタマイズ
32
33
USBの仕様が知りたい
34 http://usb.org/
USBの仕様が知りたい
35
プロトコルの解析 • USBPCap + Wireshark
o Windows 上でUSBパケットキャプチャできる
• VMware o デバッグオプションを .vmx に直書きすると USB のログがとれる
o VMware ログの仕様上1KB/s以上出力されると出力が止まるので注意
36
USBPcap
37
USBPcapでキャプチャしたログをWiresharkで見る
38 http://desowin.org/usbpcap/tour.html より引用
VmwareのUSB Log
39
まとめ • Eject は、今日よく広く認知されたI/O手段の一つである
o でも5インチCD-ROMはヘルメット重くなる
o アクチュエータが不要であればCD-ROMドライブである必要はない
• Eject-io o アクチュエータを使う理由がなければPICで置き換え可能
o PICならUSBマスストレージも簡単に実装可能
o 最も消費電力が低いEject可能デバイスを実現
o Raspberry Piと組み合わせての5Vバッテリ動作が可能
• PIC USBプログラミング o 意外と手軽に始められる
o USBスニファの手段 … VMware ログ、USBPcap + Wireshark
40
Thank you
゚+.(・ω・)゚+.゚
41