Pergunta

to be able to run my eSata Sheevaplug with Debian Wheezy I had to upgrade U-Boot to the DENX version. As step-by-step guide I used this read from Martin Michlmayr. I did the upgrade using screen and a USB stick at the plug. The upgrade went good and after resetting I got the plug started with the new version.

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>>

In the guide is written to set machid environment variable and MAC address. But unfortunatly saveenv fails due to bad blocks in the NAND. I tried different versions of U-Boot also the one provided by NewIT. All behave the same way.

Marvell>> setenv machid a76
Marvell>> saveenv
Saving Environment to NAND...
Erasing NAND...
Skipping bad block at  0x00060000                                          

Writing to NAND... FAILED!

There are some blocks marked as bad, which might be normal - by 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

Has someone a clue what the problem is and what I need to change to be able saving environment variables in u-boot?

Thanks, schibbl

Foi útil?

Solução

Due to configuration of environment variable storage at NAND, the sector size of 128k and a bad block mapping the environment variable storage adress it is not possible to write env to NAND.

Marvell>> nand bad

Device 0 bad blocks:
  00060000
  ...

include/configs/sheevaplug.h which points perfectly to the bad block.

/*
 * 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 */

Because of unused sector 0x80000 to 0x9FFFF I moved env storage there.

/*
 * 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 */

Beware! We have to ensure our compiled u-boot.kwb is less then 384k. Otherwise we will write u-boot to bad block marked memory and will brick the device.

Best way to recompile with custom env address, is to use Michlmayrs sources, which includes patches for mmc and e-sata support.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top