次世代i/oインターフェイス「eject-io」
DESCRIPTION
Eject-io 2013/12/26にささみ勉強会にて紹介TRANSCRIPT
![Page 1: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/1.jpg)
次世代 I/Oインターフェイスの提案
2013/12/26 ささみの会 Takeshi HASEGAWA (Twitter: @hasegaw) v 本資料中の解説内容は、所属組織における 統一的な見解を示すものではありません。
![Page 2: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/2.jpg)
プロフィール 長谷川 猛 (HASEGAWA Takeshi) twitter: @hasegaw 主にLinuxや仮想化技術を得意とする雑食系SE Xen/KVMを調査、FreeBSD virtioを実装等 興味範囲:仮想化、ストレージ もんはんしようず ゚+.(・ω・)゚+.゚
2
![Page 3: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/3.jpg)
おもな著書・寄稿
3
![Page 4: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/4.jpg)
Webサイトの記事など
エンジニアなら知っておきたい仮想マシンのしくみ http://gihyo.jp/dev/serial/01/vm_work/
4
![Page 5: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/5.jpg)
これまでのI/O
• I/Oポート (8ビット)、割り込み、MMIO o コンピュータの複雑化にともない簡単なポートI/Oがしづらくなった
• Serial, GPIO
• Eject o 簡単
5
![Page 6: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/6.jpg)
6 http://www.raspberrypi.org/archives/4824
Ejectコマンドはいまや 非常に有名なIO手段となった
![Page 7: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/7.jpg)
どうしてEjectなのか • 電子機器部品の知識なくモノを動かせる
• ハンダ付け不要
• お子様ですら “DIY” 可能
• いまどき CD-ROM ドライブのドライバがないOSなんてない o Eject 最強ってことですね
7
![Page 8: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/8.jpg)
Ejectの課題 • ジャンクCD-ROMは安く手に入る(100円~)が、
しかしシステムへの接続にはインターフェイスが必要
E.g.) USB-ATA アダプタ
• 電力供給。5インチのCD-ROMドライブは12V必要
• CD-ROMドライブをヘルメットの上に載せるには重すぎる o 傍目からみておかしい
8
![Page 9: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/9.jpg)
本来の部分に立ち戻る • CD-ROMをIOインターフェイスとして使うなんて!
• まるでHDDのディスク部分をそのままフラッシュに置き換えた
「SSD」的な発想じゃないか!
• これでLEDつけたりリモコンのボタン押すならそもそも
ON/OFFできるI/Oインターフェイスがあればいいよね
9
![Page 10: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/10.jpg)
時は満ちた • 「誰かが Eject を再定義する必要があったーー」
• よし作ろう
10
![Page 11: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/11.jpg)
11
Eject-io
![Page 12: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/12.jpg)
なぜEject-ioなのか • PICで実装されたシンプルなEjectデバイス
• USBマスストレージクラス準拠 o 特殊なドライバなく制御可能
• ON/OFFの出力が可能 o Ejectコマンドで出力
• エンドユーザの手にわたってもフィールドリプログラム可能なファームウエア o 後からの機能拡張やハックが可能、子供のマイコントレーニングにも
• 世界で最も低消費電力な eject 対応デバイス
12
![Page 13: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/13.jpg)
Eject-io
13
![Page 14: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/14.jpg)
Eject-ioにより軽量化された変態ヘルメット
14
![Page 15: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/15.jpg)
15
Eject-io の作り方
![Page 16: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/16.jpg)
買い物 • 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」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/17.jpg)
17
![Page 18: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/18.jpg)
18
![Page 19: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/19.jpg)
19
![Page 20: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/20.jpg)
組み立てた
20
![Page 21: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/21.jpg)
USBサンプルをロードする
21 http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en547784
![Page 22: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/22.jpg)
サンプルをビルド • USB\Device – Mass Storage – Internal Flash\ サンプルを
MPLAB Xでビルドする
• ビルドする時に最低限やらないといけないこと o ターゲットになるデバイスの設定
22
![Page 23: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/23.jpg)
ファームウェアのカスタマイズ
23
![Page 24: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/24.jpg)
24
![Page 25: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/25.jpg)
USBの仕様が知りたい
25 http://usb.org/
![Page 26: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/26.jpg)
USBの仕様が知りたい
26
![Page 27: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/27.jpg)
プロトコルの解析 • USBPCap + Wireshark
o Windows 上でUSBパケットキャプチャできる
• VMware o デバッグオプションを .vmx に直書きすると USB のログがとれる
o VMware ログの仕様上1KB/s以上出力されると出力が止まるので注意
27
![Page 28: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/28.jpg)
USBPcap
28
![Page 29: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/29.jpg)
USBPcapでキャプチャしたログをWiresharkで見る
29 http://desowin.org/usbpcap/tour.html より引用
![Page 30: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/30.jpg)
VmwareのUSB Log
30
![Page 31: 次世代I/Oインターフェイス「Eject-io」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/31.jpg)
まとめ • 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」](https://reader033.vdocuments.pub/reader033/viewer/2022060115/557905e2d8b42a675b8b538b/html5/thumbnails/32.jpg)
Thank you
゚+.(・ω・)゚+.゚
32