1129108_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

1129108_ja-JP

1129108_ja-JP

i.MX6DQ/DLのAndroid電源管理<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Android Power のデバッグと最適化

  • はじめに
  • i.MX での Android 電源管理の概要
  • i.MX でAndroidの電力最適化を行う方法
  • i.MX で高電力消費を確認する方法
  • i.MX でサスペンド/レジュームの問題をデバッグする方法

はじめに

このドキュメントでは i.MX Android の電源問題のデバッグと消費電力の最適化について説明します。

i.MX での Android 電源管理の概要

Power ManagerがAndroidで導入したもの

早期サスペンド

これにより、LCD、キーパッドバックライト、タッチスクリーン、gsensorなどのドライバーが、ユーザースペースが/sys/power/request_stateに書き込んだときに通知を受け取りユーザーが見えるスリープ状態を変更する必要があることを示すことができます。これらのドライバーは、Linuxスタンドsuspend()のように機能し、これらのデバイスをサスペンド状態にしてバッテリー寿命を延ばします。

レイトレジューム

遅延レジュメは早期サスペンドと一致します。Stand Linux の再開が完了した後、早期中断中に中断されたデバイスが再開されます

ウェイクロック

Wake Lockは、アプリケーション、サービス、カーネルドライバーがCPUリソースを要求するために使用されます。ロックされたウェイクロック、そのタイプに応じて、システムがサスペンドやその他の低電力状態に入るのを防ぎます。これは、フレームワークからカーネルまでのAndroid電源管理アーキテクチャのコアメンバーとして

android_power_framework.JPG

パワーフレームワークを強化するために i.MX が導入したもの

  • バスフレック

    • ハイバス、ローパワーオーディオバス、ローバスの合計3つのシステムバスワーキングポイントをサポートします。

    • クロックフラグに従ってこれら3つのバスモードを自動的に切り替えます。

    • DDRの実行周波数は、バスモードの変更に応じて変化します(MX6DQ / DLの場合、最大528 / 400MHz、24MHzで最低)。

  • CPUFreqの

    • CPU 周波数スケーリング デバイス ドライバーを使用すると、CPU のクロック速度をその場で変更できます。CPUの周波数を変更すると、GP電圧は電圧値に変更されます。

    • デフォルトのインタラクティブガバナーを強化して、SDHC / GPUなどのパフォーマンスを向上させます。

  • システムパワープロファイルサービス&アプリ(MX6DQ/DL専用)

    • 現在、通常モード、省電力モード、パフォーマンスモードの3つのプロファイルをサポートしており、パフォーマンスと消費電力のバランスを大幅に向上させます。

    • プロファイルは、CPU実行最大周波数、トリガー温度、最小周波数実行CPU、CPU実行CPUなど、お客様のHW / MD設計に応じてカスタマイズできます

  • LDOバイパスモード

i.MX6XにはLDOモジュールが内蔵されていますが、外部LDOサプライヤを使用することもできます。SWは、外部LDOまたは内部LDOを使用して構成を提供します。

i.MX でAndroidの電力最適化を行う方法

サスペンドモード

  • すべてのデバイスがサスペンドまたは低電力で移行
  • GPIO PADをHigh Zまたは入力モードとして構成します(HW設計に応じて、FSLは参照コードを提供します)
  • モジュールが不要なLDOをカットオフします(HW設計によっては、FSLはRefコードを提供します)
  • DDR がセルフリフレッシュモードに入る (FSL 完了)
  • DDR IO フロート ピンを構成して DDR IO の消費量を削減 (FSL 完了)
  • ARM コア エントリ停止モード (WFI) (FSL 完了)
  • すべてのPLLが切断され、32KHZの睡眠時計が生きています(FSLが完了しました)
  • スタンバイ状態の PMIC エントリに通知して、電力を節約します (FSL が完了しました)。

ユーザーアイドルモード

  • WiFi、3G、BT、画面の明るさモジュールなどのデバイスドライバーの最適化により、電力を節約します
  • 一部のデバイス/ GPIOをサスペンドモード/低電力モードで開始します
  • システムの電力負荷を軽減するためのアクティブ省電力プロファイル。
  • GPU 2D/3Dは、更新が必要なアクティビティがない場合、停止/スタンバイモードで自動的に入力されます。(FSL完了)
  • CPUFreq を有効にすると、ARM CORE の消費電力が削減されます (FSL が完了しました)
  • Busfreqスキャンにより、システムが低周波数で動作して電力を節約(FSL完了)

オーディオ/ビデオ再生モード

  • WiFi、3G、BT、画面の明るさモジュールなどのデバイスドライバーの最適化により、電力を節約します
  • 一部のデバイス/ GPIOをサスペンドモード/低電力モードで開始します
  • システムUI、ミュージックプレーヤーなどの一部のアプリでHW3Dアクセラレーションを無効にして、システムがアイドルモードまたは音楽再生モードのときに電力を節約します。
  • CPUFreqおよびSOC WAITモードを有効にし、CPUの周波数/電圧を減らして、CPUが処理する必要のないタスクがない場合にARM COREの電力を節約します(FSL完了)
  • Busfreqスキャンは、バス動作を低電力オーディオバスモードに設定して、電力を節約します(オーディオケースに対してFSLが行われます)
  • DDRはセルフリフレッシュモードで入ります(オーディオケースの場合はFSLが実行されます)
  • 画面の明るさを下げると、電力が節約されます(ビデオケースの場合)
  • SOCドメインの電力を節約するためのVPUクロック自動ゲーティング(ビデオケースの場合、FSL完了)
  • GPU 2D/3D自動ゲートにより、SOCドメインの電力を一部節約(FSL完了)
  • ビデオ再生でGPUをバイパスするためにVDOA + IPUを試してください(Androidプラットフォーム、この方法を使用する純粋なLinux環境についてはコメントしないでください、入力/出力サイズの制限などの制限があります)、これによりDDRドメインの電力を節約できます。

i.MX で高電力消費を確認する方法

アイドルオーディオ/ビデオ再生高消費電力

  • CPUFreq と Bus_freq が有効になっていることを確認します

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

cat /sys/devices/platform/imx_busfreq.0/enable

  • システムバスが動作しているかどうかを確認します
  • MX6Q の場合:

cat /sys/kernel/debug/clock/osc_clk/pll2_528_bus_main_clk/periph_clk/mmdc_ch0_axi_clk/rate

  • MX6DL/SLの場合:

cat /sys/kernel/debug/clock/osc_clk/pll2_528_bus_main_clk/pll2_pfd_400M/periph_clk/mmdc_ch0_axi_clk/rate

  • CPUの負荷と割り込みの確認(cat /proc/interrupts)
  • クロックツリーを注意深くチェックして、ゲートオフされていないクロックがモジュールに必要とされていないことを確認します。

           powerdebug –d  -c

サスペンドモード:高消費電力

  • すべてのデバイスエントリがサスペンドモードになっていることを確認してください
  • DSMのシステムエントリを確認します(VDDARM_CAP、VDDSOC_CAP、DDR_1V5、VDD_HIGHの電圧と電流を測定します...)

問題を特定するのに役立つヒントがいくつかあります

  • デバイスドライバーにデバッグメッセージを追加すると、消費電力が高くなる可能性があります
  • カーネルで PM デバッグを有効にする
  • これらのモジュールからの波形をキャッチすると、高い消費電力に影響を与える可能性があります
  • ボードからデバイスを削除するか、H/Wの手直しを行って、一部のH/Wの問題を除外します


i.MX でサスペンド/レジュームの問題をデバッグする方法


システムがサスペンド・モードで開始できなかった

  • 以下の設定が無効になっていることを確認してください。
  • GPSが無効になっています
  • USBケーブルをボードに接続しないでください(adbはwake lockを保持します)
  • RIL が初期化に失敗した場合、RIL は wake lock を保持します (logcat -b radio)。
  • 設定->アプリケーション->開発者向けオプション->目を覚まし(目を覚ましたまま設定しない)
  • カーネルによって穴が開いたすべてのウェイクロックが解除されたことを確認します

         echo 15 > /sys/module/wakelock/parameters/debug_mask

  • すべてのユーザーの wake lock が解除されたことを確認します

         echo 15 > /sys/module/userwakelock/parameters/debug_mask

再開または中断時にシステムがハングする

  • PM デバッグ システムを有効にして、カーネル内の PM に関する詳細情報を取得します

make menuconfig  PM debug sys を有効にします。

[*]電源管理のサポート

[*]  パワー・マネージメント・デバッグ・サポート

[*]    詳細なパワー・マネージメント・デバッグ

  • カーネルのブートオプションにno_console_suspendを追加します

これにより、システムはサスペンドに入力する前に、より有用な情報を印刷します

  • PMIC_STBY_REQ信号を確認してください。VDDARM_INを測定する
  • Trace32 または ICE を使用して問題を特定します。
  • RAMCONSOLE を使用して、再起動後にカーネルログをダンプします。

カーネルはサスペンドから再開しますが、Androidは再開しません

これは通常、キーレイアウトファイルが間違っていることが原因です

  • ツールを使用して電源キーのスキャンコードを取得する

getevent

  • キーレイアウトの修正

system/usr/keylayout/****.kl

  • スキャンコードを電源キーのレポート値で [POWE キーと一致する] に修正します
Androidi.MX6DLi.MX6Duali.MX6Quad日時:i.MX6DQ / DL上のAndroidの電源管理<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Hi Paramod,

この情報は /sys/device/system/cpu/cpu0/cpufreq/scaling_max_freq から見つけることができます

よろしくお願いいたします。

フージェン

日時:i.MX6DQ / DL上のAndroidの電源管理<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

ありがとう、 Fuzhen 迅速な返信。

Android Advance ユーザー ガイド ドキュメントでは、freq_table が参照されています (freq_table の最大作業点)。この imx6dq の freq テーブルはどこにありますか?

ありがとう、そしてよろしく、

Paramod.

日時:i.MX6DQ / DL上のAndroidの電源管理<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Hi PK,

システムの電源プロファイルの詳細については、R13.4.1とともにリリースされたAndroidユーザーガイダーを参照してください。

よろしくお願いいたします。

フージェン

日時:i.MX6DQ / DL上のAndroidの電源管理<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

こんにちはfuzhenlin/ジョディポール


Android 4.0.4に含まれるSystem Power Profile ServiceおよびApp(MX6DQ / DLのみ)に関するドキュメント/詳細はありますか?BSPですか?

各電源モードがデフォルトのFSLコードで何をするのか知りたいです。


ありがとう、そしてよろしく、

PK


标记 (1)
无评分
版本历史
最后更新:
‎01-06-2026 12:56 AM
更新人: