インタフェースと魔法の杖
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
2010/02/17からのアクセス回数 &counter;
** Macintoshとの出会い [#h1eca4bb]
はじめてMacintosh(以下Macと書きます)を見たのは、入社し...
Macの優れたユーザインタフェースを習得すればきっとばらしい
ソフトを作れるに違いない、そう思った私は一念発起してMacを...
。
当時のMacは軽自動車と同じくらいの価格で、今のパソコンより...
でした。
Macが届いてから、ソフトウェアの無限の可能性に胸躍らせ夢中...
当時は、Macのプログラミング環境はMDS(Macintosh Developmen...
呼ばれるアセンブラをベースとした開発環境とInside Macintos...
Mac PascalというPascalのインタプリタしかありませんでした。
Macintoshのプログラムは、当初Lisa上でアセンブラとPasacal...
開発されていた経緯から、マックのツールボックスとのインタ...
で記述されていましたので、PascalがMacの標準言語となったの...
した。
THINK Pascalの登場によってMac上で本格的なプログラミングが...
((MacJapan No.15 1990, 著者の記事 p29 図4より引用)))。
その後、Appleから正式な開発環境MPW(Macintosh Programmer's...
が提供され、UNIXライクなコマンドと汎用のエディタを使った...
UNIXの普及に伴い、時代はC言語の全盛期となりました。
&ref(THINK Pascal.png);
*** Macのプログラミングは独特 [#d693e9b2]
開発言語とInside Macintoshiを読んだけでは、Macのプログラ...
不十分でした。
少ないMacのプログラミング本のなかで、
- How to Write Macintosh Software((ISBN: 0-8104-6564-7))
- Macintosh Revealed((ISBN: 0-8104-6561-2))
- Mac Tutor(雑誌)
をむさぼり読みました。
特に、How to Write Macintosh Softwareに紹介されていたデバ...
今も大切にしています。
- バグと思わしき箇所を見つけたら、すぐにバグを修正するの...
- デバッガでバグの箇所に正しい値をセットし、後の処理が正...
というものでした。
** RS232C [#b18e3a4e]
外部の機器と接続することで創作の範囲が広がります。
初期のMacには外部機器と接続するインタフェースとして、
モデムポートとプリンタポートの2つのシリアルポートがあるの...
*** クロス変換ケーブル [#k7247513]
シリアル通信では、モデムと接続する場合にはパラレルケーブ...
PCや外部機器と接続する場合にはクロスケーブルを使用します。
私が入社して初めてハンダゴテを持ったのは、パラレルケーブ...
ケーブルに変換するケーブルの作成でした(図2)。
モデムケーブルとこの変換ケーブルがあれば、すべての機器と...
ことができるのでとても重宝しました。
&ref(クロスケーブル.png);
*** 小型スキャナー・プリンターの接続 [#zdbed6af]
80年台にブームとなったシステム手帳ですが、多くの種類のリ...
売られていました。
そのような中、リコーからシステム手帳対応のハンディタイプ...
・プリンターCuvax(図3)が発売されました。
しかもCuvaxにはPCとの接続して
画像の転送ができるコントーラーがオプションとして用意され...
自分だけのリフィルをつくりたい、Macのデータをリフィルに印...
いう私の願望とマッチし、すぐにMacとCuvaxを接続するソフト...
した。これが私の最初のMacintoshアプリケーションであり、
自分の欲しいものを作った始まりでした。
&ref(Cuvax.png);
*** ハード的な接続テスト [#l019af29]
Cuvaxとの接続テストでは、クロス変換ケーブルが活躍しました。
もっとも簡単な通信がクリアすれば、後はコントーラーの仕様...
データを交換するプロトコルを実装するだけですから、ソフト...
とするところです。問題を自分の領域に持ち込めば、こちらの...
*** MacらしいGUIを付ける [#c15849ef]
Cuvaxコントローラと正常に通信ができたところで、Mac風のユ...
を作成ました(図4)。
スキャナーで読み取った画像がリアルタイムで表示された時に...
しました。
&ref(Cuvaxダイアログ.png);
** Java [#f00f55f1]
私には、2つのこだわりがありました。
- Mac上で開発できること
- マシン依存しない環境を持つこと
そこで、2001年から開発言語をCからJavaに切り替え、開発環境...
JVM上で動くJavaはマシンやOSに依存しないことが私には魅力で...
*** Javaから制御 [#vdaaf93a]
サンマイクロシステムズから販売されたSun Spot(図4)は、大...
Sun Spotの徹底したこだわりはセンサーモジュールに搭載され...
&ref(SunSpot.png);
*** ICタグをJavaから制御したい [#i338df5e]
Sun Spotに刺激された私は、本棚に山積みになっている本を簡...
組み込みプレスに掲載された「ICタグを使った書籍管理システ...
*** Javaのシリアル通信 [#i88ea345]
PC上のJavaからTTLレベルのシリアルポートを制御するには、2...
- Java用のシリアル通信クラスライブラリ
- USBで接続できるTTLレベルコンバータ
Java用のシリアル通信クラスライブラリとしては、Sunの提供す...
実際に実装されているのは、SPARC Solaris/x86 Solaris/x86 L...
そこで、Java Communications APIに準拠したオープンソースの...
USBから接続できるTTLレベルコンバータには、秋月のAE-UM232R...
AE-UM232Rは、USBから外部機器に電源(5V, 3.3V)を供給し、...
です(図6: 右がTTLレベルコンバータ、左がICタグ リーダ・ラ...
&ref(ICタグ.png);
ターミナルの通信ソフトで、ICタグとの接続を確認した後、Jav...
作り始めました。
実際に本を管理するには、書籍のタイトル、著者などを入力し...
ISBN番号から取り込んで処理しました。
入力GUIもEclipseのVisual Editorを使って作成したので、あっ...
例え不慣れな外部機器との接続でも、自分の得意なところに持...
様々な機器と接続できるレベルコンバータが、「魔法の杖」の...
** USB [#c16a8392]
シリアル通信の成功に勢いづいて、JavaからオリジナルのUSB装...
雑誌で紹介されているUSB制御は、ICメーカーの提供するWindow...
Macユーザの私にはほとんど役に立ちません。
そんな時「インターネット・ガジェット設計」((ISBN: 4274501...
- libusb:オープンソースのUSB制御ライブラリ (( http://lib...
- V-USB:AVR用のUSBプロトコルスタック (( http://www.obdev...
を使った記事が紹介されていました。
*** JavaからオリジナルUSB機器への接続 [#p169c6c8]
次にJavaからオリジナルのUSB機器に接続しようと試みました。
世の中には同じようなことを考えている人がいるもので、libus...
LibusbJava (( http://sourceforge.net/projects/libusbjava/...
USB機器との通信は、usb_control_msgメソッドのbRequest, wVa...
埋め込んで行います。USBのルールには沿っていませんが、プロ...
USB機器と接続できることが確認できました。
*** JavaからオリジナルHID機器に接続 [#s05e3fe4]
MPUの進歩でUSBドライバが内蔵されているものが増えてきまし...
先で紹介したusb_control_msgにデータを埋め込む方法は使えま...
HIDを処理する汎用のライブラリを調べたところLibhid (( http...
Libhidは、Libusbの上にHIDのディスクリプタを解析する関数を...
Libhidのソースを調べると、HIDのレポートIDとレポートIndex...
使ってHIDと通信できることが分かりました。特にオリジナルの...
固定で、Libhidに含まれるテストプログラムtest_libhidで簡単...
そこで、LibusbJavaを使ってHIDと通信するクラスをJavaで作成...
テストに使ったのは、「ARMマイコンパーフェクト学習基板(図...
簡単なプログラムを使って基板のLEDを点滅させ、一定時間で増...
値を受信したときの例です。
&ref(学習基板.png);
** ethernet [#he25959a]
RS232C, USBときたら次は、ethernetですね。
組み込みでethernetに対応しているチップが少なかったとき、...
発売されました。
早速、EZ-ARM7 と SPIイーサネットを購入し、ethernetへの接...
&ref(SPIイーサネット.png);
*** MacでARMの開発 [#sa7d1ace]
まずは、MacでARMの開発環境を整えることから始めました。
Windows, Linuxでも同様に使えるような環境を考え、以下のよ...
- 必要最低限のツールbinutils, gccを自分でコンパイルしてみる
- その他のnewlib, gdbをインストール
- Eclipse上の組み込みC開発プラグインZylin CDTをインストール
- オンチップ・デバッガOpenOCDのインストール
*** OpenOCD [#yece547d]
開発環境で最も困ったのが、OpenOCDでした。
OpenOCDはオープンソースのオン・チップ・デバッガで、多くの...
プログラムの書き込みやデバッグが簡単にできる優れものです。
しかしながら、MacではFT2232チップを搭載したJTAG ICEを接続...
デバイスとして登録するため、OpenOCDは接続時に失敗し、動作...
そこで、FT2232以外のJTAGであるUSB BlasterでOpenOCDを使っ...
「もなか」さんからFT2232チップのVID/PIDを書き換えれば、
そのままOpenOCDで使えるとの情報を頂きました。
本物のJtagkeyでいきなり実験するのは怖いので、「 Eclipse-A...
ツール工房のUSB2232(USBデュアル変換基板)を使って試してみ...
ができるました(図9)。
&ref(JTAG接続.png);
*** ライブラリを使う [#q4da42ff]
ソフト屋がいきなり、組み込み用MPUを使おうとしても難しいも...
自分の使っているMPUのライブラリが公開されていないか調べて...
- Procyon ARMlibは、LPC2000、AT91シリーズに対応 (( オリジ...
- CodeBaseは、LPC1114、LPC1343に対応 (( http://www.microb...
等があります。
*** ethernetへの接続 [#k8b9975d]
ARMlibに含まれているイーサネットライブラリを使って、簡単...
残念なことに、ARMlibのイーサネットライブラリは、ルータか...
ことができないため、固定アドレスを使った接続しかできませ...
それでも、小さなMPUからでもイーサネットに接続することがで...
収穫でした。
*** プロトタイプツールとしてのmbed [#ke4798c6]
mbedは、Ethernet, USB, RS232C等多くのインタフェースを備え...
使うためのC++のクラスが用意されています。
mbed用に設計されたスターボード・オレンジ (( http://www.sw...
接続し、情報を取得するようなオリジナルの機械を作ることが...
mbedではクラウドを使ってプログラムのコンパイル、マニュア...
ができるようになっているため、Macでも簡単にmbedの開発がで...
mbedで私が気に入ったことは、クラウド内のユーザのブログペ...
新しいデバイスの情報交換が行われていることです。
自分の使おうとしているデバイスをクラウドで検索し、公開さ...
簡単にそのデバイスを試すことができます。
図10は、安価なタッチスクリーン付き液晶表示機器をmbedに接...
&ref(液晶表示機器.png);
** まとめ [#bc4cec01]
ここまでRS232C, USB, Ethernet(インタフェース)との接続と...
についてつぶやいてきました。
自分はソフトが専門でハードは関係ないと「自分を枠にはめる...
ハードとのインタフェースをつなぐことで、新しい世界を見つ...
また、Macと共通プラットフォームへのこだわりを続けていたら...
Java、Eclipse、GCC, OpenOCDにたどり着いたように、諦めずこ...
終了行:
#contents
2010/02/17からのアクセス回数 &counter;
** Macintoshとの出会い [#h1eca4bb]
はじめてMacintosh(以下Macと書きます)を見たのは、入社し...
Macの優れたユーザインタフェースを習得すればきっとばらしい
ソフトを作れるに違いない、そう思った私は一念発起してMacを...
。
当時のMacは軽自動車と同じくらいの価格で、今のパソコンより...
でした。
Macが届いてから、ソフトウェアの無限の可能性に胸躍らせ夢中...
当時は、Macのプログラミング環境はMDS(Macintosh Developmen...
呼ばれるアセンブラをベースとした開発環境とInside Macintos...
Mac PascalというPascalのインタプリタしかありませんでした。
Macintoshのプログラムは、当初Lisa上でアセンブラとPasacal...
開発されていた経緯から、マックのツールボックスとのインタ...
で記述されていましたので、PascalがMacの標準言語となったの...
した。
THINK Pascalの登場によってMac上で本格的なプログラミングが...
((MacJapan No.15 1990, 著者の記事 p29 図4より引用)))。
その後、Appleから正式な開発環境MPW(Macintosh Programmer's...
が提供され、UNIXライクなコマンドと汎用のエディタを使った...
UNIXの普及に伴い、時代はC言語の全盛期となりました。
&ref(THINK Pascal.png);
*** Macのプログラミングは独特 [#d693e9b2]
開発言語とInside Macintoshiを読んだけでは、Macのプログラ...
不十分でした。
少ないMacのプログラミング本のなかで、
- How to Write Macintosh Software((ISBN: 0-8104-6564-7))
- Macintosh Revealed((ISBN: 0-8104-6561-2))
- Mac Tutor(雑誌)
をむさぼり読みました。
特に、How to Write Macintosh Softwareに紹介されていたデバ...
今も大切にしています。
- バグと思わしき箇所を見つけたら、すぐにバグを修正するの...
- デバッガでバグの箇所に正しい値をセットし、後の処理が正...
というものでした。
** RS232C [#b18e3a4e]
外部の機器と接続することで創作の範囲が広がります。
初期のMacには外部機器と接続するインタフェースとして、
モデムポートとプリンタポートの2つのシリアルポートがあるの...
*** クロス変換ケーブル [#k7247513]
シリアル通信では、モデムと接続する場合にはパラレルケーブ...
PCや外部機器と接続する場合にはクロスケーブルを使用します。
私が入社して初めてハンダゴテを持ったのは、パラレルケーブ...
ケーブルに変換するケーブルの作成でした(図2)。
モデムケーブルとこの変換ケーブルがあれば、すべての機器と...
ことができるのでとても重宝しました。
&ref(クロスケーブル.png);
*** 小型スキャナー・プリンターの接続 [#zdbed6af]
80年台にブームとなったシステム手帳ですが、多くの種類のリ...
売られていました。
そのような中、リコーからシステム手帳対応のハンディタイプ...
・プリンターCuvax(図3)が発売されました。
しかもCuvaxにはPCとの接続して
画像の転送ができるコントーラーがオプションとして用意され...
自分だけのリフィルをつくりたい、Macのデータをリフィルに印...
いう私の願望とマッチし、すぐにMacとCuvaxを接続するソフト...
した。これが私の最初のMacintoshアプリケーションであり、
自分の欲しいものを作った始まりでした。
&ref(Cuvax.png);
*** ハード的な接続テスト [#l019af29]
Cuvaxとの接続テストでは、クロス変換ケーブルが活躍しました。
もっとも簡単な通信がクリアすれば、後はコントーラーの仕様...
データを交換するプロトコルを実装するだけですから、ソフト...
とするところです。問題を自分の領域に持ち込めば、こちらの...
*** MacらしいGUIを付ける [#c15849ef]
Cuvaxコントローラと正常に通信ができたところで、Mac風のユ...
を作成ました(図4)。
スキャナーで読み取った画像がリアルタイムで表示された時に...
しました。
&ref(Cuvaxダイアログ.png);
** Java [#f00f55f1]
私には、2つのこだわりがありました。
- Mac上で開発できること
- マシン依存しない環境を持つこと
そこで、2001年から開発言語をCからJavaに切り替え、開発環境...
JVM上で動くJavaはマシンやOSに依存しないことが私には魅力で...
*** Javaから制御 [#vdaaf93a]
サンマイクロシステムズから販売されたSun Spot(図4)は、大...
Sun Spotの徹底したこだわりはセンサーモジュールに搭載され...
&ref(SunSpot.png);
*** ICタグをJavaから制御したい [#i338df5e]
Sun Spotに刺激された私は、本棚に山積みになっている本を簡...
組み込みプレスに掲載された「ICタグを使った書籍管理システ...
*** Javaのシリアル通信 [#i88ea345]
PC上のJavaからTTLレベルのシリアルポートを制御するには、2...
- Java用のシリアル通信クラスライブラリ
- USBで接続できるTTLレベルコンバータ
Java用のシリアル通信クラスライブラリとしては、Sunの提供す...
実際に実装されているのは、SPARC Solaris/x86 Solaris/x86 L...
そこで、Java Communications APIに準拠したオープンソースの...
USBから接続できるTTLレベルコンバータには、秋月のAE-UM232R...
AE-UM232Rは、USBから外部機器に電源(5V, 3.3V)を供給し、...
です(図6: 右がTTLレベルコンバータ、左がICタグ リーダ・ラ...
&ref(ICタグ.png);
ターミナルの通信ソフトで、ICタグとの接続を確認した後、Jav...
作り始めました。
実際に本を管理するには、書籍のタイトル、著者などを入力し...
ISBN番号から取り込んで処理しました。
入力GUIもEclipseのVisual Editorを使って作成したので、あっ...
例え不慣れな外部機器との接続でも、自分の得意なところに持...
様々な機器と接続できるレベルコンバータが、「魔法の杖」の...
** USB [#c16a8392]
シリアル通信の成功に勢いづいて、JavaからオリジナルのUSB装...
雑誌で紹介されているUSB制御は、ICメーカーの提供するWindow...
Macユーザの私にはほとんど役に立ちません。
そんな時「インターネット・ガジェット設計」((ISBN: 4274501...
- libusb:オープンソースのUSB制御ライブラリ (( http://lib...
- V-USB:AVR用のUSBプロトコルスタック (( http://www.obdev...
を使った記事が紹介されていました。
*** JavaからオリジナルUSB機器への接続 [#p169c6c8]
次にJavaからオリジナルのUSB機器に接続しようと試みました。
世の中には同じようなことを考えている人がいるもので、libus...
LibusbJava (( http://sourceforge.net/projects/libusbjava/...
USB機器との通信は、usb_control_msgメソッドのbRequest, wVa...
埋め込んで行います。USBのルールには沿っていませんが、プロ...
USB機器と接続できることが確認できました。
*** JavaからオリジナルHID機器に接続 [#s05e3fe4]
MPUの進歩でUSBドライバが内蔵されているものが増えてきまし...
先で紹介したusb_control_msgにデータを埋め込む方法は使えま...
HIDを処理する汎用のライブラリを調べたところLibhid (( http...
Libhidは、Libusbの上にHIDのディスクリプタを解析する関数を...
Libhidのソースを調べると、HIDのレポートIDとレポートIndex...
使ってHIDと通信できることが分かりました。特にオリジナルの...
固定で、Libhidに含まれるテストプログラムtest_libhidで簡単...
そこで、LibusbJavaを使ってHIDと通信するクラスをJavaで作成...
テストに使ったのは、「ARMマイコンパーフェクト学習基板(図...
簡単なプログラムを使って基板のLEDを点滅させ、一定時間で増...
値を受信したときの例です。
&ref(学習基板.png);
** ethernet [#he25959a]
RS232C, USBときたら次は、ethernetですね。
組み込みでethernetに対応しているチップが少なかったとき、...
発売されました。
早速、EZ-ARM7 と SPIイーサネットを購入し、ethernetへの接...
&ref(SPIイーサネット.png);
*** MacでARMの開発 [#sa7d1ace]
まずは、MacでARMの開発環境を整えることから始めました。
Windows, Linuxでも同様に使えるような環境を考え、以下のよ...
- 必要最低限のツールbinutils, gccを自分でコンパイルしてみる
- その他のnewlib, gdbをインストール
- Eclipse上の組み込みC開発プラグインZylin CDTをインストール
- オンチップ・デバッガOpenOCDのインストール
*** OpenOCD [#yece547d]
開発環境で最も困ったのが、OpenOCDでした。
OpenOCDはオープンソースのオン・チップ・デバッガで、多くの...
プログラムの書き込みやデバッグが簡単にできる優れものです。
しかしながら、MacではFT2232チップを搭載したJTAG ICEを接続...
デバイスとして登録するため、OpenOCDは接続時に失敗し、動作...
そこで、FT2232以外のJTAGであるUSB BlasterでOpenOCDを使っ...
「もなか」さんからFT2232チップのVID/PIDを書き換えれば、
そのままOpenOCDで使えるとの情報を頂きました。
本物のJtagkeyでいきなり実験するのは怖いので、「 Eclipse-A...
ツール工房のUSB2232(USBデュアル変換基板)を使って試してみ...
ができるました(図9)。
&ref(JTAG接続.png);
*** ライブラリを使う [#q4da42ff]
ソフト屋がいきなり、組み込み用MPUを使おうとしても難しいも...
自分の使っているMPUのライブラリが公開されていないか調べて...
- Procyon ARMlibは、LPC2000、AT91シリーズに対応 (( オリジ...
- CodeBaseは、LPC1114、LPC1343に対応 (( http://www.microb...
等があります。
*** ethernetへの接続 [#k8b9975d]
ARMlibに含まれているイーサネットライブラリを使って、簡単...
残念なことに、ARMlibのイーサネットライブラリは、ルータか...
ことができないため、固定アドレスを使った接続しかできませ...
それでも、小さなMPUからでもイーサネットに接続することがで...
収穫でした。
*** プロトタイプツールとしてのmbed [#ke4798c6]
mbedは、Ethernet, USB, RS232C等多くのインタフェースを備え...
使うためのC++のクラスが用意されています。
mbed用に設計されたスターボード・オレンジ (( http://www.sw...
接続し、情報を取得するようなオリジナルの機械を作ることが...
mbedではクラウドを使ってプログラムのコンパイル、マニュア...
ができるようになっているため、Macでも簡単にmbedの開発がで...
mbedで私が気に入ったことは、クラウド内のユーザのブログペ...
新しいデバイスの情報交換が行われていることです。
自分の使おうとしているデバイスをクラウドで検索し、公開さ...
簡単にそのデバイスを試すことができます。
図10は、安価なタッチスクリーン付き液晶表示機器をmbedに接...
&ref(液晶表示機器.png);
** まとめ [#bc4cec01]
ここまでRS232C, USB, Ethernet(インタフェース)との接続と...
についてつぶやいてきました。
自分はソフトが専門でハードは関係ないと「自分を枠にはめる...
ハードとのインタフェースをつなぐことで、新しい世界を見つ...
また、Macと共通プラットフォームへのこだわりを続けていたら...
Java、Eclipse、GCC, OpenOCDにたどり着いたように、諦めずこ...
ページ名:
SmartDoc