ACPIバッテリー情報はどこから来ますか?

ACPIバッテリー情報はどこから来ますか?

ACPIインターフェイスを使用すると、バッテリ寿命に関する情報を取得できます。この情報はどこから来るか。

電源プラグに流れる電流を積算して電力を計算できるチップはありますか?電圧を容量に変換するバッテリーチップですか?

答え1

公称バッテリー容量についての実際の知識は、一般的に同じ場所からは出ません。たとえば、私が作業している小型組み込みデバイスは、同じバッテリタイプのみを使用できます。したがって、公称容量はカーネルドライバ(またはデバイスツリーファイル)にハードコードされています。どちらが重要かは関係ありません。 「CPUで実行されているソフトウェアにハードコードされています」)。

他のデバイスには、容量を追跡するコンピュータのマザーボードの電源コントローラで実行されるファームウェアがあります。工場の容量を定数と見なすことができるかどうか、またはバッテリパックに内蔵されているマイクロコントローラまたはメモリから容量を取得できるかどうかは、ハードウェア設計によって異なります。オペレーティングシステムのサポートなしで再調整する機能も同様です。

もしそうなら、現在のバッテリー状態に関する知識がどこから来るのかについて質問があります。これは再びハードウェア設計に依存する。単純な解決策は、現在のバッテリ電圧を読み取ることです。 (そして電圧を充電にマッピングする内部の一般的な放電曲線があります。これは愚かな電話時代に期待できるものです。はい、それはすべてです)、他のものは少なくとも温度を補償し、より良いものは実際にバッテリーからの行数を計算し、通常より正確な読み取り値を提供します。

その後、ACPIコントローラであっても通常はACPI以外のシステムであれ、カーネルはこれらのデバイスと直接通信し(たとえば、SMBUS、USB、一部のCPU UARTなどを介して)、その読み取り値をカーネルインタフェース(sysfs)から取得した値に変換します。 )この値。 )。

関連情報