optusb for Mac OS X


1. はじめに

2003年 の夏頃,試行錯誤して動かした libusboptusb だが,再度,Mac OS X 10.3 上で動かしてみた。

(1) libusb

今度は,CVS の調子もよく,無事,最新版のソースを入手できた。
特に何も修正することなく,普通にビルド,インストールすることができた。

(2) optusb

作者の西田さんが,send_file() にバグを発見し,修正されたとのことで,早速最新のアーカイブ(1.01)を入手し,追従しようとした。しかし,アーカイブ内に optusb のソースが入っていなかった。メールで問い合わせたが,お忙しいのか,お返事をいただけていない(書籍版には同梱されていると期待)。 → 期待通り,書籍版ではソースが同梱されていた。
修正内容は想像ができるので,とりあえず,本家 1.01 相当になるように修正してみた。
また,ブートケーブル開発元のオプティマイズが提供している btcons_usb のソースを見て,できるだけ同じ処理になるよう,ウェイト処理を追加したり等,修正してみた。
 → 西田さんも wait を追加されていた。ただ,send_magic() のエンディアン問題は対策されていなかったので,ここだけパッチを当てる必要がある。書籍版に同梱の optusb 1.01 ベースのものを optusb + darwin release 2 として公開した(2003/12/22)。
こ れで,おおむね動作しているが,なぜか,転送には成功し た,と表示されるにも関わらず,実際にはプログラムが実行されないという現象が起こる事がある。 btcons_usb を参考に,色々と試したが,まだ原因はわかっていない(libusb の問題かも...)。この状態になったら,下記のようにケーブルの抜き差しで回復されたい。
最新の CVS 版 libusb で試したところ,動作が安定しているように思われる。アップデートしたほうがよいだろう。最新の libusb とリンクしたものを optusb + darwin release 3 として置いておく(2004/06/19)。

UNIXUSER の連載の最初の方にある,小さいプログラムを転送した場合に動作が不安定に思えたので調べてみたと ころ,マルチブートによって転送できる最小プログラムサイズは 256 バイトであるとの事だった。また,最大プログラムサイズは 256KB (0x40000) ではなく 256KB より 192 byte 小さい 0x3FF40 バイトとの事だった(ヘッダサイズ分小さい?)。
ひょっとすると,ブートケーブル USB でブートした際は(ブートケーブルの内蔵マイコンから転送された2次ローダを使ったローディングになり)通常のマルチブートの制限はないのかも知れな い...が,念のためこれらの制限に対応した optusb を optusb + darwin release 4 として公開する(2004/08/16)。

2. 準備

まずは,Mac OS X 10.3 に付属の開発環境(Xcode)をインストールしておこう。

3. libusb (CVS版のインストール)

ターミナルの画面から,以下ようなの手順で,インストールする。

(1) フォルダの作成

$ mkdir src
$ cd src
$ mkdir libusb-stable
$ cd libusb-stable

(2) CVS ログイン

$ cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/libusb login
(Logging in to anonymous@cvs.sourceforge.net)
CVS password: (リターンキーを押す)

(3) CVS チェックアウト(ソースの取得)

$ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/libusb co libusb
cvs server: Updating libusb
U libusb/.cvsignore
(中略)
U libusb/tests/.cvsignore
U libusb/tests/Makefile.am
U libusb/tests/testlibusb.c

(4) コンフィグレーション

$ cd libusb
$ ./autogen.sh
I am going to run ./configure with no arguments - if you wish
to pass any to it, please specify them on the ./autogen.sh command line.
You should add the contents of `/usr/share/aclocal/libtool.m4' to `aclocal.m4'.
WARNING: Using auxiliary files such as `acconfig.h', `config.h.bot'
WARNING: and `config.h.top', to define templates for `config.h.in'
WARNING: is deprecated and discouraged.
(中略)
config.status: creating usb.h
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing default commands

Now type 'make' to compile libusb.

(5) ビルド

$ make
make  all-recursive
(中略)
creating testlibusb
Making all in doc
make[2]: Nothing to be done for `all'

(6) インストール

$ sudo make install
Password:(管理者ユーザのパスワードを入れる)
Making install in .
/bin/sh ./mkinstalldirs /usr/local/bin
(後略)

4. optusb のインストール

下記のような手順で,/usr/local/bin にインストールする。

(1) アーカイブをダウンロードする。

このページの下の方に,アーカイブへのリンクがあります。

(2) アーカイブを展開する。

$ tar zxvf optusb-1.01.darwin.rel4.tar.gz

(3) インストールする。

$ cd optusb-1.01+darwin-rel4
$ sudo make install

5. 使い方

例:dots.bin を実行する
$ optusb dots.bin
      === optusb v1.01+darwin rel.4 ===

   Source file = dots.bin
  Program size = 48
        Status = Successfully transferred.

6. ダウンロード

optusb 1.01 + darwin (ソース + コンパイル済みバイナリ)
optusb 1.01 + darwin release 2 (ソース + コンパイル済みバイナリ)
optusb 1.01 + darwin release 3 (ソース + コンパイル済みバイナリ)
optusb 1.01 + darwin release 4 (ソース + コンパイル済みバイナリ)

libusb-stable (2003/11/21 のCVS版ソース(stable)をコンパイルしたバイナリ libusb-0.1.4.3.1)
libusb-stable (2004/06/19 のCVS版ソース(stable)をコンパイルしたバイナリ libusb-0.1.4.4.1)

7. 参考リンク



Back to Home

Copyright (C) 2003,2004 by cube