« 2004年12月 | メイン | 2005年02月 »

2005年01月27日

クロックアップ後のバッテリ駆動時間
LinuxZaurus/Kernel

とりあえずグラフだけです。
説明は後で書きます。

20050126_chkclk.png

(追記)
…ということで説明です。
ここで作ったカーネルにてCPUのクロックアップすることが出来ます。
たとえば以下コマンドを実行することでCPUのコアクロックを624MHz、
バスクロックを312MHzにすることが出来ます。

# su
# echo 0f > /proc/zaurus/VCORE
# echo 2000218 > /proc/zaurus/CCCR

標準状態でコアクロック412MHz、バスクロック208MHzですから理論的に1.5倍速くなっており
体感的にも速くなったことを感じることができます。
しかしクロックアップすればそれだけCPUへの負担が大きくなり、
バッテリ駆動時間に影響を与えます。
そこで今回は具体的にどれだけ駆動時間が短くなるか確認してみました。それが上記グラフです。
コアクロック412MHz、バスクロック208MHzにしている以外の条件は以前と同じです。

結果として標準状態では3時間半ぐらい保っていたのが
2時間以下と半分程度の駆動時間になっています。
90%から始まってますがどうやら満充電電圧レベルが低くなっているようです。
おそらく電流値が高くなったために全体的に引っ張られているのだと思います。
またデータ取得後すぐにACアダプタを取り付けて起動しようとしましたが
リセットを押さないと起動しなくなりました。
バッテリ消耗量が著しいためサスペンドすることが出来なかったのか
サスペンド状態を維持する電力が増えたことによるものなのか原因は不明です。

これが許せるか許せないか人によって異なりますが、
個人的には重いアプリをつかうことはあまりないので標準状態で使っていくことにします。

01:12 | コメント (0) | トラックバック

2005年01月26日

WLCFL-11のその後
LinuxZaurus/HardWare

無線LANカード(WLCFL-11)ですが今でも順調に動いてます。
ただ通信中にとてつもないほどカードが熱くなります。
体感温度として50℃ぐらいでしょうか。

ここの仕様を見ると最大電流320mAとなっています。
じゃあ他のカードはどうなのだろうとりなざうテクノウさんのを参照してみたのですが、
最大電流だけを見ると、どうやらこれでも低いほうのようです。
PCMCIAタイプの無線LANカードではそんなに熱くならなかったのですが、
CFタイプの無線LANカードだと、こんなに熱くなるものなのでしょうか。

う−ん、これだけ熱いとバッテリ動作時間への影響よりもバッテリ劣化への影響が気になります。
最近の11gチップを11bのみで動かせば結構消費電力を押さえられる気がします。
どこか作ってくれませんかね。

23:29 | コメント (0) | トラックバック

2005年01月25日

Windowsからext3のストレージにアクセス
LinuxZaurus/Customize

前回はSL-C3000の/hdd3をvfatからext3に変換しました。
今度はWindowsからext3のストレージとしてアクセスする方法について書きます。
今回はここにあるexplore2fsを使ってみます。
このexlore2fsは以下のような特徴を持っています。

  • ドライバ不要でアクセス可能
  • Windowsのエクスプローラライクの操作

まず下準備をします。

  • このファイルをSL-C3000の/hdd3/Documents/に置きます
  • 以下コマンドを実行します
    # su
    # mount -o remount,rw /dev/root /
    # cd /etc/hotplug
    # mv usbdstorage.agent usbdstorage.agent.vfat
    # cp /hdd3/Documents/usbdstorage.agent.ext3 usbdstorage.agent

では実際につなげてみます。

  • PCリンクの設定にて「USBストレージ方式」「本体ディスク」を選択します。
  • PCとSL-C3000をUSBケーブルで接続します
  • 以下のファイルをダウンロードして展開します
    explore2fs-1.00pre6b.zip
  • 展開されたファイルからexplore2fs.exeを実行します
  • 左フレームのhda0,hda1などが表示されますので[+]をクリックします
    20050125_explore2fs_1.png
  • そうすると/hdd3のフォルダが展開されます
  • ファイルを見たいフォルダをクリックすると右フレームにファイル一覧が表示されます
    20050125_explore2fs_2.png
  • 読み込みたいファイルの上で右クリックし[Export file]を選びます
  • 格納先フォルダを選択して「保存」します

explore2fsからアクセスはかなり遅くなります。
ただext3化したSL-C3000でもUSBストレージとして使うことができますので
緊急時のアクセス手段として利用してみてはいかがでしょうか

(補足1)
もし/hdd3をext3からvfatに戻した場合は以下コマンドを実行します。

# su
# mount -o remount,rw /dev/root /
# cd /etc/hotplug
# mv usbdstorage.agent usbdstorage.agent.ext3
# cp /hdd3/Documents/usbdstorage.agent.vfat usbdstorage.agent

(補足2)
少しバージョンが下がりますが、ここのパッチを利用するとexplore2fsの日本語化が出来ます。
20050125_explore2fs_j.png
結構めんどくさいのでパッチを当てたファイルを置いておきます。
explore2fs-1.00pre5j.zip
日本語化だけではなく、[表示]→[設定]→[書き込みを許可]をチェックすることで
書き込みも可能となります。ただし危険を伴う可能性はありますので十分注意してください。

23:01 | コメント (0) | トラックバック

2005年01月24日

VFATとext3
LinuxZaurus/Customize

SL-C3000では/dev/hda3がVFAT(fat16/32)パーティションとして/hdd3にマウントされています。
これを一般的に信頼性の高いフォーマットであるext3に変更することが可能です。

以下VFATからext3への変換手順です。

  • /hdd3/以下のファイルをバックアップに取ります(dict1,dict2は付属CDにあるので不要です)
  • このファイルをSL-C3000の/hdd3/Documents/に置きます
  • 以下コマンドを実行します
    # su
    # mount -o remount,rw /dev/root /
    # cd /root/etc/rc.d
    # mv rc.rofilesys rc.rofilesys.vfat
    # cp /hdd3/Documents/rc.rofilesys.ext3 rc.rofilesys
    # umount /hdd3
    # mkfs.ext2 -j /dev/hda3
    # reboot

  • 正常に立ち上がることを確認します。
    もし途中で止まった場合はCtrl+Cを押して入力ミスなどが無いか確認してください。
  • 問題なければ/hdd3以下をリストアします。

以下ext3からVFATへ戻す手順です。

  • /hdd3/以下のファイルをバックアップに取ります
  • 以下コマンドを実行します
    # su
    # mount -o remount,rw /dev/root /
    # cd /root/etc/rc.d
    # mv rc.rofilesys rc.rofilesys.ext3
    # cp rc.rofilesys.vfat rc.rofilesys
    # umount /hdd3
    # mkfs.vfat -F 32 /dev/hda3
    # reboot

  • 正常に立ち上がることを確認します。
    もし途中で止まった場合はCtrl+Cを押して入力ミスなどが無いか確認してください。
  • 問題なければ/hdd3以下をリストアします。

ただ問題はext3に変換するとPCとUSBでつなげたときに
標準でストレージとして使用することが出来なくなります。
まぁWindowsからext3にアクセスするソフトを利用すればアクセスできますけど。
そのあたりの話は次回にします。

21:28 | コメント (0) | トラックバック

バッテリ残量をより詳しく
LinuxZaurus/Kernel

SL-C3000のバッテリ残量ですが
100% → 75% → 50% → 25% → 5% → 0%
とかなりおおまかな値で減っていきます。

そのため、あとどれぐらい使えるのか判断しづらく、
50%残っているかと思ったら10分もせずにバッテリが無くなることもありました。
また逆に100%といっても本当に満充電されているのか判断しづらいです。

そもそもこのバッテリ残量は正確なのでしょうか?
気になりましたので以下のような実験をしてみました。

満充電のSL-C3000を無線LANに接続し、以下のスクリプトを実行する。
そのままバッテリがなくなるまでサスペンドせず、LCDは点いたままにする。

#!/bin/sh -f

while [ -e /proc/apm ]; do
cat /proc/apm;
date;
sleep 10;
done

以下がスクリプトのログをとり集計した結果です。
20050123_chkorig.png

縦軸がバッテリ残量、横軸が経過時間を表してます。
本来であれば左上から右下に比例的に変化していくべきなのですが、
理想とはかけ離れた結果になってます。

そこでカーネルの一部を修正し、100%〜0%まで2.5%刻みで変化するように修正しました。
このときバッテリ残量とバッテリ電圧が比例するように設定してあります。
以下がこのカーネルでの実験結果です。
20050123_chklinear.png

かなり理想に近くなりましたが、35%付近で急激にバッテリ残量が無くなってます。
そこでバッテリ残量とバッテリの関係を非線形に設定してみました。
以下が結果です。
20050123_chkcustom.png

まだ理想とは違っていますが、今回はこれでよしとしておきます。
時間があればさらに調整して、残時間を算出できるようにしたいと考えてます。

ちなみに今回修正したカーネルでもバッテリアプレットは正常に動作しました。
20050123_scrn.png

一応以下に今回の成果物を残しておきます。

(念のため)
今回のカーネルの修正はバッテリの保ちを長くするとかそういった修正はしてません。
また今回の実験は私の個人的な実験であり、上記パッチ、カーネルを利用したことによる
不具合など一切責任は負いかねます。
一応私のところでは順調に動いてますが今回私の持ってるSL-C3000に合わせて
設定しているためたとえ同じSL-C3000であっても個体差、バッテリのへたりなどにより
バッテリ残量の表示が98%から始まるなどの現象が出るかもしれません。

SL-C3000色々いじりがいがあって面白いです。

00:37 | コメント (0) | トラックバック

2005年01月19日

NetFrontのホームページ
LinuxZaurus/Customize

NetFrontなどのブラウザのホームページには通常よく利用するサイトを登録するのですが、
私は以下のようなHTMLファイルを作り、ホームページとして登録することで
google検索、路線探索などが容易にしています。
20050119_1.jpg

以下登録手順です。

  • このHTMLファイルをSL-C3000の/hdd3/Documents/Web_Files/にコピーします
    (ザウルスドライブで接続した場合は\Documents\Web_Filesの下にコピーしてください)
  • NetFrontを起動します
  • 「ツール」メニューの「ブラウザ設定」にて「ホーム」タブを選択します
  • 以下項目を入力します
    file:///hdd3/Documents/Web_Files/home.html

    20050119_2.jpg
  • NetFrontを起動し直してホームページが表示されることを確認します

各検索サイトへのショートカットをよせあつめただけですが、結構便利です。

12:41 | コメント (0) | トラックバック

2005年01月18日

無線LANカード(WLCFL-11)
LinuxZaurus/HardWare

corega製無線LANカード(WLCFL-11)を購入しました。
特にドライバなどをインストールせずにSL-C3000にて使うことができました。

で、ftp(35Mbyteのファイル転送)にて速度を計測してみました。

PC→SL-C3000(KB/s)SL-C3000→PC(KB/s)
無線LAN接続514492
USBネットワーク接続669492

・・・どうやらディスクアクセスで頭打ちになっているようです。
ただ、転送開始時のレスポンスはUSBの方が速いので
WEBブラウザ上での体感速度はUSBの方が上です。

22:57 | コメント (0) | トラックバック

UNRAR
LinuxZaurus/Software

必要に駆られてunrarをコンパイルしました。
パッケージを置いておきます。


以下のようにオプション無しで起動すると使い方が表示されます。

# unrar
UNRAR 3.40 freeware Copyright (c) 1993-2004 Alexander Roshal

Usage: unrar <command> -<switch 1> -<switch N> <archive> <files...>
<@listfiles...> <path_to_extract\>

<Commands>
e Extract files to current directory
l[t,b] List archive [technical, bare]
p Print file to stdout
t Test archive files
v[t,b] Verbosely list archive [technical,bare]
x Extract files with full path

<Switches>
- Stop switches scanning
ad Append archive name to destination path
ap<path> Set path inside archive
av- Disable authenticity verification check
c- Disable comments show
cfg- Disable read configuration
cl Convert names to lower case
cu Convert names to upper case
dh Open shared files
ep Exclude paths from names
ep3 Expand paths to full including the drive letter
f Freshen files
idp Disable percentage display
ierr Send all messages to stderr
inul Disable all messages
kb Keep broken extracted files
o+ Overwrite existing files
o- Do not overwrite existing files
ow Save or restore file owner and group
p[password] Set password
p- Do not query password
r Recurse subdirectories
ri<P>[:<S>] Set priority (0-default,1-min..15-max) and sleep time in ms
ta<date> Process files modified after <date> in YYYYMMDDHHMMSS format
tb<date> Process files modified before <date> in YYYYMMDDHHMMSS format
tn<time> Process files newer than <time>
to<time> Process files older than <time>
ts<m,c,a>[N] Save or restore file time (modification, creation, access)
u Update files
v List all volumes
ver[n] File version control
vp Pause before each volume
x<file> Exclude specified file
x@ Read file names to exclude from stdin
x@<list> Exclude files in specified list file
y Assume Yes on all queries

ソースはここで見つけました。

21:32 | コメント (0) | トラックバック

2005年01月12日

時刻合わせ
LinuxZaurus/Software

SL-C3000の内部時計が1時間ほどずれました。
バッテリが空の状態で放置していたことが原因なようです。
SL-C3000にはRTC用の電池とか積んでないのでしょうか?
まぁ、良い機会なので時刻合わせ環境を構築してみることにしました。

まずどんとこいタイムをインストールしてみました。
ペン操作でボタンをクリックするだけでntpにより時刻合わせをおこなってくれます。
またネットワークの接続も自動でおこなうことができ、直感的に判りやすく、使いやすいです。

ただ私はずぼらですので、出来れば何の操作もせずに時刻を合わせてほしいのです。
そこで今回はntpdateを使うことにしました。

ZaurusArchiveさんよりntpdateのパッケージを持ってきてインストールします。

  • ntpdate_ntp-4.1.1b-z-4_arm.ipk

あとは実行スクリプトをどこに書くかですが、私はPHSカードからしかネットに接続しませんので
/home/etc/ppp/ip-upに以下スクリプトを追記することにしました。

if [ -e /usr/bin/ntpdate ]; then
ntpdate clock.nc.fukuoka-u.ac.jp
fi

これでネットに接続するたびに時刻合わせがおこなわれるようになりました。

(追記です)
上記NTPサーバーに指定している福岡大学の福岡研究室では
アクセスが集中しすぎて困っているようです。
「個人のPCが直接我々のサーバーへ問い合わせすべきではない」
とのことなのでここらあたりを参考にして他サーバーを利用してください。

23:04 | コメント (0) | トラックバック

2005年01月11日

kernelの修正・ビルド
LinuxZaurus/Kernel

SHARPよりカーネルソースが公開されました。
これによりエンドユーザーにてカーネルをコンパイルして使うことができるようになりました。
で、てつさんのHPにてspecial kernelとして様々なパッチを当てたカーネルを公開されてます。
それを使ってみたのですが一部ソフトでレジュームがうまくいかないという現象が出たため
パッチを一部だけあてたカーネルを作ることにしました。

まずSHARPよりカーネルソースなどを持ってきます。

updater.sh.c3000はupdate.shに名前を変更しておいてください。

てつさんのホームページよりパッチを持ってきます。(必要なぶんだけ)

  • P01-C3000-clockup_041203.patch
  • P02-C3000-voltage_041204.patch
  • P05-C3000-TSPRESSURE_041207.patch
  • P06-C3000-WRITETS_041206.patch
  • P07-C3000-KBDDEV_041206.patch

あとはcoLinuxの端末にて以下コマンドを実行し、カーネルを修正します。

# bzcat linux-c3000-20041116-rom1_01.tar.bz2 | tar xvf - 
# cd linux
# patch -p2 < P01-C3000-clockup_041203.patch
# patch -p2 < P02-C3000-voltage_041204.patch
# patch -p2 < P05-C3000-TSPRESSURE_041207.patch
# patch -p2 < P06-C3000-WRITETS_041206.patch
# patch -p2 < P07-C3000-KBDDEV_041206.patch
# make menuconfig

ここでメニューが表示されるので以下項目を有効(*)にします。

  • System Type ---> Use clock change(cccr_change) enable
  • System Type ---> Core voltage change enable
  • Character devices ---> SL-series touchscreen pressure value read
  • Character devices ---> Boot On touchscreen pressure value read
  • Character devices ---> SL-series write ts data
  • Character devices ---> Use Keyboard device file

ついでに以下を無効( )にします。

  • Console drivers ---> Frame-buffer support ---> SHARP LOGO screen support

で、Exit、Yesと選んでメニューを終了し、コンパイルします。

# make dep;make clean;make zImage

これでarch/arm/boot/zImageにファイルができあがります。

あとは以下手順にてカーネルをSL-C3000に入れます。

  • 出来たzImageとupdate.shをSDカードか、CFカードに入れます
  • ACに接続したSL-C3000にそのメディアを差し込みます
  • 裏蓋を外して、バッテリを外します
  • 10秒程度待ってからリセットボタンを押します
  • バッテリを元に戻して、裏蓋も取り付けます
  • OKを押しながら電源ONします
  • 「アップデート」を選択します
  • カーネルを入れたメディアを選択します
  • 「please reset」と表示されたら裏蓋を外してリセットを押します
  • 電源ONしてカーネルが立ち上がることを確認します

で、そのレジューム問題ですがsnes9xにて電源on/offを繰り返すと音が出なくなる現象でして、
以上で作ったカーネルでは問題ないようです。
何が影響している気になりますが調査は後日とします。

15:51 | コメント (0) | トラックバック

2005年01月08日

SL-C3000でSLが走る!
LinuxZaurus/Software

昔懐かしのlsコマンド入力ミス矯正ソフトです。
ipkの作り方勉強がてら作ってみました。
sl_3.03_arm.ipk
ターミナルで以下のようにコマンドを入力してください。

# sl

そうすると画面いっぱいにSLが走り出し、その間何もできなくなります。
20050108_1.JPG

あと以下のようなオプションを付けると
LOGOの機関車になったり、
アクシデントが起きたり、
飛んでいったり(!)します。

# sl -l
# sl -a
# sl -F
組み合わせることも出来ますので試してみてください。

PCの端末は近年速くなり、矯正ソフトとしてあまり意味がありませんでしたが、
SL-C3000だとかなり動作が遅いので矯正ソフトとして役にたちます(苦笑)

オリジナルはこちらを参照してください。
http://www.tkl.iis.u-tokyo.ac.jp/%7Etoyoda/

14:37 | コメント (0) | トラックバック

2005年01月06日

SL-C3000でUSBメモリを使う
LinuxZaurus/HardWare

SL-C3000にはUSBポートがあり、ホストとしても、クライアントとしても動作します。
ただ通常PCで使われるUSB機器とはポートの形状が異なるため、専用のケーブルが必要です。
私はPocketGamesにて購入しました。

届きましたので早速手持ちのUSBメモリ(EasyDiskPlatinum 256M)を使ってみました。
20050106_1.jpg

まずこのケーブルとUSBメモリを接続します。
あとはターミナル上で以下コマンドを実行します。

# su
# bash
# mkdir /mnt/usbmem
# mount -t vfat -o umask=000,noatime,iocharset=euc-jp,codepage=932 /dev/sda1 /mnt/usbmem

(注意)これはターミナルの漢字コーディングがEUCの場合です。
SJISの場合はeuc-jpの部分をsjisに変更してください。
UTF-8の場合はeuc-jpの部分をutf8に変更してください。

これで/mnt/usbmem以下にてUSBメモリにアクセスすることが可能です。
使い終わったあとは以下コマンドを実行してからUSBメモリを抜いてください。
# umount /dev/sda1

詳細は以下に載ってますので参照すると良いでしょう。
http://pc.watch.impress.co.jp/docs/2004/1122/pda39.htm

23:47 | コメント (0) | トラックバック

coLinuxの環境構築(クロスコンパイル環境2)
LinuxZaurus/Develop colinux

まず最初に前回は要らないと書いたtmake-sharp.tar.gzですが、
見つかりましたので以下にリンクを張っておきます。
tmake-sharp.tar.gz

今から落としたパッケージをインストールするわけですが、その前に*.rpmを*.debに変換する必要があります。

# apt-get install alien
# cd (パッケージを置いたディレクトリ)
# alien gcc-cross-sa1100-2.95.2-0.i386.rpm
# alien glibc-arm-2.2.2-0.i386.rpm
# alien linux-headers-arm-sa1100-2.4.6-3.i386.rpm
# alien binutils-cross-arm-2.11.2-0.i386.rpm

あとは出来た*.debをインストールしていくだけです。
# dpkg -i gcc-cross-sa1100-2.95.2-0.i386.deb
# dpkg -i glibc-arm-2.2.2-0.i386.deb
# dpkg -i linux-headers-arm-sa1100-2.4.6-3.i386.deb
# dpkg -i binutils-cross-arm-2.11.2-0.i386.deb

その他のパッケージは以下コマンドでインストールします。
# cat tmake-sharp.tar.gz | (cd /opt/Qtopia/tmake/lib/qws ; tar xzvpf - )
# cat sharpsdk-pub-20021227.tar.gz | (cd /opt/Qtopia ; tar xzvpf - )
# gzip -cd libqte.so.2.3.2.gz > /opt/Qtopia/sharp/lib/libqte.so.2.3.2

これでインストールは終了です。
あとはqte_tutorial_030122_a300.pdfを読んでチュートリアルをやってみるといいでしょう。

22:53 | コメント (0) | トラックバック

2005年01月01日

VisualBoyAdvanceのコンパイルメモ
LinuxZaurus/Games

VisualBoyAdvance 1.7.2で高速化パッチ


~/src/sdl/SDL.cpp
-----------------------------------------
2828a2828,2848
> if(!wasPaused ) {
> if(!speedup) {
> u32 time = systemGetClock();
> u32 diff = time - throttleLastTime;
> int target;
>
> if (throttle) {
> target = (100000/(60*throttle));
> } else {
> target = (100000/6000);
> }
>
> int d = (target - diff);
>
> if(d > 0) {
> SDL_Delay(d);
> }
> }
> throttleLastTime = systemGetClock();
> }
>
2862,2874c2882
< if(!wasPaused && throttle) {
< if(!speedup) {
< u32 diff = time - throttleLastTime;
<
< int target = (1000000/(rate*throttle));
< int d = (target - diff);
<
< if(d > 0) {
< SDL_Delay(d);
< }
< }
< throttleLastTime = systemGetClock();
< }
---
>
2922a2931
>
2948a2958
> SDL_Delay(1);
2965a2976
> SDL_Delay(1);
3357c3368
< SDL_LockYUVOverlay(overlay);
---
> //SDL_LockYUVOverlay(overlay);
3367c3378
< SDL_UnlockYUVOverlay(overlay);
---
> //SDL_UnlockYUVOverlay(overlay);
-----------------------------------------

SDLバイナリ用でつ。デスクトップスレのsystemFrames()周り修正に
加え、音関連の待ちループにもSDL_Delayを強引に追加。ぶさいくだけど
カナーリ効きまつ。

これにここのパッチを合わせてコンパイルしてみましたが大して速くなりません。
コンパイルミスったのかも。

01:10 | コメント (0)