6 Power Management
i.MX 전원 관리는 표준 Linux 인터페이스를 사용한다. 표준 커맨드에 대한 정보는 Linux 전원 문서를 확인한다. i.MX Linux Reference Manual(IMXLXRM)에는 사용 가능한 전원 모드에 대한 정보와 전원 관리 섹션에 i.MX 제품별로 기타 정보가 포함되어 있다.
i.MX 보드에는 중지(suspend)와 재개(resume) 커맨드, CPU 주파수 스케일링 그리고 버스 주파수 스케일링의 세 가지 주요 전원 관리 기술이 있다. 아래 섹션에서 설명한다.
6.1 Suspend and resume
전원 상태는 표준 Linux 상태인 /sys/power/state를 설정하여 변경할 수 있다. 커맨드 라인에서 사용 가능한 echo mem > /sys/power/state는 전원 상태를 중지(suspend) 모드로 설정하는 커맨드이다. 값 mem은 i.MX Linux Reference Manual(IMXLXRM)에 설명된 대로 유효한 전원 상태로 대체될 수 있다.
다음 방법 중 하나를 사용하여 중지 모드에서 시스템을 다시 시작할 수 있다.
- 디버그 UART는 아래와 같이 wake-up 소스를 설정할 수 있다:
echo enabled > /sys/class/tty/ttymxc0/power/wakeup
참고:
i.MX 8QuadXPlus와 i.MX 8QuadMax의 경우 ttylp0이고, i.MX 8DXL의 경우 ttyLP0이다. 현재 디버그 UART를 식별하고 wake-up 소스로 구성하는 커맨드는 아래와 같다:
echo enabled > /sys/class/tty/$(tty | cut -d'/' -f 3)/power/wakeup
- RTC는 중지 모드를 시작하고 종료하는 데 아래 커맨드를 사용한다:
/unit_test/SRTC/rtcwakeup.out -d rtc0 -m mem -s 10
이 커맨드는 10초 동안 sleep 상태를 나타낸다. 이 커맨드는 자동으로 전원 상태를 mem 모드로 설정한다.
6.2 CPU frequency scaling
스케일링 거버너는 Linux 커널에서 CPU 주파수를 설정하는 데 사용된다. CPU 주파수는 ACPI 이벤트에 대한 응답으로 또는 사용자 공간 프로그램에 의해 수동으로 시스템 부하에 따라 자동으로 조정될 수 있다. 거버너에 대한 자세한 내용은 www.kernel.org/doc/Documentation/cpu-freq/governors.txt에서 governors.txt를 참조한다.
다음은 자주 사용하는 커맨드의 일부이다:
이 커맨드는 시스템과 현재 설정에 대한 정보를 반환한다.
- 커널은 특정 주파수만 지원하도록 미리 구성되어 있다. 현재 지원되는 주파수 목록은 아래 커맨드에서 얻을 수 있다:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
- 사용 가능한 스케일링 거버너는 아래 커맨드에서 얻을 수 있다:
cat /sys/devices/system/cpu/*/cpufreq/scaling_available_governors
- 아래 커맨드로 현재 CPU 주파수를 확인할 수 있다:
cat /sys/devices/system/cpu/*/cpufreq/cpuinfo_cur_freq
거버너 설정에 따라 주파수가 표시된다. - 아래 커맨드로 최대 주파수를 확인할 수 있다:
cat /sys/devices/system/cpu/*/cpufreq/cpuinfo_max_freq
- 아래 커맨드로 최소 주파수를 확인할 수 있다:
cat /sys/devices/system/cpu/*/cpufreq/cpuinfo_min_freq
이 커맨드는 일정한 CPU 주파수를 설정한다:
- 아래 커맨드로 최대 주파수를 사용한다:
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
- 아래 커맨드로 현재 주파수를 일정한 주파수로 사용한다:
echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
- 아래 두 커맨드는 해당 주파수가 지원되는 경우 지정된 주파수로 스케일링 거버너를 설정한다. 주파수가 지원되지 않으면, 지원되는 가장 가까운 주파수가 사용된다:
echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo <frequency> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
6.3 Bus frequency scaling
이 릴리스는 i.MX 7ULP EVK에서 버스 주파수 스케일링 기능을 지원하지 않는다.
이 릴리스는 i.MX 8QuadXPlus와 i.MX 8QuadMax에서 버스 주파수 스케일링 기능을 지원하지 않는다.
시스템은 활성화된 디바이스를 기반으로 최적의 성능으로 버스 주파수(DDR, AHB 등)를 자동으로 조정한다.
버스 주파수 드라이버는 기본적으로 활성화되어 있다. 다음 DDR 주파수가 지원된다:
- Normal DDR 주파수 - U-Boot의 기본 주파수.
- Audio DDR 주파수 - i.MX 6Quad, i.MX 6DualLite 그리고 i.MX 6SoloX에서 50MHz, i.MX 7Dual에서 100MHz.
- 저전력 IDLE DDR 주파수 - 24MHz
i.MX 8M 보드에서:
- LPDDR4의 경우, Audio DDR 주파수는 25MHz이고, 저전력 IDLE DDR 주파수는 25MHz이다.
- DDR4의 경우, Audio DDR 주파수는 166MHz이고, 저전력 IDLE DDR 주파수는 166MHz이다.
저전력 IDLE DDR 주파수를 입력하려면, 높은 DDR 주파수를 필요로 하는 모든 디바이스가 비활성화되어 있는지 확인해야 한다. 대부분의 드라이버는 액티브 클럭 관리를 수행하지만, 특정 커맨드는 타임 아웃 발생을 기다리지 않도록 사용할 수 있다:
echo 1 > /sys/class/graphics/fb0/blank -> 를 선택하여 디스플레이(둘 이상의 디스플레이가 활성화된 경우, fb1, fb2 등을 비워야 할 수 있음)를 비운다.
ifconfig eth0 down -> 를 선택하여 이더넷 모듈을 비활성화한다. i.MX 6SoloX, i.MX 7Dual, i.MX 6UltraLite 그리고 i.MX 6UltraLiteLite에서도 Ethernet 1(eth1)를 비활성화해야 한다.
i.MX 8M Plus는 USB 런타임 PM을 활성화하기 위해 몇 가지 추가 단계가 필요하다:
echo auto > /sys/bus/platform/devices/32f10100.usb/38100000.dwc3/power/control
echo auto > /sys/bus/platform/devices/32f10108.usb/38200000.dwc3/power/control
echo auto > /sys/bus/platform/devices/32f10108.usb/38200000.dwc3/xhci-hcd.1.auto/power/control
i.MX 8ULP에 대해 다음 커맨드를 실행하여 시스템 레벨 전압과 주파수 스케일링을 활성화한다:
ifconfig eth0 down
systemctl stop weston
echo 1 > /sys/devices/platform/imx8ulp-lpm/enable
대부분의 시스템에서 칩은 위의 두 커맨드가 실행된 후 저전력 IDLE 모드로 진입한다.
버스 주파수를 조작하려면, 다음 커맨드를 사용하여 원하는 결과를 얻는다:
cat /sys/bus/platform/drivers/imx_busfreq/soc\:busfreq/enable -> 버스 주파수의 상태를 디스플레이한다.
echo 0 > /sys/bus/platform/drivers/imx_busfreq/soc\:busfreq/enable -> 버스 주파수를 비활성화한다.
echo 1 > /sys/bus/platform/drivers/imx_busfreq/soc\:busfreq/enable -> 버스 주파수를 활성화한다.
i.MX Linux Reference Manual(IMXLXRM)은 DVFS에 대한 챕터에서 버스 주파수에 대한 자세한 정보를 가지고 있다.
'NXP i.MX SoC Family > i.MX Linux User`s Guide (IMXLUG)' 카테고리의 다른 글
i.MX Linux User's Guide (IMXLUG) - Audio (0) | 2023.03.06 |
---|---|
i.MX Linux User's Guide (IMXLUG) - Multimedia (0) | 2023.02.24 |
i.MX Linux User's Guide (IMXLUG) - Enabling Solo Emulation (0) | 2023.02.24 |
i.MX Linux User's Guide (IMXLUG) - Booting Linux OS (0) | 2023.02.02 |
i.MX Linux User's Guide (IMXLUG) - Basic Terminal Setup (0) | 2023.02.02 |