2012-09-15 52 views
3

我在嘗試保存uBoot中的環境變量時遇到問題,並讓它們在重新啓動時保持不變,請參閱下面的跟蹤。這是U-Boot 2009.08-00000-g19b0e8d-dirty(2012年5月29日 - 16:09:40)。任何想法可能是錯誤的? 「寫入Flash ... Flash未擦除」的消息有意義嗎?uboot環境變量保存似乎不起作用

 
-> setenv ipaddr 10.1.10.28 
-> saveenv 
Saving Environment to Flash... 
. done 
Un-Protected 1 sectors 
. done 
Un-Protected 1 sectors 
Erasing Flash... 
. done 
Erased 1 sectors 
Writing to Flash... Flash not Erased 
. done 
Protected 1 sectors 
. done 
Protected 1 sectors 
-> printenv 
bootdelay=1 
baudrate=115200 
serverip=10.1.10.40 
loadaddr=41000000 
u-boot=q4/u-boot.bin 
load=tftp ${loadaddr) ${u-boot} 
upd=run load; run prog 
bootargs=console=ttyMCF2,115200 panic=10 
rootpath=/tftpboot/ltib 
nfsargs=setenv bootargs ${bootargs} root=/dev/nfs rw nfsroot=${serverip}:${rootpath} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off 
nfs=run nfsargs; tftp q4/uImage-nfs; bootm 
prog=prot off 0 3ffff;era 0 3ffff;cp.b ${loadaddr} 0 ${filesize};save 
ext_wp_off=mw.b 10010020 e0 1 
ethact=FEC0 
ethaddr=3c:98:bf:00:00:14 
eth1addr=3c:98:bf:00:00:15 
nfsaddr=10.1.10.40 
httpPort=81 
hostname= 
stdin=serial 
stdout=serial 
stderr=serial 
mem=65024k 
ipaddr=10.1.10.28 

Environment size: 686/32763 bytes 
-> reset 


U-Boot 2009.08-00000-g19b0e8d-dirty (May 29 2012 - 16:09:40) 
(c) 2012. 

CPU: Freescale MCF53013 (Mask:73 Version:1) 
     CPU CLK 240 MHz BUS CLK 80 MHz 
Board: RevB 
I2C: ready 
DRAM: 64 MB 
FLASH: 32 MB 
In: serial 
Out: serial 
Err: serial 
Net: FEC0, FEC1 
-> printenv 
bootdelay=1 
baudrate=115200 
serverip=10.1.10.40 
loadaddr=41000000 
u-boot=q4/u-boot.bin 
load=tftp ${loadaddr) ${u-boot} 
upd=run load; run prog 
bootargs=console=ttyMCF2,115200 panic=10 
rootpath=/tftpboot/ltib 
nfsargs=setenv bootargs ${bootargs} root=/dev/nfs rw nfsroot=${serverip}:${rootpath} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off 
nfs=run nfsargs; tftp q4/uImage-nfs; bootm 
prog=prot off 0 3ffff;era 0 3ffff;cp.b ${loadaddr} 0 ${filesize};save 
ext_wp_off=mw.b 10010020 e0 1 
ethact=FEC0 
ethaddr=3c:98:bf:00:00:14 
eth1addr=3c:98:bf:00:00:15 
nfsaddr=10.1.10.40 
httpPort=81 
hostname= 
stdin=serial 
stdout=serial 
stderr=serial 
mem=65024k 

Environment size: 668/32763 bytes 
-> 

flinfo輸出爲:

 
-> flinfo 

Bank # 1: CFI conformant FLASH (16 x 16) Size: 32 MB in 262 Sectors 
    AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x227E 
    Erase timeout: 8192 ms, write timeout: 1 ms 
    Buffer write timeout: 5 ms, buffer size: 64 bytes 

    Sector Start Addresses: 
    00000000 RO 00008000 RO 00010000 RO 00018000 RO 00020000 RO 
    00040000  00060000  00080000  000A0000  000C0000  
    000E0000  00100000  00120000  00140000  00160000  
    00180000  001A0000  001C0000  001E0000  00200000  
    00220000  00240000  00260000  00280000  002A0000  
    002C0000  002E0000  00300000  00320000  00340000  
    00360000  00380000  003A0000  003C0000  003E0000  
    00400000  00420000  00440000  00460000  00480000  
    004A0000  004C0000  004E0000  00500000  00520000  
    00540000  00560000  00580000  005A0000  005C0000  
    005E0000  00600000  00620000  00640000  00660000  
    00680000  006A0000  006C0000  006E0000  00700000  
    00720000  00740000  00760000  00780000  007A0000  
    007C0000  007E0000  00800000  00820000  00840000  
    00860000  00880000  008A0000  008C0000  008E0000  
    00900000  00920000  00940000  00960000  00980000  
    009A0000  009C0000  009E0000  00A00000  00A20000  
    00A40000  00A60000  00A80000  00AA0000  00AC0000  
    00AE0000  00B00000  00B20000  00B40000  00B60000  
    00B80000  00BA0000  00BC0000  00BE0000  00C00000  
    00C20000  00C40000  00C60000  00C80000  00CA0000  
    00CC0000  00CE0000  00D00000  00D20000  00D40000  
    00D60000  00D80000  00DA0000  00DC0000  00DE0000  
    00E00000  00E20000  00E40000  00E60000  00E80000  
    00EA0000  00EC0000  00EE0000  00F00000  00F20000  
    00F40000  00F60000  00F80000  00FA0000  00FC0000  
    00FE0000  01000000  01020000  01040000  01060000  
    01080000  010A0000  010C0000  010E0000  01100000  
    01120000  01140000  01160000  01180000  011A0000  
    011C0000  011E0000  01200000  01220000  01240000  
    01260000  01280000  012A0000  012C0000  012E0000  
    01300000  01320000  01340000  01360000  01380000  
    013A0000  013C0000  013E0000  01400000  01420000  
    01440000  01460000  01480000  014A0000  014C0000  
    014E0000  01500000  01520000  01540000  01560000  
    01580000  015A0000  015C0000  015E0000  01600000  
    01620000  01640000  01660000  01680000  016A0000  
    016C0000  016E0000  01700000  01720000  01740000  
    01760000  01780000  017A0000  017C0000  017E0000  
    01800000  01820000  01840000  01860000  01880000  
    018A0000  018C0000  018E0000  01900000  01920000  
    01940000  01960000  01980000  019A0000  019C0000  
    019E0000  01A00000  01A20000  01A40000  01A60000  
    01A80000  01AA0000  01AC0000  01AE0000  01B00000  
    01B20000  01B40000  01B60000  01B80000  01BA0000  
    01BC0000  01BE0000  01C00000  01C20000  01C40000  
    01C60000  01C80000  01CA0000  01CC0000  01CE0000  
    01D00000  01D20000  01D40000  01D60000  01D80000  
    01DA0000  01DC0000  01DE0000  01E00000  01E20000  
    01E40000  01E60000  01E80000  01EA0000  01EC0000  
    01EE0000  01F00000  01F20000  01F40000  01F60000  
    01F80000  01FA0000  01FC0000  01FE0000 RO 01FE8000 RO 
    01FF0000  01FF8000 
+0

*「Flash未擦除」* - 是(錯誤)消息很重要,因爲它表示寫入閃存失敗。這是U-Boot的預建版本還是定製版本?你的主板有什麼樣的閃存,並配置U-Boot來支持它?什麼是閃存分區映射? – sawdust

+0

嘿鋸屑謝謝你的消息。這個U-Boot是從源代碼構建的(所以不是預先構建的)和概率。它有一些小的變化。所使用的Flash的類型是絕對支持的,因爲這全部用於正常工作,這是我見過的第一個失敗。讓我知道要運行哪些命令來打印閃存分區映射,並在此處包含結果。 –

+0

你的U-Boot可能有一個迴歸。看起來像有2個扇區分配給環境變量(即2個扇區是「不受保護的」,後來是「受保護的」,但只有1個扇區被擦除)。扇區大小是16KB嗎? 'flinfo'將顯示分區信息。板上有什麼樣的32MB閃存芯片?如果它是NAND,那麼應該使用「nand」例程,而不是「閃存」例程,例如。 'nand信息'。也許你需要在啓用「debug」的情況下重新配置U-Boot,然後重新構建它。 – sawdust

回答

0

我重新刷新我的Flash,現在可以保存環境變量確定。肯定是一些腐敗?

1

使用「fw_setenv」更新我的U-Boot環境後,我遇到了類似的問題。

我發現我的U-Boot在fw_setenv將它鎖定在Linux後無法解鎖環境扇區。一切都會看起來不錯,但是寫作會像你一樣失敗。

我能解決我的問題,通過使用flash_unlock從Linux解鎖env扇區。

1

在Linux中偶爾使用fw_setenv後會發生這種情況。如果你可以啓動到你正在運行的Linux,執行「mtd unlock/devX」,其中X是你的u-boot環境變量的分區,然後啓動回u-boot。您應該能夠執行「Saveenv」