您提供了以下U-Boot命令输出:
=> md nvram
00000000: 7b1b1185 77ef4e0f 20082c8c 561a45d0 {...w.N. .,.V.E.
00000010: 699012a1 c36840a9 8f825272 9fd95faf i....h@...Rr.._.
...
这是“nvram”的虚假数据。
从
打印环境
输出,没有环境变量名“nvram”。
符号“nvram”似乎未定义,似乎默认值为0。
基于内核命令行和MTD分区映射
“NVRAM”
可能不是存储设备,而是Spansion串行闪存芯片中的一个分区,即。
partitions[4] = {.name = nvram, .offset = 0x007b0000,.size = 0x00050000 (320K) }
如果是这样,该分区显然会映射到U-Boot中的0x487b0000到0x487fffff。
您应该能够使用命令检查该分区的数据
md 0x487b0000
如果您想复制它,应该引导到Linux并使用
日
命令
dd if=/dev/mtdblock4 of=save_nvram.img
将此图像文件与要写入的文件进行比较,以查看其是否已损坏。
是否可以在U-boot shell模式下更新NVRAM?
假设“NVRAM”实际上是串行闪存末尾的分区,那么是的。
根据两个更新变量的命令语法,以下U-Boot命令应完成任务:
tftpboot 0x80001000 new_nvram.img
protect off 0x487b0000 +0x50000
erase 0x487b0000 +0x50000
cp.b 0x80001000 0x487b0000 0x50000
protect on 0x487b0000 +0x50000
注:
你提供的信息不一致。
从U-Boot
打印环境
命令
引导参数
定义为:
root=/dev/mtdblock5 mtdparts=physmap-flash.0:512k(U-Boot)ro,256K(env1),256K(env2),0x40000(script),0x140000(Kernel),0x140000(RootFileSystem),5M@1M(UBFI1),5M(UBFI2) console=ttyS0,115200n8 ethaddr0=${ethaddr}
但是内核日志表明实际传递的命令行是
root=/dev/mtdblock3 mtdparts=spansion:0x20000(U-Boot)ro,0x10000(env1),0x10000(env2),0x2d0000@0x4a0000(fWare-FS),0x50000@0x7B0000(nvram),0x3B0000@0x40000(UBFI1),0x3B0000@0x3F0000(UBFI2) console=ttyS0,115200n8