AndroidのJavaScriptはSquirrelFishだったのか

この年末年始のうちに、なんとか、Android 1.0をSL-C860で動かしたいなあ、と思っている。
久しぶりに情報を集めてみていると、すでにAndorid 1.5とかゆうものへ移行しようとしているとか。そのブランチcupcakeってのがあるって話。
で、cupcakeブランチの解説を見てみると、なんかいろいろ新しくなっているらしい。
http://source.android.com/roadmap/cupcake
その中で、Webに関して、JavaScriptエンジンがWebKitの新しいエンジンであるSquirrelFishになっているらしい。へー。てっきり、AndroidのJavaScriptエンジンはGoogle V8になるんだと思ってた。ということで、AndroidはWebに関してはiPhoneと高い互換性があることになるのかな。
じゃあ、cupcakeブランチを試そうか、と思ったら、すでにmaster(本線)へマージ済みとのことで、ブランチをチェックアウトする必要はなかった。ラッキー。実際、久しぶりにチェックアウトしたソースコードの中で、 external/webkit/JavaScriptCore/ の部分にはSquirrelFishという文字列が見つけられた。SunSpiderまで入ってるし。これ、JavaScriptエンジンのshellも作れるのかな?

Eee PC 1000H 導入

嫁さんのノートを買い換えたいと思いつつ1年近く経ってしまったが、ついに、Eee PC 1000Hに買い換えましたとさ。
ヤマダ電機で思いの外に安かったので。
これまでのノートパソコンは13インチXGA、Pentium II 366Mhz、192MB RAM、Windows 2000、8GB HDDとゆう約10年前の構成だったのだけれど、これが画面以外は大幅にパワーアップ!
Windowsの起動がめちゃくちゃ速くなった。すばらしい。とゆうか、会社で使ってるCore 2 DuoのPCより速い感じがするよ。キーボードの操作性も悪くないし、こりゃいい買い物だった。自分用にも欲しいぐらい。

Google V8 JavaScript Engineを試す

興味本位で、Google Chromeに搭載されているV8と呼ばれるJavaScriptエンジンを試してみた。
CentOS 5.2上でビルドは簡単に通った。sconsをインストールしないといけないけど。
まず、sconsでビルドしたら、実行ファイルが見あたらない。
なにやら、scons sample=shell とやらないと、実行ファイル(shell)ができないらしい。
で、shellができたので、実行してみると、名前の通りshellだった。
JavaScriptのコマンドを実行すればいいのだろう、と、「print(“Hello”);」とやったら、「Hello」と出た。一応、JavaScriptが動いた様子。
さて、どうやって使ったらいいのかな、これ?

Androidのソースコード公開

Googleの携帯電話プラットフォームAndroidのソースコードが公開。
http://source.android.com/
いままではカーネルとWebKitなど一部が公開されていたようだけれど、Project LayoutとGitWebを見ると、dalvik VMなどまで公開されている。これ、ホントにすべて公開されているんじゃ?
すでにザウルスでもAndroidが動いているけれど、今回のソースコード公開で、さらに完全なザウルス向けAndroidが登場してきそうだなあ。
ビルドするにはHDDが6GBいるらしいので、今使ってるVMの8MBでは足りないねえ。HDDを増量するところからやらないといけないか。
D01NXも、やっぱり、Androidで動かすことを検討した方がよさそうだなあ。

D01NXドライバはロードされる?

ふと、SL-C860に、SL-C3x00/1000用のD01NXドライバを入れて、カードを挿したときの挙動を見てみた。
デバッグを有効にしたカーネルを作って、SL-C860に焼き込み、syslogを起動しておいて、カーネルのログを出力させてみたところ、
usb.c: registered new driver hub
hub.c: usb_hub_thread exiting
usb.c: deregistering driver hub
ds: instance is NULL
というログが得られた。
dsのログは、自分で追加したもの。カードサービスの登録に失敗する理由を探るために入れていたもので、ドライバのインスタンスがないから登録できないよ、ということ。
しかし、ドライバは2.4.20用なのだけれど、SL-C860のカーネルはバージョンの違いなどおかまいなしにロードしようとしている様子。これは、SDカードドライバがプロプライエタリなので、それを読み込ませるための細工なのかしら。(確か、標準ではGPLドライバしかロードしなかったような)
ここで思った。hub.cがエラーを返している、ということは、usbcoreに互換性の問題があるからではなかろうか、と。となれば、usbcoreを2.4.20用のものからバックポーとしてしまえば、いいんじゃないかしら?と。
でも、先ほどのログは、usbcoreがロードされていなかったために起こったのかもしれない、と思った。
試しに、usbcore をmodprobeしておいてからカードを挿したときのログは、
usb.c: registered new driver hub
ds: instance is NULL
となっていた。少なくとも、hub.c: usb_hub_thread exiting のエラーはなくなった。
いや実際は、先にエラーが出て消えているだけかもしれないけれど。
もう少し詳しく見るには、usbcore にデバッグログを仕込むことかな?
ちなみに、カードを取り出したあと、lsmod をしてみると、usbcoreは消えていた。vmb_usbにつられて削除されたらしい。

D01HW アウトレット復活

USBタイプのイー・モバイルデータカードD01HWのEMチャージ用アウトレットが100台限りで復活。
ああ悔しい。
職場の後輩は「絶対来ると思っていた」と申し込んだとさ。
さすがに、もう一本買うってのもばかばかしいので、D01NXでがんばろう。
それに、SL-C860で使う、という目標があった方が面白いし。
そんなに頻繁に使うわけでもないしねえ。
なんていってたら、1万円分の利用料、使い切れるかな?
でも、EmOneが欲しいなあ、と思う今日この頃でもあったり。

D01NXドライバをのぞいてみる

PCMCIAカードサービスを作るための下準備はできた。
しかし、これをどうUSBホストアダプタとして作ればいいのやら?
USB関連の関数をなんか呼ばなくちゃならんのだろう、とゆうことはわかるのだけど、どの関数を呼べばいいのかな?
ということで、まずは、既存のD01NX用vmb_usb.oをarm-linux-nmで解析。stripされていないから、シンボルが残っていてありがたいなあ。
USB関連のAPIは以下のものが使われている様子。
U usb_alloc_bus
U usb_alloc_dev
U usb_check_bandwidth
U usb_claim_bandwidth
U usb_connect
U usb_deregister_bus
U usb_disconnect
U usb_free_bus
U usb_free_dev
U usb_new_device
U usb_register_bus
うむ、よくわからん。
RFX-CF1のドライバのソースコードでも見た方がわかるかな?
一方、arm-linux-stringsで文字列リソースをのぞいてみたところ、
../vmb_usb_cs.c
../vmb_usb_hcd.c
というのが見つかった。
VMB5000のドライバが、vmb_csとvmb_hcdからできていたけれど、やっぱり同じソースからできているのかな?

D01NXが届いた

EMチャージでD01NXが届きましたよ。
さっそく、SL-C860にイー・モバイルからドライバをダウンロードして、再起動してから刺してみたけれど、CFアイコンすら出ない。
カーネルにusbcoreとacmを組み込んだものを使っても、うまくいかない。地球アイコンが出てこないから、接続も出来無い。
やはり、SL-C860で動かすには、2.4.18用にドライバを作るしかないのかね?
とりあえず、pcmcia-csのdummy_csからダミーのドライバを作ってみた。
D01NXを刺したら、ダミーのドライバを読み込むところまではできた。
ここから、vmbの2.6用ドライバを参考にして、USBドライバに仕立てていけばいいのだが、簡単にはいかないだろうなあ、いくら、ソースがあるとはいえ。
ところで、EMチャージの時は、APNとやらを標準のものから変えないといけないらしいが、ザウルスでのAPN設定方法が書いてないけれど、どうしたらいいんだろう?

D01NX注文

イー・モバイルのオンラインストアでEMチャージで注文した。11980円で10000円分のチャージ付きのキャンペーン価格。本体実質1980円。
イー・モバイル端末さえあれば、SIMカードの入れ替えでプリペイドに使えるらしいので、D01HWの白ROMでも探せば…(苦笑)
と、白ROMでググったら、D01NXの白ROMを6000円で買い取ってくれるところがあったわ。D01HWも同じ値段と言うことは、そんなに安く白ROMは転がっていないか。
支払い方法が代引きのみ、ってのが面倒だなあ。でも、ヤマトだから代引きにクレジットカードが使えるのか。念のため、現金をおろしておいた方がいいかな?

D01NXを購入しようかな

嫁さんの実家がBフレッツをやめてしまった。
今度、お留守番に行くことになっているのだが、その間、ネットにつなげなくなってしまう。
近くには無線LANを使ってそうな人たちもいるのだが、さすがに、WEPを解析してパスフレーズを手に入れて、ただ乗りするってのは犯罪になってしまうので、それはやめておこう。
FONネットワークでもないかしら、と探してみたけれど、ちょっと離れたところにあった。路上でアクセスしてるのも怪しいしなあ。
Netbookを買うついでに、イー・モバイルを契約する、という選択肢もありかな、と思ったのだけれど、スポットで使うだけにしては高いなあ、と。ミニマムの無料通信分だけでは3MB程度じゃないですか。これなら、契約増やすより、
一方、イー・モバイルにはエムチャージとかゆうプリペイドサービスがあるらしい。1日630円で使い放題。使い方によっては、長期契約より安くていいね。
アウトレットでUSBタイプのが端末実質1980円と安くて良さそうだったので、買おうかな、と思っていたら、買おうとしたときには売り切れていた。毎度こんなのばっかりだなあ。
今売ってるのは端末実質7980円。下り速度は上がるけど、ほとんどワンタイムで使うだけだしなあ。
と、考えていて、ふと、CFタイプのがあることに気づいた。
メインマシンはMacBookなのでCFは使えない。けれど、嫁さんのノートPC(Actius PC-A800、シャープの北米モデル)がPCMCIAスロットを備えている。Pentium II 366Mhzの貧弱ノートだけど、テンポラリにはいいんじゃない?と思った。
さらに、CFならザウルスSL-C860もあるじゃないか!前に、bitWarpを使っていたときに、iptableを書き換えて、ザウルスをルーターにしたて接続をした、ということがあったけど、同様にすれば、CFスロットのないMacBookでもイー・モバイルが使えるジャン!とゆうか、ザウルス単体でもたいていの場合オッケーじゃないかしら?ああ、じゃあ、これでいこうかな、と思った。
イー・モバイルのページには動作確認済みザウルス、と書いてあるので、こりゃ大丈夫だろう、と思っていたら、SL-C3000以降のUSB搭載ザウルスのみ動作確認済み、とのこと。なんでかしらん?
ぐぐってみても、SL-C860での動作実績は見あたらず。
ドライバのipkを展開して、中身を見てみたら、libusbが入ってる。単純なシリアルデバイスではないのね、これ。PCMCIA->USB->シリアルと変換しているらしい。
再びググってみると、いろいろ試している方々がいるらしい。
わかったこととしては、公式公開されているドライバは、4桁ザウルスに搭載されているKernelが2.4.20なのに、SL-C860に搭載されているのが2.4.18であるために、ドライバが正しく動作できなさそう、ということ。usbcore.oがあれば、とりあえず、ロードまではできるらしいのだが。vmb_usbというドライバさえ、2.4.18環境でビルドされれば、動くであろう、ということ。
vmb_usbの開発元が2.6系カーネルのドライバソースコードを公開しているようなので、これを、2.4.18にバックポートできれば、動作も可能になるんだろうけど。
ふと思ったのだけれど、公式ドライバを動作させるには、4桁ザウルスと同じ2.4.20カーネルを入れたらいいんじゃない?ということ。ざっと見た感じでは、2.4.20カーネルをSL-C860に入れる、というアプローチをとっている人はいなさそう。できるのかな、カーネルのアップデート?ザウルス用カーネルに、パッチで2.4.18->2.4.20にしたらビルドできないかな?いや、4桁ザウルスのカーネルをSL-C860用にビルドできないのかな?できそうだよなあ。
オラ、ワクワクしてきたぞ!
なんか、挑戦がいのあるデバイスだなあ。
きっと、挑戦している間に、誰かがオリジナルカーネルで動くドライバを作ってくれそうだけど(苦笑)、楽しめそうな気がする。カーネルビルドの練習にもなるかな。
ということで、買ってみようかな。
なんか面白そうだし。
とりあえず、Windows 2000で使えるんだし。
ところで、これ、USBシリアルのコンバータが入ってるってことは、分解したら、PCMCIA-USBのチップと、USB-シリアルのチップと、モデムチップの3構成になってたりしないかしら?後段2つは今時1チップだろうけど、USBの口が出ていそうな気がする。USBの信号線が取り出せたら、そのままUSBデバイスにできないかなあ、とか、逆に、ザウルス用のUSBカードにできないかなあ、とか。