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 オーディオデバイス サポートドライバのページはこちら!
 
ioctl 版はこちら

お断り

正直な話,無い知識を総動員して,
「とりあえず動いたらいい」という感じで書いたので,
ソースはずいぶん汚いです.

一応,本ドライバの利用に関しては 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 などで出来ます.
もちろん,制御ツールを使っても出来ます(後述).



ドライバ版はこちら

カーネルモジュール port 配布ファイル longrun-ports-2001.06.22.tar.gz
制御ツール port 配布ファイル longrunctl-ports-2001.06.22.tar.gz

port の方がインストールが簡単なので,強く お勧めします!
なお,以前のもの(ioctl 版)とは状態取得/設定に用いている方法が異なりますので,
設定ツールともども置き換えてください.
 


カーネルモジュール インストール方法
 
 
  1. cd /usr/ports/sysutils
  2. tar zxvf SOMEWHERE/longrun-ports-YYYY.MM.DD.tar.gz
  3. cd longrun
  4. make install

これで,/usr/local/modules 配下に longrun.ko がインストールされます.
また,/usr/local/include 配下に longrun.h がインストールされます.
なお,/usr/local/etc/rc.d 配下に longrun.sh が作成されますので,
次回起動時から自動的にモジュールがロードされます.



制御ツール インストール方法
 
 
  1. cd /usr/ports/sysutils
  2. tar zxvf SOMEWHERE/longrunctl-ports-YYYY.MM.DD.tar.gz
  3. cd longrunctl
  4. 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 さん作の
"LongRun Setting Utility for C1VJ" を参考にさせていただきました.
ソースファイルを公開してくださってありがとうございます.
また,このツールのおかげで,Cassiopeia FIVA MPC-206 上で
Windows2000 を快適に使うことが出来ています.
重ねて御礼申し上げます.

sysctl を利用するアイデアと identcpu.c に対するパッチを下さった岩崎さん,
attach/detach などに関するパッチを下さった下川さん,
longrunctl.c のパッチを下さった冨永さん,
ご意見ならびに問題点などのご指摘をいただいた
土釜さん,寺本さん,徳田さん,西澤さん,
そして BSD-nomads ML の皆さんに感謝いたします.
このドライバを紹介して下さった "FreeBSD PRESS" 編集部にも感謝いたします.
いろいろと勉強になりました.ありがとうございました.

 

Copyright(c) 2001 Tamotsu HATTORI