Skip to contentSkip to conversation

u-boot fw_setenv does not write

U-Boot-Users Victor Librado 2 participants 3 messages Jul 2, 2007 – Jul 3, 2007

lore
Share & tools
lore
#0 lore raw

u-boot environment tool fw_setenv does not work when writing the environment to flash. Working with at91sam9260ek running kernel 2.6.20.

These are the traces:

# ./fw_setenv bootdelay 4
Warning: Bad CRC, using default environment
Unlocking flash...
Done
Erasing old environment...
Done
Writing environment to /dev/mtd1...
CRC write error on /dev/mtd1: Invalid argument
Error: can't write fw_env to flash

Kernel printk:
nand_write: Attempt to write not page aligned data

In /etc/fw_env.config configuration:

$ more fw_env.config
# 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/mtd1               0x80000         0x20000         0x20000

Offset and environmet size as defined in myboard.h for u-boot compilation. I suppose flash sector size is the erase (block size).

Any help please?

Victor Librado Sancho
Departamento I+D
------------------------------------------------------------------------

#1 lore raw
Quoted 2 lines · Victor Librado

u-boot environment tool fw_setenv does not work when writing the environment to flash. Working with at91sam9260ek running kernel 2.6.20.

<snip>

Quoted 4 lines

Offset and environmet size as defined in myboard.h for u-boot compilation. I suppose flash sector size is the erase (block size).

Any help please?

There is nothing special about the u-boot env. The parameters are in human readable format if you dump the contents [or used to be last time I looked]. And the fw_xxx tools just access the flash through the normal MTD layer.

With this in mind, can you access that block using the standard utilities? cat? dd? einfo? erase? etc. If not, your MTD configuration for your board is broken.

Signature · 3 lines
Jeff Angielski
The PTR Group
www.theptrgroup.com
#2 lore raw

Yes, cat /dev/mtd1 shows the content and the environment variables.
Also linux mtd-utils, flash_eraseall, nandwrite works ... It seems a problem writing nand in fw_setenv

         # ./fw_setenv bootdelay 4
        Warning: Bad CRC, using default environment
        Unlocking flash...
        Done
        Erasing old environment...
        Done
        Writing environment to /dev/mtd1...
        CRC write error on /dev/mtd1: Invalid argument
        Error: can't write fw_env to flash

It erases but cannot write. Indeed rebooting starts with the default environment.

Kernel printk:
nand_write: Attempt to write not page aligned data

What may happens? Any with fw_setenv working compiled for arm architecture and uclibc?

Victor Librado Sancho
Departamento I+D
------------------------------------------------------------------------

Jeff Angielski escribi?:

Quoted 24 lines · Victor Librado
Quoted 4 lines

u-boot environment tool fw_setenv does not work when writing the environment to flash. Working with at91sam9260ek running kernel 2.6.20.

<snip>

Quoted 5 lines

Offset and environmet size as defined in myboard.h for u-boot compilation. I suppose flash sector size is the erase (block size).

Any help please?

There is nothing special about the u-boot env. The parameters are in human readable format if you dump the contents [or used to be last time I looked]. And the fw_xxx tools just access the flash through the normal MTD layer.

With this in mind, can you access that block using the standard utilities? cat? dd? einfo? erase? etc. If not, your MTD configuration for your board is broken.