2

Я работаю с версией Linux 3.10.17, используя дерево устройств для загрузки ядра.

В дереве устройств я определяю драйвер, совместимый с pwm-backlight. Драйвер определяет переменную, default-brightness-level

При запуске драйвер применяет это значение к значению "яркости" драйвера.

Я хотел бы знать, если есть способ сохранить значение и использовать его вместо «по умолчанию уровень яркости». Цель состоит в том, чтобы иметь возможность сохранить значение яркости и использовать его при следующем запуске Linux.

3 ответа3

0

Ядро не сделает этого за вас (сохраните значение подсветки и примените его при следующем перезапуске), но если ваше ядро поддерживает 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
0

Использование собственного (переносимого) файла DTB

Примечание: я знаю, что вы упоминаете вместо «default- bright -level», но если создается файл 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 затем ссылается в вашем скрипте загрузчика. Например, для UBoot это:

setenv dtbname myCustom.dtb

myCustom.dtb - это вывод команды make dtbs .

0

Использование sysfs

Должна быть возможность использовать sysfs для установки значения в файл brightness . Загляните в /sys/class/backlight ; скорее всего, есть подкаталог с вашим устройством подсветки. В этом каталоге должна быть brightness файла.

Передайте значение, соответствующее индексу значения (в brightness-levels), которое вы хотите использовать в этом файле. Например:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .