Ich arbeite mit Linux Version 3.10.17 und verwende den Gerätebaum zum Booten des Kernels.
Im Gerätebaum definiere ich einen "pwm-backlight" kompatiblen Treiber. Der Treiber definiert eine Variable,default-brightness-level
Beim Start wendet der Treiber diesen Wert auf den „Helligkeit“-Wert des Treibers an.
Ich würde gerne wissen, ob es eine Möglichkeit gibt, einen Wert zu speichern und ihn anstelle der „Standardhelligkeitsstufe“ zu verwenden. Der Zweck besteht darin, einen Helligkeitswert speichern und beim nächsten Start von Linux verwenden zu können.
Antwort1
Verwenden von sysfs
Es sollte möglich sein, mit sysfs einen Wert für die Datei festzulegen brightness
. Schauen Sie unter nach /sys/class/backlight
; dort gibt es höchstwahrscheinlich ein Unterverzeichnis mit Ihrem Hintergrundbeleuchtungsgerät. In diesem Verzeichnis sollte eine Datei vorhanden sein brightness
.
Leiten Sie einen Wert, der dem Index des Werts (in brightness-levels
) entspricht, den Sie verwenden möchten, an diese Datei weiter. Beispiel:
me@mydevice:/ $ echo 3 > /sys/class/backlight/backlight_lvds.0/brightness
Dadurch sollte der Wert auf den vierten Eintrag in gesetzt werden brightness-levels
.
Diese Datei kann auch abgefragt werden:
me@mydevice:/ $ cat /sys/class/backlight/backlight_lvds.0/brightness
3
Antwort2
Verwenden einer benutzerdefinierten (portablen) dtb-Datei
Hinweis: Ich weiß, Sie erwähnenanstelle der "Standard-Helligkeitsstufe", aber wenn eine dtb-Datei erstellt wird, kann diese verwendet werden, um die Konfiguration zu speichern, die außerhalb des Kernels gespeichert ist (d. h. sie könnte durch eine andere Datei ersetzt werden, ohne den Kernel neu zu erstellen).
Wenn Sie Zugriff auf die dtsi-Datei haben, mit der der Kernel erstellt wurde, können Sie den Wert dort im entsprechenden Abschnitt ändern. Diese Datei sollte sich im arch/arm/boot/dts
Verzeichnis für die Kernelquelle befinden.
Auf derselben Ebene wie der compatible = "pwm-backlight"
gibt es auch einen default-brightness-level
Parameter. Ändern Sie diesen Wert in einen Wert Ihrer Wahl (er entspricht dem Index des brightness-levels
Arrays. Beispiel:
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";
};
Anschließend können Sie die dtsi-Datei in eine dtb-Datei kompilieren, die in Ihrer Boot-Partition enthalten ist. Kompilieren Sie mit dem folgenden make dtbs
Befehl. Etwa so:
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
Auf die Ausgabe-dtb-Datei wird dann in Ihrem Bootloader-Skript verwiesen. Für UBoot lautet sie beispielsweise:
setenv dtbname myCustom.dtb
myCustom.dtb
ist die Ausgabe des make dtbs
Befehls.
Antwort3
Der Kernel erledigt dies nicht für Sie (speichert einen Hintergrundbeleuchtungswert und wendet ihn beim nächsten Neustart an), aber wenn Ihr Kernel SysFS-Unterstützung hat, können Sie den aktuellen Wert in einer Konfigurationsdatei speichern (könnte z. B. /etc/backlight.conf sein) und ihn beim Booten anwenden.
Wenn Sie die Hintergrundbeleuchtung ändern:
echo <newvalue> > /sys/class/backlight/<subdir>/brightness
echo <newvalue> > /etc/backlight.conf
Beim Booten:
if [ -f /etc/backlight.conf ]; then
cat /etc/backlight.conf > /sys/class/backlight/<subdir>/brightness
fi