Wie u-boot-bootloader liest/speichert die Umgebungsvariablen?
- Wie u-boot-bootloader liest/speichert die Umgebungsvariablen ?
-
Wie erklären wir die Adresse von u-boot environment Variablen Abschnitt in den Flash ?
-
Aus der Beschreibung bei hier : Die U-Boot-Umgebung ist ein Speicherblock, der ist gehalten, die auf den persistenten Speicher und in den RAM kopiert, wenn U-Boot startet.
Was die Bedeutung von " in den RAM kopiert" ?
U-boot block kopieren des Speichers der environment-Variablen im RAM ?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, U-boot block kopieren des Speichers der environment-Variablen im RAM.
Den permanenten Speicher, wo der block herkommt, ist Plattform-spezifisch. Einige Allgemeine Speicheroptionen (und source-Datei, die Handhabung, die Speicher-option):
CONFIG_ Definitionen in den include/configs/yourboard.h bestimmen die details. Zum Beispiel, für SPI-flash abgebildet an der Oberseite des Speichers, vielleicht:
CONFIG_ENV_ADDR Adresse von u-boot environment Variablen Abschnitt in Flash.
Beachten Sie, dass die u-boot automatisch erstellt eine CRC32 über diesem Abschnitt, wenn beim schreiben der Umgebung in den persistenten Speicher. Die CRC wird überprüft, wenn Umgebung Lesen Sie auf Start. Wenn CRC-check nicht bestanden hat, kann die gespeicherte Umgebung wird nicht verwendet; stattdessen wird eine neue Standard-Umgebung hardcoded in den Programm-code verwendet wird, ist ein besonderer Fall.
Während der U-Boot-Initialisierung, die environment-Variablen werden importiert in eine hash-Tabelle. Im Betrieb werden alle lese - /schreib-Operationen, und alle "printenv" (display-Umgebungsvariable) und "setenv" (set environment variable) - Befehle verwenden Sie diese Tabelle Einträge. Änderungen sind nicht gespeicherte, bis Kommando "saveenv" ist getan, die schreibt, um den persistenten Speicher.
Weitere Infos finden Sie unter u-boot/common/cmd_nvedit.c Zeilen 14-24 und u-boot/README Linien 3474-3881 (Zeilennummern sind für v2013.10).
Die Adresse und Größe von env-Variablen-block definiert werden im board-Header-Datei. Sehen include/configs/am3517_evm.h zum Beispiel:
u-boot lädt
CONFIG_SYS_ENV_SECT_SIZE
ausSMNAND_ENV_OFFSET
. Sie können die Werte ändern und dann speichern Sie Sie übersaveenv
.