SL-B500/C700/C750/C760 special kernel
(update 2003/12/2)
近況報告
- 2003/12/2 C750/C760用のCCCR初期値を242から161に変更(v12c)。C750/C760用のCCCRの値は、v12a=162, v12b=242, v12c=161です。
- 2003/11/26 C750/C760用のCCCR初期値を162から242に変更(v12b)。CCCRの変更/確認は、ぴろさんのqclockchangeがお勧め。しつこいですが、CCCRの変更はバックアップを取ってから行なって下さい。
- 2003/11/25 ぴろさんの統合パッチ11/24版を適用(v12a)。
- 2003/11/24(2) CCCRの変更は危険なので、バックアップを取ってから行なって下さい。CCCR変更手順は、root権限にて、「echo xxx > /proc/cccr_change」です。
- 2003/11/24 CCCRを任意の値に変更後、サスペンドしてもその値を保てるようにしました(v12)。
- 2003/11/21 カーネルの入れ換え手順を修正(注意! 良く読まないと大変なことになります)。C750/C760用も追加(v11g)。
- 過去の履歴(2003/9/16-2003/11/18) 第三世代(C750/C760のソース使用) -- クロックアップ安定、各種機能追加
- 過去の履歴(2003/9/12-2003/9/15) 第二世代(B500/C700のソース使用) -- NANDアクセスに問題が
- 過去の履歴(2003/7/24-2003/9/4) 第一世代 (C750/C760のソース使用) -- 試行錯誤
無責任
本カーネルの使用により、あなたのZaurusがレンガになったりしても、私は何も補償できませんのであしからず。
何だろう
SL-C750/C760のカーネルをちょっといじってSL-B500/C700/C750/C760でちょっと速く動くかもしれないようにしたものです。
カーネルの入れ換え手順
(1) SHARPのサイトからconsolescrollとupdater.sh.xxxxをもらってくる。updater.sh.xxxxはファイル名をupdater.shと変更。双方をメモリカードにコピーする。
(2) 下記から使いたいカーネルを選び、ファイル名はzImageと変更してメモリカードにコピーする(zImage.binではないことに注意)。
- 各カーネルイメージのサイズおよびmd5sumは下記の通り。
(3) consolescroll, updater.sh, zImage以外がメモリカードにないことを確認。特にinitrd.binは危険なので絶対に消して下さい。後は(1)のSHARPのサイトの手順通りですが、完全消去はしないで下さい(手順11で7だけ実行し、後は普通に電源を入れる)。
復旧手順
何か問題があった場合は、元のカーネルを使って上記(3)をやり直して下さい。元のカーネルは、SHARP提供のアップデートソフトがある機種(B500, C700)ならば、そこから取り出して下さい。
SHARP提供のアップデートソフトがない機種(C750, C760)ならば、元のカーネルと同等のものを使って下さい。
周波数の変更/確認
ぴろさんのqclockchangeがお勧め(変更時はroot権限で実行にチェックが必要)。他の手段としては、ターミナル(コンソール)にて
# /sbin/modprobe registers
# cat /proc/cpu/registers/CCCR
として行なう。modprobeはroot権限で一度だけ実行すればよい。
FAQ
全般
- (Q1-1) 危険ではないのか。ハードが壊れたりしないのか。
- (A1-1) 私は責任がとれません。これまでにハードが壊れたという話は聞きません。バージョンによっては内蔵フラッシュの内容を(ソフト的に)壊すこともありましたが、このようなバージョンは公開停止しています。カーネル入れ換え作業時に誤って他機種のinitrd.binを書き込むと復旧が難しいので十分注意して下さい。
- (Q1-2) SHARPからもいずれ同等の速度が出るカーネルがリリースされるのでは。
- (A1-2) 無理です。まっとうなメーカとしてはプロセッサの定格外の使い方を推奨するわけにはいかないからです。
- (Q1-3) カーネルを入れ換えなくてもクロックアップはできるのではないか。
- (A1-3) 無理です。カーネル内に規定のクロック以外にはならないようなコードが入っているからです。ぴろさんの10/27版パッチを適用したカーネルだとクロックを変更できるようになります。
- (Q1-4) 私のSL-xxxxでyyyyという不具合が起きるのですが。
- (A1-4) 具体的に教えていただければ考えます。直せるかどうかは分かりません。
- (Q1-5) なぜC750/C760用ソースを使うのか。B500/C700向けならばB500/C700用のソースのほうが良いのではないか。
- (A1-5) ライトバックキャッシュに対応したコードがC750/C760用ソースにしか入っていないからです。仮にB500/C700用のソースを使っても、ライトバックキャッシュ対応を行なえばC750/C760用のソースと同等になってしまいますし、使用メモリ量が減ったりもしません。
- (Q1-6) C750/C760にも使えるか。
- (A1-6) 用意しましたが、私がそれらの機種をもっていないため、動作確認はしていません。
- (Q1-7) バイナリやパッチの転載をしても良いか。リンクを張っても良いか。記事にして良いか。
- (A1-7) ご自由にどうぞ。ソフトのライセンスはGPLです。
- (Q1-8) どのバージョンを使えば良いかわからない。
- (A1-8) 新しいほうが改良されているのでお勧めです。
まずは、問題のない限り、後ろにいろいろ付いていないフル機能版を使ってみて下さい。
フル機能版で問題のある場合、*-XXXnというものを選択します。例えば、
(1) 画面表示がおかしい or タッチスクリーンがいくら調整しても安定しない → *-TSPRESSUREn
(2) Bluetoothカードが動かない → *-PREEMPTn
(3) (1)と(2)の両方 → *-PREEMPTn-TSPRESSUREn
- (Q1-9) カーネルが書き替わらない。
- (A1-9) ファイル名がzImageとなっているかお確かめ下さい。書き込みが成功の場合は、Successと表示がでるはずです。
- (Q1-10) CCCRの値の違うのがあるが、どれが速いのか。
- (A1-10) 非常に大雑把に言うと、241 < 161 < 242 < 162 です。ただし、162と242では、161のバス速度が242より速いため、使い方次第で逆転します。
各論
- (Q2-1) タッチスクリーンが安定しない。
- (A2-1) 「echo 3230 > /dev/ts」を試してみて下さい。3230は個体差により0〜5000の間で変えてみて下さい(ぴろさんとuchさんからの情報)。v11g以降では負の値も設定可能です。それでもだめなら、*-TSPRESSUREnを使って下さい。
- (Q2-2) v11b以降、Bluetooth(BlueZ)が使えなくなった。
- (A2-2) 解決策募集中。とりあえず*-PREEMPTnを使って下さい。ザウルス起動時に固まるということであれば次の仮対処があります。/etc/rc.d/rc5.d/S99btstart を削除します。これで起動時にBluetoothがスタートしません。ザウルス起動後にrootで/etc/rc.d/init.d/btstartを実行すればbluetoothが使えるようになります(きさらさんからの情報)。
- (Q2-3) CCCRが変更できない。
- (A2-3) CCCRの変更は危険なので、バックアップを取ってから行なって下さい。CCCRの変更/確認はぴろさんのqclockchangeがお勧め(変更時はroot権限で実行にチェックが必要)。他の手段としては、ターミナル(コンソール)にて、root権限にて、「echo xxx > /proc/cccr_change」です。「echo xxx > /proc/cpu/registers/CCCR」ではありません。
その他
- (Q3-1) もっとスピードが上がる方法を見つけた。
- (A3-1) 教えて下さい。
- (Q3-2) これはすごい。みんなに広めたい。
- (A3-2) お好きにどうぞ。
- (Q3-3) これはボロい。みんなに使わないように言い広めようと思うが。
- (A3-3) お好きにどうぞ。
- (Q3-4) お前はC700を持っていないくせにC700用のカーネルを配るのはけしからん。
- (A3-4) 最近、開発用に手に入れました。
- (Q3-5) お前はC750/C760を持っていないくせにC750/C760用のカーネルを配るのはけしからん。
- (A3-5) 私もそう思いますが、先立つものがないので。
技術情報
動作周波数
CCCR L M N
C700(Normal) 0x0241 27 2 2
C750/C760 0x0161 27 4 1
0x0242 32 2 2
Crystal Frequency = 3.6864MHz
Memory Frequency = Crystal Frequency * L
Run Mode Frequency = Memory Frequency * M
Turbo Mode Frequency = Run Mode Frequency * N
PXbus Frequency = Run Mode Frequency / 2
Memory Frequency(100MHz)を基準に考えると、
C700(Normal)はRun modeは2倍速(200MHz)でTurbo modeは4倍速(400MHz)。
C750はRun modeもTurbo modeも4倍速(400MHz)。
Run mode周波数を高くするとPXバスも速くなる(Run mode周波数の半分)。
ソース
linux-c750-20030620-rom1_10.tar.bz2を元にビルドしました。
ソースの修正点
以下のようにソースを修正しています。
カーネルコンフィグレーション
SL-C750/C760のカーネルソースには、SL-B500用=poodle-j、SL-C700用=corgi、SL-C750用=shepherd-j、SL-C760用=husky-jという名前のconfigが含まれています。このファイルを元に、以下の点を修正しています。ただし、機種により有効にならない項目もあります。
#フル機能版
# CONFIG_CORGI_LCD_BUFF is not set
# CONFIG_ARCH_PXA_SHEPHERD is not set
# CONFIG_ARCH_PXA_HUSKY is not set
CONFIG_SL_CCCR_CHANGE=y
CONFIG_SL_CCCR242=y (C750/C760は=n)
# CONFIG_XSCALE_CACHE_ERRATA is not set
CONFIG_ARM_FCSE=y
CONFIG_PREEMPT=y
CONFIG_LOCK_BREAK=y
# CONFIG_SL7X0_POWER_KEY_OFF is not set
CONFIG_SL_3BUTTON_PATCH=y
CONFIG_SL_TS_PRESSURE=y
CONFIG_UNICON=y
CONFIG_UNICON_GB=y
CONFIG_UNICON_GB=m
CONFIG_UNICON_SJIS=y
CONFIG_UNICON_SJIS=m
CONFIG_UNICON_EUCJP=y
CONFIG_UNICON_EUCJP=m
# CONFIG_SHARP_LOGO_SCREEN is not set
# CONFIG_SL_SYSCLK100 is not set
#TSPRESSUREn(フル機能版との差分のみ)
CONFIG_SL_TS_PRESSURE is not set
CONFIG_SL_SYSCLK100 is not set
#PREEMPTn(フル機能版との差分のみ)
# CONFIG_PREEMPT is not set
# CONFIG_LOCK_BREAK is not set
#PREEMPTn-TSPRESSUREn(フル機能版との差分のみ)
# CONFIG_PREEMPT is not set
# CONFIG_LOCK_BREAK is not set
# CONFIG_SL_TS_PRESSURE is not set
# CONFIG_SL_SYSCLK100 is not set
機能早見表
バリエーション |
クロックアップ (B500/C700のみ), WBキャッシュON, FCSE |
3ボタン, UNI- CON |
LCD BUFF |
NO SHARP LOGO |
MILD SWAP |
CCCR 可変 |
筆圧 |
SYS- CLK 100 |
PRE- EMPT |
LOCK BREAK |
フル機能版 |
O |
O |
O |
O |
O |
O |
O |
O |
O |
O |
TSPRESSUREn |
O |
O |
O |
O |
O |
O |
- |
- |
O |
O |
PREEMPTn |
O |
O |
O |
O |
O |
O |
O |
O |
- |
- |
PREEMPTn-TSPRESSUREn |
O |
O |
O |
O |
O |
O |
- |
- |
- |
- |
SHARP |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Mail:
webmaster@tetsu.homelinux.org