2006年03月20日
SL-C3200のカーネル
SL-C3200のunameの結果です。
zaurus$ uname -a Linux zaurus 2.4.20 #1 Fri, 3 Feb 2006 16:34:13 +0900 armv5tel unknown
更新日が2006/02/03となっています。
てっきりSL-C3100と同じカーネルかと思っていましたが何かしら変わっているようです。
カーネルソースが出てくるまで何が変わったのか不明ですけど。
とりあえずSL-C3100のカーネルを動かしてみます。
2005年01月27日
クロックアップ後のバッテリ駆動時間
とりあえずグラフだけです。
説明は後で書きます。

(追記)
…ということで説明です。
ここで作ったカーネルにて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アダプタを取り付けて起動しようとしましたが
リセットを押さないと起動しなくなりました。
バッテリ消耗量が著しいためサスペンドすることが出来なかったのか
サスペンド状態を維持する電力が増えたことによるものなのか原因は不明です。
これが許せるか許せないか人によって異なりますが、
個人的には重いアプリをつかうことはあまりないので標準状態で使っていくことにします。
2005年01月24日
バッテリ残量をより詳しく
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
以下がスクリプトのログをとり集計した結果です。

縦軸がバッテリ残量、横軸が経過時間を表してます。
本来であれば左上から右下に比例的に変化していくべきなのですが、
理想とはかけ離れた結果になってます。
そこでカーネルの一部を修正し、100%〜0%まで2.5%刻みで変化するように修正しました。
このときバッテリ残量とバッテリ電圧が比例するように設定してあります。
以下がこのカーネルでの実験結果です。

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

まだ理想とは違っていますが、今回はこれでよしとしておきます。
時間があればさらに調整して、残時間を算出できるようにしたいと考えてます。
ちなみに今回修正したカーネルでもバッテリアプレットは正常に動作しました。
![]()
一応以下に今回の成果物を残しておきます。
- 最終的なパッチ
patch_batplus_20050123.patch
- 以前のカーネルにパッチを当てたもの
zImage_batplus_20050123
- てつさんのspecial kernel(17f)にパッチを当てたもの
zImage_17f_batplus_20050123
(念のため)
今回のカーネルの修正はバッテリの保ちを長くするとかそういった修正はしてません。
また今回の実験は私の個人的な実験であり、上記パッチ、カーネルを利用したことによる
不具合など一切責任は負いかねます。
一応私のところでは順調に動いてますが今回私の持ってるSL-C3000に合わせて
設定しているためたとえ同じSL-C3000であっても個体差、バッテリのへたりなどにより
バッテリ残量の表示が98%から始まるなどの現象が出るかもしれません。
SL-C3000色々いじりがいがあって面白いです。
2005年01月11日
kernelの修正・ビルド
SHARPよりカーネルソースが公開されました。
これによりエンドユーザーにてカーネルをコンパイルして使うことができるようになりました。
で、てつさんのHPにてspecial kernelとして様々なパッチを当てたカーネルを公開されてます。
それを使ってみたのですが一部ソフトでレジュームがうまくいかないという現象が出たため
パッチを一部だけあてたカーネルを作ることにしました。
まずSHARPよりカーネルソースなどを持ってきます。
てつさんのホームページよりパッチを持ってきます。(必要なぶんだけ)
- 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を繰り返すと音が出なくなる現象でして、
以上で作ったカーネルでは問題ないようです。
何が影響している気になりますが調査は後日とします。