Возобновление из спящего режима не работает во встроенной Linux-системе

Я пытаюсь построить встроенную Linux-систему на базе процессора Atmel AT91SAM9G25 SoC (ARM9 @ 400Mhz). Я использую загрузчик AT91Bootstrap.

Как предполагает мой пост, у меня проблема с возобновлением работы в спящем режиме. Приостановка процесса на диске, похоже, работает нормально, но после пробуждения система не восстанавливает предыдущий сеанс.

Вопрос, с которым я столкнулся, выглядит следующим образом:

Я создал образ linux для своей системы, используя buildroot, и я активировал / настроил соответственно следующие параметры ядра:

Параметры управления питанием -> Приостановка в ОЗУ и резервное копирование

/dev/mmcblk0p3 управления питанием -> Спящий режим и раздел восстановления по умолчанию /dev/mmcblk0p3

(Версия ядра, которую я использую, – 4.0.4, и /dev/mmcblk0p3 – это раздел подкачки sdcard.)

Когда я впервые загрузил систему, я заметил, что раздел подкачки не монтируется автоматически. Мне удалось установить раздел подкачки вручную с помощью mkswap /dev/mmcblk0p3 и 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 и консоли можно найти здесь

Любые предложения или идеи о том, что я могу делать неправильно?

Linux и Unix - лучшая ОС в мире.