Wie greife ich von Linux aus auf die U-Boot-Umgebung zu?

Wie greife ich von Linux aus auf die U-Boot-Umgebung zu?

Wie kann ich auf die u-Boot-Umgebungsvariablen in Linux zugreifen und sie ändern? Verwenden des Verzeichnisses u-boot/tools/env im u-Boot-Verzeichnis:

u-boot$ make env 

Dadurch wurde die ausführbare Datei erstellt fw_printenv. Ich habe sie nach /usr/sbin und in die Zieldatei etc/fw_env.config kopiert:


# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundand
# environment sector is assumed present.
# MTD device name     Device offset    Env. size    Flash sector size
/dev/mtd0          0x00000                0x20000         0x20000

target#./fw_printenv
SEGV

Was verursacht diesen Fehler?

/proc/mtd

dev:    size   erasesize  name                                                  
mtd0: 00020000 00020000 "flash_uboot_env"                                       
mtd1: 002e0000 00020000 "flash_linux_image"                                     
mtd2: 00900000 00020000 "flash_jffs2"                                           
mtd3: 00900000 00020000 "flash_data"

Antwort1

Ihr fw_env.configSystem unterscheidet sich von meinem. Ich habe die U-Boot-Umgebung im Bereich 0x00260000-0x00280000. Soweit ich mich erinnere, ist die Datei fw_env ziemlich sensibel, und wenn Sie eine Spalte vergessen, greift fw_setenv auf einen Standardwert zurück, was zu allen möglichen seltsamen Fehlern führen kann.

Nur als Referenz, hier ist meine fw_env.config

root@linux:~# cat /etc/fw_env.config 
# Dev. name    offset    env. size     flash sector size    nbr. sectors
  /dev/mtd1    0x00      0x2000        0x20000              1

Sie könnten es plattformübergreifend kompilieren straceund zur Fehlerbehebung verwenden.

verwandte Informationen