32
次世代 I/Oインターフェイスの提案 2013/12/26 ささみの会 Takeshi HASEGAWA (Twitter: @hasegaw) 本資料中の解説内容は、所属組織における 統一的な見解を示すものではありません。

次世代I/Oインターフェイス「Eject-io」

Embed Size (px)

DESCRIPTION

Eject-io 2013/12/26にささみ勉強会にて紹介

Citation preview

Page 1: 次世代I/Oインターフェイス「Eject-io」

次世代 I/Oインターフェイスの提案

2013/12/26 ささみの会 Takeshi HASEGAWA (Twitter: @hasegaw) v  本資料中の解説内容は、所属組織における 統一的な見解を示すものではありません。

Page 2: 次世代I/Oインターフェイス「Eject-io」

プロフィール 長谷川 猛 (HASEGAWA Takeshi) twitter: @hasegaw 主にLinuxや仮想化技術を得意とする雑食系SE Xen/KVMを調査、FreeBSD virtioを実装等  興味範囲:仮想化、ストレージ もんはんしようず ゚+.(・ω・)゚+.゚

2

Page 3: 次世代I/Oインターフェイス「Eject-io」

おもな著書・寄稿

3

Page 4: 次世代I/Oインターフェイス「Eject-io」

Webサイトの記事など

エンジニアなら知っておきたい仮想マシンのしくみ http://gihyo.jp/dev/serial/01/vm_work/

4

Page 5: 次世代I/Oインターフェイス「Eject-io」

これまでのI/O

•  I/Oポート (8ビット)、割り込み、MMIO o  コンピュータの複雑化にともない簡単なポートI/Oがしづらくなった

•  Serial, GPIO

•  Eject o  簡単

5

Page 6: 次世代I/Oインターフェイス「Eject-io」

6 http://www.raspberrypi.org/archives/4824

Ejectコマンドはいまや 非常に有名なIO手段となった

Page 7: 次世代I/Oインターフェイス「Eject-io」

どうしてEjectなのか •  電子機器部品の知識なくモノを動かせる

•  ハンダ付け不要

•  お子様ですら “DIY” 可能

•  いまどき CD-ROM ドライブのドライバがないOSなんてない o  Eject 最強ってことですね

7

Page 8: 次世代I/Oインターフェイス「Eject-io」

Ejectの課題 •  ジャンクCD-ROMは安く手に入る(100円~)が、

しかしシステムへの接続にはインターフェイスが必要

E.g.) USB-ATA アダプタ

•  電力供給。5インチのCD-ROMドライブは12V必要

•  CD-ROMドライブをヘルメットの上に載せるには重すぎる o  傍目からみておかしい

8

Page 9: 次世代I/Oインターフェイス「Eject-io」

本来の部分に立ち戻る •  CD-ROMをIOインターフェイスとして使うなんて!

•  まるでHDDのディスク部分をそのままフラッシュに置き換えた

「SSD」的な発想じゃないか!

•  これでLEDつけたりリモコンのボタン押すならそもそも

ON/OFFできるI/Oインターフェイスがあればいいよね

9

Page 10: 次世代I/Oインターフェイス「Eject-io」

時は満ちた •  「誰かが Eject を再定義する必要があったーー」

•  よし作ろう

10

Page 11: 次世代I/Oインターフェイス「Eject-io」

11

Eject-io

Page 12: 次世代I/Oインターフェイス「Eject-io」

なぜEject-ioなのか •  PICで実装されたシンプルなEjectデバイス

•  USBマスストレージクラス準拠 o  特殊なドライバなく制御可能

•  ON/OFFの出力が可能 o  Ejectコマンドで出力

•  エンドユーザの手にわたってもフィールドリプログラム可能なファームウエア o  後からの機能拡張やハックが可能、子供のマイコントレーニングにも

•  世界で最も低消費電力な eject 対応デバイス

12

Page 13: 次世代I/Oインターフェイス「Eject-io」

Eject-io

13

Page 14: 次世代I/Oインターフェイス「Eject-io」

Eject-ioにより軽量化された変態ヘルメット

14

Page 15: 次世代I/Oインターフェイス「Eject-io」

15

Eject-io の作り方

Page 16: 次世代I/Oインターフェイス「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  ブレットボード、ジャンパなど

16

Page 17: 次世代I/Oインターフェイス「Eject-io」

17

Page 18: 次世代I/Oインターフェイス「Eject-io」

18

Page 19: 次世代I/Oインターフェイス「Eject-io」

19

Page 20: 次世代I/Oインターフェイス「Eject-io」

組み立てた

20

Page 21: 次世代I/Oインターフェイス「Eject-io」

USBサンプルをロードする

21 http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en547784

Page 22: 次世代I/Oインターフェイス「Eject-io」

サンプルをビルド •  USB\Device – Mass Storage – Internal Flash\ サンプルを

MPLAB Xでビルドする

•  ビルドする時に最低限やらないといけないこと o  ターゲットになるデバイスの設定

22

Page 23: 次世代I/Oインターフェイス「Eject-io」

ファームウェアのカスタマイズ

23

Page 24: 次世代I/Oインターフェイス「Eject-io」

24

Page 25: 次世代I/Oインターフェイス「Eject-io」

USBの仕様が知りたい

25 http://usb.org/

Page 26: 次世代I/Oインターフェイス「Eject-io」

USBの仕様が知りたい

26

Page 27: 次世代I/Oインターフェイス「Eject-io」

プロトコルの解析 •  USBPCap + Wireshark

o  Windows 上でUSBパケットキャプチャできる

•  VMware o  デバッグオプションを .vmx に直書きすると USB のログがとれる

o  VMware ログの仕様上1KB/s以上出力されると出力が止まるので注意

27

Page 28: 次世代I/Oインターフェイス「Eject-io」

USBPcap

28

Page 29: 次世代I/Oインターフェイス「Eject-io」

USBPcapでキャプチャしたログをWiresharkで見る

29 http://desowin.org/usbpcap/tour.html より引用

Page 30: 次世代I/Oインターフェイス「Eject-io」

VmwareのUSB Log

30

Page 31: 次世代I/Oインターフェイス「Eject-io」

まとめ •  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

31

Page 32: 次世代I/Oインターフェイス「Eject-io」

Thank you

゚+.(・ω・)゚+.゚

32