能够使用Debian Wheezy运行我的eSata Sheevaplug我必须将U-Boot升级到DENX版本。 作为分步指南,我使用了this read from Martin Michlmayr。我使用屏幕和插头上的USB记忆棒进行了升级。 升级顺利,重置后我开始使用新版本。
Marvell>> version
U-Boot 2013.10 (Oct 21 2013 - 21:06:56)
Marvell-Sheevaplug - eSATA - SD/MMC
gcc (Debian 4.8.1-9) 4.8.1
GNU ld (GNU Binutils for Debian) 2.23.52.20130727
Marvell>>
在指南中写入设置machid环境变量和MAC地址。 但不幸的是,由于NAND中的坏块,saveenv失败了。我尝试了不同版本的U-Boot the one provided by NewIT。一切都表现得一样。
Marvell>> setenv machid a76
Marvell>> saveenv
Saving Environment to NAND...
Erasing NAND...
Skipping bad block at 0x00060000
Writing to NAND... FAILED!
有一些标记为坏的块,这可能是正常的 - 由NewIT。
Marvell>> nand info
Device 0: nand0, sector size 128 KiB
Page size 2048 b
OOB size 64 b
Erase size 131072 b
Marvell>> nand bad
Device 0 bad blocks:
00060000
00120000
00360000
039c0000
0c300000
10dc0000
1ac40000
1f1c0000
有人知道问题是什么以及我需要更改什么才能在u-boot中保存环境变量?
谢谢, schibbl
答案 0 :(得分:0)
由于NAND的环境变量存储配置,128k的扇区大小和映射环境变量存储的坏块,因此不可能将env写入NAND。
Marvell>> nand bad
Device 0 bad blocks:
00060000
...
include/configs/sheevaplug.h完全指向坏块。
/*
* max 4k env size is enough, but in case of nand
* it has to be rounded to sector size
*/
#define CONFIG_ENV_SIZE 0x20000 /* 128k */
#define CONFIG_ENV_ADDR 0x60000
#define CONFIG_ENV_OFFSET 0x60000 /* env starts here */
由于未使用的扇区0x80000到0x9FFFF,我在那里移动了env存储。
/*
* max 4k env size is enough, but in case of nand
* it has to be rounded to sector size
*/
#define CONFIG_ENV_SIZE 0x20000 /* 128k */
#define CONFIG_ENV_ADDR 0x80000
#define CONFIG_ENV_OFFSET 0x80000 /* env starts here due to bad block */
小心!我们必须确保我们编译的u-boot.kwb小于384k。否则,我们会将u-boot写入坏块标记的内存,并对设备进行处理。
使用自定义env地址重新编译的最佳方法是使用Michlmayrs sources,其中包括mmc和e-sata支持的补丁。