質問: 現在、組込みLinuxのプロジェクトに携わっており、 ターゲットCPUは TI AM3352, Kernel Version 4.19.59です。 要求項目として ・スリープ →DDR3-SDRAM セルフリフレッシュで内容を保持、他のデバイスはPower Off ・レジューム →スリープから通常の動作状態に復帰する。 があります。 一応、コンフィグレーション項目としては ``` CONFIG_SUSPEND: Allow the system to enter sleep states in which main memory is powered and thus its contents are preserved, such as the suspend-to-RAM state (e.g. the ACPI S3 state). Symbol: SUSPEND [=y] Type : bool Prompt: Suspend to RAM and standby Location: -> Power management options Defined at kernel/power/Kconfig:1 Depends on: ARCH_SUSPEND_POSSIBLE [=y] ``` があるので、これを'y'にするのが必須とは考えております。 だが仕組みがわかりません。とくにPower Offされるデバイスに対する状態の保持と復帰についてです。 DDR3-SDRAMはスリープ時Self refreshモードにし、電源はPower Onのままのため スリープ時も内容が保持されるためあまり気にする必要は無いと思いますが スリープ時Power Offされる各(というか実装されている全ての)デバイスはPower Offされる前に今までデバイスに設定した状態の保持と復帰が必要になるはずです。 そのような仕組みがあるとすれば、おそらく、その仕組は、それぞれのデバイスドライバで担務していると考えています。 質問 -- (1) Linuxのデバイスドライバは、そのようにsuspend-to-RAMに対応した仕組みがあるのでしょうか? だとすれば、そればどのような仕組みでしょうか? このソースが参考になる的でも構いません。 (2) suspend-to-RAMに関する仕組みについてよい解説かリンク先があればお教えください。
回答: AM335x SitaraTMプロセッサのマニュアルの88ページにある、 > > 表 5-11. AM335x Low-Power Modes Power Consumption Summary > > > が参考になるのではないでしょうか? 表から、低消費電力モードには、Standby, Deepsleep1, Deepsleep0の3種類があり、それぞれについて ・保たれる情報、失われる情報が何で、それらをどのメモリに保存すべきか ・起動(Wakeup)の手順 が概説されています。 例えば、Deepsleep0だと、以下のように説明されています(括弧内は直訳です。あまり正確ではない可能性があります) > > ・PD_PER peripheral and CortexA8/MPU register information will be lost. > > (PD_PERのperipheralおよびContexA8/MPUのレジスタの情報は失われる。) > > ・On-chip peripheral register(context) information of PD-PER domain must be saved by (application to SDRAM before entering this mode. > > チップ上のperipheralレジスタのPD-PERドメインの情報は、このモードに入る前にアプリケーションでSDRAMに保存しておかなければならない。) > > ・DDR is in selfrefresh. > > (DDRは、selfrefreshモードになる。) > > ・For wakeup, boot ROM executes and branches to peripheral context restore followed by system resume. > > (ウェイクアップは、boot ROMを実行し、peripheralのcontextの復元、systemの復元と続く) > > > == こうしたCPUチップ内プログラム(boot ROM等)、OS(Linux)のカーネル、Linuxが、どのような構成/階層になるのかは判りません。 sleep時の情報保存・復元の機能が、デバイスドライバという形式で提供されるかどうかも判りません。 マニュアルから僕が拾い出せた情報を回答しました。