@ -5,44 +5,44 @@ Die Implementierung / Decodierung beruht auf den Angaben aus dem Do-
kument "PIC LWE-Tastatur" in der Fassung vom 9. 3. 2001, insbesonde-
kument "PIC LWE-Tastatur" in der Fassung vom 9. 3. 2001, insbesonde-
re Tabelle 3 im Kapitel 4.3 Tastencodes. In U-Boot werden die vom
re Tabelle 3 im Kapitel 4.3 Tastencodes. In U-Boot werden die vom
Keyboard-Controller gelesenen Daten hexadezimal codiert in der auto-
Keyboard-Controller gelesenen Daten hexadezimal codiert in der auto-
matisch angelegten Environment-Variablen "keybd" übergeben. Ist kei-
matisch angelegten Environment-Variablen "keybd" übergeben. Ist kei-
ne Taste gedrückt worden, steht dort:
ne Taste gedrückt worden, steht dort:
keybd=000000000000000000
keybd=000000000000000000
Der decodierte Tastencode ("keybd") kann mit den "bootargs" an den
Der decodierte Tastencode ("keybd") kann mit den "bootargs" an den
Linux-Kernel übergeben und dort z. B. in einem Device-Treiber oder
Linux-Kernel übergeben und dort z. B. in einem Device-Treiber oder
einer Applikation ausgewertet werden.
einer Applikation ausgewertet werden.
Sonderfunktionen beim Booten:
Sonderfunktionen beim Booten:
Es lassen sich eine oder mehrere (beliebig viele) Tasten oder Tasten-
Es lassen sich eine oder mehrere (beliebig viele) Tasten oder Tasten-
kombinationen definieren, die Sonderfunktionen auslösen, wenn diese
kombinationen definieren, die Sonderfunktionen auslösen, wenn diese
Tasten beim Booten (Reset) gedrückt sind.
Tasten beim Booten (Reset) gedrückt sind.
Wird eine eingestellte Taste bzw. Tastenkombination erkannt, so wird
Wird eine eingestellte Taste bzw. Tastenkombination erkannt, so wird
in U-Boot noch vor dem Start des "Countdown" und somit vor jedem an-
in U-Boot noch vor dem Start des "Countdown" und somit vor jedem an-
deren Kommando der Inhalt einer dieser Taste bzw. Tastenkombination
deren Kommando der Inhalt einer dieser Taste bzw. Tastenkombination
zugeordneten Environment-Variablen ausführen.
zugeordneten Environment-Variablen ausführen.
Die Environment-Variable "magic_keys" wird als Liste von Zeichen ver-
Die Environment-Variable "magic_keys" wird als Liste von Zeichen ver-
standen, die als Suffix an den Namen "key_magic" angefügt werden und
standen, die als Suffix an den Namen "key_magic" angefügt werden und
so die Namen der Environment-Variablen definieren, mit denen die
so die Namen der Environment-Variablen definieren, mit denen die
Tasten (-kombinationen) festgelegt werden:
Tasten (-kombinationen) festgelegt werden:
Ist "magic_keys" NICHT definiert, so wird nur die in der Environment-
Ist "magic_keys" NICHT definiert, so wird nur die in der Environment-
Variablen "key_magic" codierte Tasten (-kombination) geprüft, und
Variablen "key_magic" codierte Tasten (-kombination) geprüft, und
ggf. der Inhalt der Environment-Variablen "key_cmd" ausgeführt (ge-
ggf. der Inhalt der Environment-Variablen "key_cmd" ausgeführt (ge-
nauer: der Inhalt von "key_cmd" wird der Variablen "preboot" zugewie-
nauer: der Inhalt von "key_cmd" wird der Variablen "preboot" zugewie-
sen, die ausgeführt wird, unmittelbar bevor die interaktive Kommando-
sen, die ausgeführt wird, unmittelbar bevor die interaktive Kommando-
interpretation beginnt).
interpretation beginnt).
Enthält "magic_keys" z. B. die Zeichenkette "0123CB*", so werden
Enthält "magic_keys" z. B. die Zeichenkette "0123CB*", so werden
nacheinander folgende Aktionen ausgeführt:
nacheinander folgende Aktionen ausgeführt:
prüfe Tastencode ggf. führe aus Kommando
prüfe Tastencode ggf. führe aus Kommando
in Variable in Variable
in Variable in Variable
-----------------------------------
-----------------------------------
key_magic0 ==> key_cmd0
key_magic0 ==> key_cmd0
@ -55,43 +55,43 @@ nacheinander folgende Aktionen ausgef
key_magic* ==> key_cmd*
key_magic* ==> key_cmd*
Hinweis: sobald ein aktivierter Tastencode erkannt wurde, wird die
Hinweis: sobald ein aktivierter Tastencode erkannt wurde, wird die
Bearbeitung abgebrochen; es wird daher höchstens eines der definier-
Bearbeitung abgebrochen; es wird daher höchstens eines der definier-
ten Kommandos ausgeführt, wobei die Priorität durch die Suchreihen-
ten Kommandos ausgeführt, wobei die Priorität durch die Suchreihen-
folge festgelegt wird, also durch die Reihenfolge der Zeichen in der
folge festgelegt wird, also durch die Reihenfolge der Zeichen in der
Varuiablen "magic_keys".
Varuiablen "magic_keys".
Die Codierung der Tasten, die beim Booten gedrückt werden müssen, um
Die Codierung der Tasten, die beim Booten gedrückt werden müssen, um
eine Funktion auszulösen, erfolgt nach der Tastaturtabelle.
eine Funktion auszulösen, erfolgt nach der Tastaturtabelle.
Die Definitionen
Die Definitionen
=> setenv key_magic0 3a+3b
=> setenv key_magic0 3a+3b
=> setenv key_cmd0 setenv bootdelay 30
=> setenv key_cmd0 setenv bootdelay 30
bedeuten dementsprechend, daß die Tasten mit den Codes 0x3A (Taste
bedeuten dementsprechend, daß die Tasten mit den Codes 0x3A (Taste
"F1") und 0x3B (Taste "F2") gleichzeitig gedrückt werden müssen. Sie
"F1") und 0x3B (Taste "F2") gleichzeitig gedrückt werden müssen. Sie
können dort eine beliebige Tastenkombination eintragen (jeweils 2
können dort eine beliebige Tastenkombination eintragen (jeweils 2
Zeichen für die Hex-Codes der Tasten, und '+' als Trennzeichen).
Zeichen für die Hex-Codes der Tasten, und '+' als Trennzeichen).
Wird die eingestellte Tastenkombination erkannt, so wird in U-Boot
Wird die eingestellte Tastenkombination erkannt, so wird in U-Boot
noch vor dem Start des "Countdown" und somit vor jedem anderen Kom-
noch vor dem Start des "Countdown" und somit vor jedem anderen Kom-
mando das angebene Kommando ausgeführt und somit ein langes Boot-
mando das angebene Kommando ausgeführt und somit ein langes Boot-
Delay eingetragen.
Delay eingetragen.
Praktisch könnten Sie also in U-Boot "bootdelay" auf 0 setzen und
Praktisch könnten Sie also in U-Boot "bootdelay" auf 0 setzen und
somit stets ohne jede User-Interaktion automatisch booten, außer,
somit stets ohne jede User-Interaktion automatisch booten, außer,
wenn die beiden Tasten "F1" und "F2" beim Booten gedrückt werden:
wenn die beiden Tasten "F1" und "F2" beim Booten gedrückt werden:
dann würde ein Boot-Delay von 30 Sekunden eingefügt.
dann würde ein Boot-Delay von 30 Sekunden eingefügt.
Hinweis: dem Zeichen '#' kommt innerhalb von "magic_keys" eine beson-
Hinweis: dem Zeichen '#' kommt innerhalb von "magic_keys" eine beson-
dere Bedeutung zu: die dadurch definierte Key-Sequenz schaltet den
dere Bedeutung zu: die dadurch definierte Key-Sequenz schaltet den
Monitor in den "Debug-Modus" - das bedeutet zunächst, daß alle weite-
Monitor in den "Debug-Modus" - das bedeutet zunächst, daß alle weite-
ren Meldungen von U-Boot über das LCD-Display ausgegeben werden;
ren Meldungen von U-Boot über das LCD-Display ausgegeben werden;
außerdem kann man durch das mit dieser Tastenkombination verknüpfte
außerdem kann man durch das mit dieser Tastenkombination verknüpfte
Kommando z. B. die Linux-Bootmeldungen ebenfalls auf das LCD-Display
Kommando z. B. die Linux-Bootmeldungen ebenfalls auf das LCD-Display
legen, so daß der Boot-Vorgang direkt und ohne weitere Hilfsmittel
legen, so daß der Boot-Vorgang direkt und ohne weitere Hilfsmittel
analysiert werden kann.
analysiert werden kann.
Beispiel:
Beispiel:
@ -107,20 +107,20 @@ chert:
(6) => setenv bootcmd bootp\;run nfsargs\;run addip\;run addfb\;bootm
(6) => setenv bootcmd bootp\;run nfsargs\;run addip\;run addfb\;bootm
Hierbei wird die Linux Commandline (in der Variablen "bootargs") im
Hierbei wird die Linux Commandline (in der Variablen "bootargs") im
Boot-Kommando "bootcmd" (6) schrittweise zusammengesetzt: zunächst
Boot-Kommando "bootcmd" (6) schrittweise zusammengesetzt: zunächst
werden die für Root-Filesystem über NFS erforderlichen Optionen ge-
werden die für Root-Filesystem über NFS erforderlichen Optionen ge-
setzt ("run nfsargs", vgl. (3)), dann die Netzwerkkonfiguration an-
setzt ("run nfsargs", vgl. (3)), dann die Netzwerkkonfiguration an-
gefügt ("run addip", vgl. (4)), und schließlich die Systemconsole
gefügt ("run addip", vgl. (4)), und schließlich die Systemconsole
definiert ("run addfb").
definiert ("run addfb").
Dabei wird im Normalfall die Definition (5) verwendt; wurde aller-
Dabei wird im Normalfall die Definition (5) verwendt; wurde aller-
dings beim Reset die entsprechende Taste gedrückt gehalten, so wird
dings beim Reset die entsprechende Taste gedrückt gehalten, so wird
diese Definition bei der Ausführung des in (2) definierten Kommandos
diese Definition bei der Ausführung des in (2) definierten Kommandos
überschrieben, so daß Linux die Bootmeldungen auch über das Frame-
überschrieben, so daß Linux die Bootmeldungen auch über das Frame-
buffer-Device (=LCD-Display) ausgibt.
buffer-Device (=LCD-Display) ausgibt.
Beachten Sie die Verdoppelung der '\'-Escapes in der Definition von
Beachten Sie die Verdoppelung der '\'-Escapes in der Definition von
"key_cmd#" - diese ist erforderlich, weil der String _zweimal_ inter-
"key_cmd#" - diese ist erforderlich, weil der String _zweimal_ inter-
pretiert wird: das erste Mal bei der Eingabe von "key_cmd#", das
pretiert wird: das erste Mal bei der Eingabe von "key_cmd#", das
zweite Mal, wenn der String (als Inhalt von "preboot") ausgeführt
zweite Mal, wenn der String (als Inhalt von "preboot") ausgeführt
wird.
wird.