LongRun サポートドライバ for FreeBSD
特設ページ
あなたは
人目の Crusoe
使い(?)です.
2001.4.7 初版公開
2001.4.8 注意事項追加
2001.4.11 BugFix & 5.0-currentで利用できるよう修正
2001.4.13 配布ファイルをパッチとしてひとまとめに変更
2001.4.16 デバイスファイルのパーミッションの変更とそれに関連する設定ツールの修正
2001.5.26 横川氏作の ALi M5451 オーディオドライバのページを併設.
2001.6.18 記述が一部誤っていたのを訂正 & ports 化したものをアップ.
2001.6.19 ports 化したものに問題がありました.再度ダウンロードして下さい.
2001.6.21 ページ改装 & ports としてよりまっとうなものに改善しました.
2001.6.23 さらにページ改装 & sysctl を利用するように変更.
2001.6.27 英語版ページを開設.
English version is here.
Transmeta 社の CPU, Crusoe の省電力機能である longrun を
FreeBSD でサポートするドライバのページです.
このドライバを利用することにより,sysctl を利用して
LongRun の動作モードの取得と変更
|
現在の動作周波数および動作電圧の取得
|
を行うことが可能になります.
開発は,4.3-RC1 ならびに 4.3-STABLE 上で行いましたが,
それ以前あるいはそれ以降のバージョンでも
大きな変更無く利用できると思います(未確認).
5.0-currentでも利用できます(2001/05 以降は試してません).
4.3-STABLE(2001/06/12 時点)でも利用できています.
ALi M5451 オーディオデバイス サポートドライバのページはこちら!
お断り
正直な話,無い知識を総動員して,
「とりあえず動いたらいい」という感じで書いたので,
ソースはずいぶん汚いです.
一応,本ドライバの利用に関しては BSD ライセンスに従うものとします.
というわけで,本ドライバは無保証です.
利用については自己責任でお願いします.
本ドライバを利用した結果発生したいかなる事故・損害等についても,
作者は何の責任も負う義務は無いものとします.
なお,本ページにあるソフトウェア等の無断転載は一切禁止します.
何らかの形でご紹介下さる場合は,事前にご一報下さいますようお願いします.
というのは,このドライバは現在のところあくまで暫定版のため,
頻繁に更新したり,大きな仕様変更をする可能性があるためです.
転載先で更新がちゃんとフォローされないと,古いものを
入手された方へのサポートが大変になってしまうという懸念があるからです.
BSD ライセンスに従う以上,このあたりまで含めて無保証といってしまっても
いいような気はしますが…….
|
sysctl 版では,以下の 4 つの MIB を追加して利用できるようにします.
hw.crusoe.longrun |
LongRun のモード
0: 最低周波数で動作
1: 周波数可変で動作(省電力重視)
2: 周波数可変で動作(速度重視)
3: 最高周波数で動作
|
hw.crusoe.frequency |
現在の動作周波数 [MHz]
|
hw.crusoe.voltage |
現在の動作電圧 [mV]
|
hw.crusoe.percentage |
処理性能
最高周波数時 100%
最低周波数時 0%
|
sysctl (8) を用いて,状態を取得/設定することも出来ます.
現在の状態を取得する場合は,sysctl hw.crusoe で出来ます.
動作モードを設定する場合は,sysctl -w hw.crusoe.longrun=2 などで出来ます.
もちろん,制御ツールを使っても出来ます(後述).
ドライバ版はこちら
カーネルモジュール インストール方法
-
cd /usr/ports/sysutils
-
tar zxvf SOMEWHERE/longrun-ports-YYYY.MM.DD.tar.gz
-
cd longrun
-
make install
|
◎ これで,/usr/local/modules 配下に longrun.ko がインストールされます.
また,/usr/local/include 配下に longrun.h がインストールされます.
なお,/usr/local/etc/rc.d 配下に longrun.sh が作成されますので,
次回起動時から自動的にモジュールがロードされます.
制御ツール インストール方法
-
cd /usr/ports/sysutils
-
tar zxvf SOMEWHERE/longrunctl-ports-YYYY.MM.DD.tar.gz
-
cd longrunctl
-
make install
|
◎ これで,/usr/local/sbin 配下に longrunctl がインストールされます.
制御ツールの使い方
usage: longrunctl [-i interval] [-c count] keyword [mode]
テスト用に作っただけなので,オプションは適当につけてます.
引数 keyword の意味については,次のとおりです.
getmode |
現在の動作モードを取得 |
getstat |
現在の動作周波数・動作電圧を取得 |
setmode |
動作モードを設定
0:最低周波数・最低電圧固定
1:周波数・電圧可変(省電力重視)
2:周波数・電圧可変(パフォーマンス重視)
3:最高周波数・最高電圧固定 |
monitor |
動作周波数・動作電圧をモニタ
-i オプションでモニタする時間間隔を秒単位で,
-c オプションでモニタする回数を指定できます.
-c オプションの指定がないと,永遠に続けます. |
例えば,動作モードを「最低周波数・最低電圧固定」に設定するには,
longrunctl setmode 0
でOKです.
余談
Cassiopeia FIVA MPC-206 の場合は,電源投入時の動作モードは
「周波数・電圧可変(省電力重視)」になっています.
LongRun の機能自体は,OS などのサポートが無くても
機能するようです(Crusoe が自分でやってくれるみたい).
というわけで,このドライバ/設定ツールは,モードの変更と
動作周波数のモニタ機能を提供することが主な役目になります.
「電池を極限まで持たせるために,最低周波数・最低電圧固定に
モードを変更する」という使い方が一番多いでしょうね.
謝辞
本ドライバの作成にあたって,m.iizuka さん作の
ソースファイルを公開してくださってありがとうございます.
また,このツールのおかげで,Cassiopeia FIVA MPC-206 上で
Windows2000 を快適に使うことが出来ています.
重ねて御礼申し上げます.
sysctl を利用するアイデアと identcpu.c に対するパッチを下さった岩崎さん,
attach/detach などに関するパッチを下さった下川さん,
longrunctl.c のパッチを下さった冨永さん,
ご意見ならびに問題点などのご指摘をいただいた
土釜さん,寺本さん,徳田さん,西澤さん,
そして BSD-nomads ML の皆さんに感謝いたします.
このドライバを紹介して下さった "FreeBSD PRESS" 編集部にも感謝いたします.
いろいろと勉強になりました.ありがとうございました.