Atmel AT91SAM9G25 SoC(ARM9 @ 400Mhz)CPUに基づいて組み込みLinuxシステムを構築しようとしています。 AT91Bootstrapブートローダを使用しています。
私の投稿のトピックでわかるように、休止状態機能を再開する方法について質問があります。ディスクの一時停止プロセスが正常に動作しているようですが、目覚めた後、システムは以前のセッションを再開しません。
私が直面している問題は、次のように詳しく説明されています。
buildrootを使用してシステム用のLinuxイメージを構築し、それに応じて次のカーネルパラメータを有効/構成しました。
電源管理オプション - > RAMとスタンバイモードで中断
電源管理オプション - >休止状態とデフォルトの回復パーティション/dev/mmcblk0p3
(私が使用しているカーネルバージョンは4.0.4ですが、/dev/mmcblk0p3
これはsdcardのスワップパーティションです。)
最初にシステムを起動したときに、スワップパーティションが自動的にマウントされないことがわかりました。mkswap /dev/mmcblk0p3
andコマンドを使用してスワップパーティションを手動でマウントしましたswapon -a
。また、fstabファイルにその行を挿入しました。
/dev/mmcblk0p3 none swap sw 0 0
再起動後にインストールされたスワップパーティションが見つかりません。この問題を解決するために、上記のコマンドmkswap
とswapon
コマンドをinittabファイルに追加しました。再起動後、起動時にスワップパーティションが正常にマウントされました。
スワップパーティションをマウントした後、システムに休止状態(ディスクの一時停止)を要求しました。一時停止プロセスが期待どおりに機能しているようです。
問題は、電源装置を再接続したときに開始されました。システムは中断状態で目が覚めたことを知っているように見えますが、以前のセッションを再開しません。これはコールドスタートを実行するのと同じです。
メモリサスペンドは正常に動作します。システムをスリープ状態にしてシステムがrtcwake -s20 -m mem
起動すると、前のセッションは正常に再開されます。だからスワップパーティションに問題があるようですがアイデアが足りませんね。
次のコマンドを使用してシステムを休止状態に切り替えました。
rtcwake -s20 -m disk
echo shutdown > /sys/power/disk
echo disk > /sys/power/state
pm-hibernate
しかし、上記のようにすべて失敗しました。
便利なdmesgとコンソール出力を見つけることができます。ここ
私が何を間違っているかについての提案やアイデアがありますか?