T507をベースとした自動画面オフ機能と電源管理技術の適用

一部の顧客は製品のバッテリー電源に依存しており、バッテリー容量が限られています。製品にスクリーンが使用されている場合、スクリーンは主なエネルギー消費源の 1 つになります。したがって、適切なタイミングで画面をオフにすると、バッテリー寿命が効果的に延長され、ユーザー エクスペリエンスが向上します。さらに、自動画面オフ機能は画面の寿命を延ばすだけでなく、情報漏洩やプライバシー漏洩のリスクを効果的に防止します。一般に、自動画面オフ機能は、デバイスのパフォーマンスの向上、エネルギーの節約、プライバシーの保護において重要な役割を果たします。

関係する知識ポイント:

1. Struct input_event: Linux 入力イベントを表すために使用されるデータ構造

通常、この構造体には、イベント タイプ、イベント コード、値など、入力イベントのさまざまな情報が含まれています。キーボードやマウスなどの入力デバイスを扱う場合、この構造体を使用して、入力イベントに関する情報を保存し、渡すことができます。

具体的には、struct input _event 構造体には通常、次のフィールドが含まれます。

  • 構造体 timeval time: イベント発生のタイムスタンプ。
  • Unsigned short type: イベントのタイプ (キーを押す、離すなど)
  • 無署名ショートコード: イベントのコード (どのキーが押されたかなど)。
  • Int 値: イベントの値 (キーの押下/離しなど)

このような構造を定義すると、入力イベントのさまざまな属性をパッケージ化してプログラム内で処理および渡すことが容易になります。入力デバイスのイベントを読み取るときに、この構造を使用して各イベントの特定の情報を保存できます。これは、入力イベントに対する後続の分析と応答に便利です。

2. リード機能とセレクト機能の機能と違い

read () 関数と select () 関数はどちらも Linux システムで I/O 操作を処理するために使用される関数ですが、その動作と使用方法にはいくつかの違いがあります。

(1)Read()関数:

read() 関数は、ファイルやソケットなどのファイル記述子からデータを読み取るために使用されます。これはブロック システム コールです。つまり、読み取るデータがない場合、プログラムはブロックされるまでブロックされます。読み取るデータがあるか、エラーが発生しています。 read() 関数は、ファイル記述子から指定されたバッファーにデータを読み取り、実際に読み取られたバイト数を返すか、エラーが発生した場合は -1 を返します。

(2) () 機能を選択:

select () 関数は、複数のファイル記述子を監視して、それらが読み取り可能、書き込み可能、​​または異常な状態にあるかどうかを判断します。

select() 関数を使用すると、多重化を実現できます。つまり、ブロックや待機を行わずに、複数のファイル記述子の 1 つが I/O 操作用に選択されます。 select () 関数は、指定されたファイル記述子の少なくとも 1 つが読み取り可能、書き込み可能、​​または例外状態になるか、指定されたタイムアウトが経過するまでプロセスをブロックします。通常、select() 関数は複数のファイル記述子を同時にリッスンするために使用され、いずれかのファイル記述子の準備ができたら、対応する読み取りおよび書き込み操作を実行してプログラムの効率を向上させることができます。

要約すると、read() 関数は単一のファイル記述子からデータを読み取るブロック操作であり、select() 関数は複数のファイル記述子の状態を多重化し、プログラムが複数の I/O 操作をより効率的に管理できるようにする関数です。 。 select () 関数は通常、複数のファイル記述子を同時にリッスンする必要がある状況で使用されます。

プログラムでは、イベントは read() 関数を通じて入力デバイスから読み取られます。イベントが報告されない場合、read() 関数はプログラムをブロックし、イベントが発生するかエラーが発生するまで戻りません。したがって、イベントが報告されない場合、プログラムは read () 関数に留まり、後続の印刷操作は実行されません。イベントが報告されると、read() 関数はイベント データを読み取り、イベントのバイト数を返します。この場合、プログラムは後続の印刷操作を実行してイベント情報を印刷します。

これが、メッセージがレポートされるイベントがある場合にのみ出力され、イベントがレポートされない場合にはメッセージが出力されない理由です。

イベントが報告されない場合でも情報を出力するには、イベントを読み取る前にタイムアウトを設定できます。タイムアウト期間内にイベントが報告されない場合、プロンプト情報が出力されます。これは、select() 関数を使用して実行できます。

この変更されたコードでは、select() 関数を使用して、ファイル記述子の読み取り操作の準備ができるまで待機し、タイムアウト期間内に準備ができていない場合は 0 を返し、その時点で「イベントは報告されませんでした」と出力します。 1秒以内」。準備ができたら、イベントを読み取り、適切なメッセージを出力します。これにより、イベントが報告されない場合でも、1 秒ごとにリマインダー メッセージが出力されます。

3. /dev/disp のキャラクターデバイス

表示装置制御用スイッチ

文字列デバイスの操作方法は disp _ fops です。

T507をベースとした自動画面オフ機能と電源管理技術の適用

実際、具体的な実装があるのは disp _ ioctl () と disp _ mmap () の 2 つの関数だけです。ioctl は「T507_Display_Module_Use_Documentation.pdf」を参照できます。

T507をベースとした自動画面オフ機能と電源管理技術の適用

4.スリープモード

/ /sys/電源/状態

氷結

フリーズ: フリーズ スリープ状態では、システムは CPU 動作を一時停止しますが、メモリとデバイスはアクティブなままとなり、より速く動作を再開します。

Mem: Mem スリープ状態では、システムはすべてをメモリに保存し、電力を節約するために不要なデバイスの電源をオフにします。 CPU は動作を停止しますが、メモリと一部の必要なデバイスは引き続きアクティブになります。

一般に、フリーズ スリープ状態は比較的浅く、システムはより早く動作状態に回復できますが、消費電力は比較的高くなります。一方、メモリ スリープ状態はより深く、消費電力は低くなりますが、回復時間は長くなります。若干長くなる可能性があります。実際のニーズとシステム要件に応じて、適切なスリープ状態を選択して、電力消費とパフォーマンスのバランスを取ることができます。

元は www.forlinx.net で公開されています。

www.forlinx.net