Joakim Tjernlund 9d8fbd1b20 powerpc, 8xx: Fixup all 8xx u-boot.lds scripts 13 年之前
..
Makefile 6d8962e814 Switch from archive libraries to partial linking 13 年之前
README.keybd fe126d8b34 Change all '$(...)' variable references into '${...}' 18 年之前
flash.c 6d0f6bcf33 rename CFG_ macros to CONFIG_SYS 15 年之前
lwmon.c 47e26b1bf9 cmd_usage(): simplify return code handling 14 年之前
pcmcia.c 6d0f6bcf33 rename CFG_ macros to CONFIG_SYS 15 年之前
u-boot.lds 9d8fbd1b20 powerpc, 8xx: Fixup all 8xx u-boot.lds scripts 13 年之前
u-boot.lds.debug 44c6e6591c rename _end to __bss_end__ 13 年之前

README.keybd


Tastaturabfrage:

Die Implementierung / Decodierung beruht auf den Angaben aus dem Do-
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
Keyboard-Controller gelesenen Daten hexadezimal codiert in der auto-
matisch angelegten Environment-Variablen "keybd" bergeben. Ist kei-
ne Taste gedrckt worden, steht dort:

keybd=000000000000000000

Der decodierte Tastencode ("keybd") kann mit den "bootargs" an den
Linux-Kernel bergeben und dort z. B. in einem Device-Treiber oder
einer Applikation ausgewertet werden.


Sonderfunktionen beim Booten:

Es lassen sich eine oder mehrere (beliebig viele) Tasten oder Tasten-
kombinationen definieren, die Sonderfunktionen auslsen, wenn diese
Tasten beim Booten (Reset) gedrckt sind.

Wird eine eingestellte Taste bzw. Tastenkombination erkannt, so wird
in U-Boot noch vor dem Start des "Countdown" und somit vor jedem an-
deren Kommando der Inhalt einer dieser Taste bzw. Tastenkombination
zugeordneten Environment-Variablen ausfhren.


Die Environment-Variable "magic_keys" wird als Liste von Zeichen ver-
standen, die als Suffix an den Namen "key_magic" angefgt werden und
so die Namen der Environment-Variablen definieren, mit denen die
Tasten (-kombinationen) festgelegt werden:

Ist "magic_keys" NICHT definiert, so wird nur die in der Environment-
Variablen "key_magic" codierte Tasten (-kombination) geprft, und
ggf. der Inhalt der Environment-Variablen "key_cmd" ausgefhrt (ge-
nauer: der Inhalt von "key_cmd" wird der Variablen "preboot" zugewie-
sen, die ausgefhrt wird, unmittelbar bevor die interaktive Kommando-
interpretation beginnt).

Enthlt "magic_keys" z. B. die Zeichenkette "0123CB*", so werden
nacheinander folgende Aktionen ausgefhrt:

prfe Tastencode ggf. fhre aus Kommando
in Variable in Variable
-----------------------------------
key_magic0 ==> key_cmd0
key_magic1 ==> key_cmd1
key_magic2 ==> key_cmd2
key_magic3 ==> key_cmd3
key_magicC ==> key_cmdC
key_magicB ==> key_cmdB
key_magicA ==> key_cmdA
key_magic* ==> key_cmd*

Hinweis: sobald ein aktivierter Tastencode erkannt wurde, wird die
Bearbeitung abgebrochen; es wird daher hchstens eines der definier-
ten Kommandos ausgefhrt, wobei die Prioritt durch die Suchreihen-
folge festgelegt wird, also durch die Reihenfolge der Zeichen in der
Varuiablen "magic_keys".


Die Codierung der Tasten, die beim Booten gedrckt werden mssen, um
eine Funktion auszulsen, erfolgt nach der Tastaturtabelle.

Die Definitionen

=> setenv key_magic0 3a+3b
=> setenv key_cmd0 setenv bootdelay 30

bedeuten dementsprechend, da die Tasten mit den Codes 0x3A (Taste
"F1") und 0x3B (Taste "F2") gleichzeitig gedrckt werden mssen. Sie
knnen dort eine beliebige Tastenkombination eintragen (jeweils 2
Zeichen fr die Hex-Codes der Tasten, und '+' als Trennzeichen).

Wird die eingestellte Tastenkombination erkannt, so wird in U-Boot
noch vor dem Start des "Countdown" und somit vor jedem anderen Kom-
mando das angebene Kommando ausgefhrt und somit ein langes Boot-
Delay eingetragen.

Praktisch knnten Sie also in U-Boot "bootdelay" auf 0 setzen und
somit stets ohne jede User-Interaktion automatisch booten, auer,
wenn die beiden Tasten "F1" und "F2" beim Booten gedrckt werden:
dann wrde ein Boot-Delay von 30 Sekunden eingefgt.


Hinweis: dem Zeichen '#' kommt innerhalb von "magic_keys" eine beson-
dere Bedeutung zu: die dadurch definierte Key-Sequenz schaltet den
Monitor in den "Debug-Modus" - das bedeutet zunchst, da alle weite-
ren Meldungen von U-Boot ber das LCD-Display ausgegeben werden;
auerdem kann man durch das mit dieser Tastenkombination verknpfte
Kommando z. B. die Linux-Bootmeldungen ebenfalls auf das LCD-Display
legen, so da der Boot-Vorgang direkt und ohne weitere Hilfsmittel
analysiert werden kann.

Beispiel:

In U-Boot werden folgende Environment-Variablen gesetzt und abgespei-
chert:

(1) => setenv magic_keys 01234#X
(2) => setenv key_cmd# setenv addfb setenv bootargs \\${bootargs} console=tty0 console=ttyS1,\\${baudrate}
(3) => setenv nfsargs setenv bootargs root=/dev/nfs rw nfsroot=\${serverip}:\${rootpath}
(4) => setenv addip setenv bootargs \${bootargs} ip=\${ipaddr}:\${serverip}:\${gatewayip}:\${netmask}:\${hostname}::off panic=1
(5) => setenv addfb setenv bootargs \${bootargs} console=ttyS1,\${baudrate}
(6) => setenv bootcmd bootp\;run nfsargs\;run addip\;run addfb\;bootm

Hierbei wird die Linux Commandline (in der Variablen "bootargs") im
Boot-Kommando "bootcmd" (6) schrittweise zusammengesetzt: zunchst
werden die fr Root-Filesystem ber NFS erforderlichen Optionen ge-
setzt ("run nfsargs", vgl. (3)), dann die Netzwerkkonfiguration an-
gefgt ("run addip", vgl. (4)), und schlielich die Systemconsole
definiert ("run addfb").

Dabei wird im Normalfall die Definition (5) verwendt; wurde aller-
dings beim Reset die entsprechende Taste gedrckt gehalten, so wird
diese Definition bei der Ausfhrung des in (2) definierten Kommandos
berschrieben, so da Linux die Bootmeldungen auch ber das Frame-
buffer-Device (=LCD-Display) ausgibt.

Beachten Sie die Verdoppelung der '\'-Escapes in der Definition von
"key_cmd#" - diese ist erforderlich, weil der String _zweimal_ inter-
pretiert wird: das erste Mal bei der Eingabe von "key_cmd#", das
zweite Mal, wenn der String (als Inhalt von "preboot") ausgefhrt
wird.