[U-Boot] erase and saveenv stop working after using fw_setenv

Petri Lehtinen
2008-09-16T07:46:26Z

Hi!

I'm using U-Boot 1.3.4 and Linux 2.6.26.5 on MPC8323E-RDB. After using
fw_printenv in Linux, erase and saveenv stop working in U-Boot. In
Linux, fw_* still work.

When using erase, this is the result:

=> protect off fe040000 fe05ffff
Un-Protected 1 sectors
=> erase fe040000 fe05ffff

Flash erase error at address fe040000
Block Erase Error.
Block locked.
done
Erased 1 sectors
=> md fe040000
fe040000: c7be9eae 626f6f74 636d643d 73657465 ....bootcmd=sete
fe040010: 6e762062 6f6f7461 72677320 726f6f74 nv bootargs root
...

So the sector doesn't get erased.

Errors are similar when using saveenv:

=> saveenv
Saving Environment to Flash...
Un-Protected 1 sectors
Erasing Flash...
Flash erase error at address fe040000
Block Erase Error.
Block locked.
done
Erased 1 sectors

I tracked the error message down to cfi_flash.c, where this function
call fails:

flash_isequal (info, sector, 0, FLASH_STATUS_DONE)

However, I have no clue on how CFI works, so my ability to debug it
further stops here. A possible reason I can think of is that the ioctl
calls in fw_setenv are somehow messing up the Flash status.

Any ideas?

--
Petri Lehtinen
Inoi Oy
Tel. : +358 40 758 0229
Email: petri.lehtinen at inoi.fi