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 및 콘솔 출력을 찾을 수 있습니다.여기
내가 뭘 잘못하고 있는지에 대한 제안이나 아이디어가 있나요?