부팅 시 PWM 백라이트 밝기 설정

부팅 시 PWM 백라이트 밝기 설정

저는 장치 트리를 사용하여 커널을 부팅하는 Linux 버전 3.10.17을 사용하고 있습니다.

장치 트리에서 "pwm-backlight" 호환 드라이버를 정의합니다. 드라이버는 변수를 정의합니다.default-brightness-level

시작 시 드라이버는 이 값을 드라이버의 "밝기" 값에 적용합니다.

"기본 밝기 수준" 대신 값을 저장하여 사용할 수 있는 방법이 있는지 알고 싶습니다. 목적은 밝기 값을 저장하여 다음에 Linux를 시작할 때 사용할 수 있도록 하는 것입니다.

답변1

sysfs 사용

sysfs를 사용하여 파일에 값을 설정하는 것이 가능해야 합니다 brightness. 아래를 살펴보십시오 /sys/class/backlight. 백라이트 장치에 하위 디렉터리가 있을 가능성이 높습니다. 해당 디렉토리에는 파일이 있어야 합니다 brightness.

brightness-levels해당 파일에 사용하려는 값(in)의 인덱스에 해당하는 값을 파이프합니다 . 예를 들어:

me@mydevice:/ $ echo 3 > /sys/class/backlight/backlight_lvds.0/brightness

그러면 값이 의 4번째 항목으로 설정되어야 합니다 brightness-levels.

이 파일을 쿼리할 수도 있습니다.

me@mydevice:/ $ cat  /sys/class/backlight/backlight_lvds.0/brightness
3

답변2

사용자 정의(이식 가능한) dtb 파일 사용

참고: 당신이 언급한 것으로 알고 있습니다."기본 밝기 수준" 대신, 그러나 dtb 파일이 만들어지면 커널 외부에 저장된 구성을 저장하는 데 사용할 수 있습니다(즉, 커널을 다시 빌드하지 않고 다른 파일로 교체할 수 있음).

커널이 빌드된 dtsi 파일에 액세스할 수 있는 경우 해당 섹션에서 값을 수정할 수 있습니다. 이 파일은 arch/arm/boot/dts커널 소스 디렉터리에 있어야 합니다.

와 동일한 수준에는 매개변수 compatible = "pwm-backlight"도 있습니다 default-brightness-level. 이 값을 원하는 값으로 변경합니다(배열의 인덱스에 해당합니다 brightness-levels. 예:

backlight_lvds {
        compatible = "pwm-backlight";
        pwms = <&pwm4 0 500000>;
        brightness-levels = <100 75 60 50 40 30 20 10 5 0>;
        /* Default brightness level (index into the array defined by the "brightness-levels" property) */
        default-brightness-level = <5>;
        status = "okay";
    };

그런 다음 dtsi를 부팅 파티션에 포함된 dtb 파일로 컴파일할 수 있습니다. 명령 을 사용하여 컴파일합니다 make dtbs. 다음과 같은 것 :

cd ~/MyOS/kernel_imx 
export CROSS_COMPILE=`pwd`/../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- 
make myboard_defconfig 
make dtbs

그러면 출력 dtb 파일이 부트로더 스크립트에서 참조됩니다. 예를 들어, UBoo의 경우 다음과 같습니다.

setenv dtbname myCustom.dtb

myCustom.dtb명령 의 출력입니다 make dtbs.

답변3

커널은 이 작업을 수행하지 않지만(백라이트 값을 저장하고 다음 재시작 시 적용), 커널이 sysfs를 지원하는 경우 구성 파일(예: /etc/backlight.conf)에 현재 값을 유지할 수 있습니다. , 부팅 시 적용합니다.

백라이트를 변경할 때마다:

echo <newvalue> > /sys/class/backlight/<subdir>/brightness
echo <newvalue> > /etc/backlight.conf

부팅 시:

if [ -f /etc/backlight.conf ]; then
    cat /etc/backlight.conf > /sys/class/backlight/<subdir>/brightness
fi

관련 정보