なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

トランジスタ技術8月号USBマイコン基板を試す(3)。

Posted by arms22 on 2008年07月19日 16  0

前回の解析結果からデバイスを開いた後、OPEN_CLOSEコマンドをコントロール転送で送ってやると、トラ技BIOSと通信を行うことができるようになった。MacOSX用のトラ技BIOSターミナルアプリを作成した。

トラ技BIOSターミナルアプリ for MacOSX
trterm4osx-0.1.zip

インストール方法

1.libusbのインストール
trterm4osxはトラ技BIOSとの通信にlibusbを使用します。
こちらでバイナリパッケージが配布されています。対応するOS(10.3 or 10.4)のパッケージをダウンロードして、インストールしてください。

2.trterm4osxのインストール
trterm4osx-0.1.zipにはコンパイル済みの実行ファイルが含まれています。実行ファイルを適当なフォルダにコピーしてください。

使い方
ターミナルを開いて実行するだけです。数回リターンキーを押すとトラ技BIOSからスタートアップメッセージが送られてきます。あとターミナル->ウィンドウ設定->ディスプレイで文字セットエンコーディングを「日本語(Shift JIS)」を選択しておく。

% ./trterm4osx

ToragiBIOS Version 1.20A
(C)Copyright 2008 NEC Electronics Corporation
(C)Copyright 2008 Tokushu Denshi Kairo Inc.
>
プログラムをRAMにロードして実行するには、次のようにloadと打ち込んで、HEXファイルの内容をペーストします。D&Dは使えないのでHEXファイルを適当なテキストエディタで開いて内容をコピーしておきます。この時、ファイルの終端文字(^Z)はコピーしないようにします。最後にjmp f000でプログラムが実行されます。
>load
load
Drop a HEX file.
...
complete.
>
>jmp f000


スポンサーサイト



トランジスタ技術8月号USBマイコン基板を試す(2)。

Posted by arms22 on 2008年07月17日 4  0

前回の続き。ソフトウェアUSBプロトコルアナライザ(SourceUSB)を使って、デバイスドライバがデバイスに対して送っているコマンドを解析してみた。ベンダリクエストを使って、幾つかのコマンドを送信しているのが分かる。NECのサンプルコードを元にコマンドの意味を割り当てると次のようになった。

TeraTermでデバイスを開いて、スタートアップメッセージが帰って来るまでの間。

RequestType Request Value Index Length Data[Length]
40 0b 0000 0000 0002 03 01 // OPEN_CLOSE
40 0b 0000 0000 0002 01 03 // SET_DTR_RTS
40 0b 0000 0000 0003 00 04 01 // LINE_CONTROL
40 0b 0000 0000 0003 04 00 00 // SET_ERR_CHR
40 0b 0000 0000 0002 01 03 // SET_DTR_RTS
40 0b 0000 0000 0003 00 04 01 // LINE_CONTROL
40 0b 0000 0000 0003 04 00 00 // SET_ERR_CHR
40 0b 0000 0000 0003 02 00 00 // SET_XON_XOFF_CHR
40 0b 0000 0000 0003 04 00 00 // SET_ERR_CHR
40 0b 0000 0000 0003 00 04 01 // LINE_CONTROL
40 0b 0000 0000 0003 04 00 00 // SET_ERR_CHR

TeraTermから接続を解除した時。
40 0b 0000 0000 0002 03 00    // OPEN_CLOSE

トランジスタ技術8月号USBマイコン基板を試す。

Posted by arms22 on 2008年07月15日 4  0

トランジスタ技術2008年8月号を買ってきました。早速、付録基板を試そうと思ったのですが、デバイスドライバがWindows用しかありません。。MacOSXで動かせません!まいった。。このまま本棚にしまってしまうのは勿体ないので、なんとかしようと思います。

で、思いついたのがlibusbを使って直接付録基板と通信してみる。Windows用のデバドラは仮想COMポートとして実装されています。恐らくシリアルデータはバルク転送を使って行われているはずです。エンドポイントはデバイスのコンフィグレーション一覧から知ることができるので、libusb経由で該当エンドポイントに対してバルク転送で読み書きしてやれば、シリアルデータの送受信ができるはずです、たぶん。。

早速、試してみる。

1.libusbのインストール
http://libusb.wiki.sourceforge.net/からlibusb-0.1.12.tar.gzをダウンロードしてきます。展開して次のコマンドを入力。

% ./configure
% make
% sudo make install

2.テストコード
Linux工作室のlibusbについてを参考にテストコードを書く。とりあえず、改行コードを送って、デバイスのスタートアップメッセージを受信してみる。処理内容はこんな感じ(全ソースコードは続きを読むで)。
  • libusb初期化
  • ベンダID、プロダクトIDでデバイス検索
  • デバイスオープン
  • コンフィグレーション、インターフェース設定
  • stdinからの入力待ち
  • 0xaを0xdに変換する
  • 入力された値をWrite(バルク転送:EP2:0x02)
  • デバイスからRead(バルク転送:EP1:0x81)
  • stdinからの入力待ちに戻る

3.結果
うーん。。何度改行コードを送っても、スタートアップメッセージが受信されません。。バルク転送がうまくいっていると仮定してトラ技BIOSのコードを読むと、
  • USBステータス確認
  • 改行コード入力待ち
  • スタートアップメッセージ送信
となっている。USBステータスの確認で止まっていそう。デバイスオープンの後にコントロール転送で何らかの操作が必要なのかもしれん。。

該当の記事は見つかりませんでした。