[U-Boot] spi and block bits
Michael Walle
michael at walle.cc
Fri Apr 17 09:15:25 CEST 2015
Am 2015-04-16 20:32, schrieb Jagan Teki:
> On 9 February 2015 at 04:57, Michael Walle <michael at walle.cc> wrote:
>> Hi there,
>>
>> I stumbled across a situation where the SPI flash on my board was
>> write
>> protected and i could not unlock it in the bootloader. This is
>> especially
>> unfortunate because the recovery mechanism relies on the bootloader to
>> be
>> able to erase the environment.
>
> Which flash vendor it is? seems like there is a hardware write
> protected
> mechanism in ST MICRON flashes.
it is a st micron. (see include/configs/lsxl.h)
> Please refer that, may be this looks similar to that W#/Vpp
> CONFIG_SYS_SPI_ST_ENABLE_WP_PIN
But it isn't related to that.
My point was, if linux enables the lock bits, there is no way you can
write to the flash in the bootloader anymore. Because it is not possible
to clear these bits in u-boot. If you have a macronix or an ST flash the
block protection bits are cleared on probe. see sf_probe.c:
/* Flash powers up read-only, so clear BP# bits */
#if defined(CONFIG_SPI_FLASH_ATMEL) || \
defined(CONFIG_SPI_FLASH_MACRONIX) || \
defined(CONFIG_SPI_FLASH_SST)
spi_flash_cmd_write_status(flash, 0);
#endif
Although as the comment says, it is because these chips power up in
read-only state by default. In my case, linux would set these bits.
To be more precise, the fw_setenv will leave the flash write protected
and i cannot modify the environment in the bootloader anymore.
-michael
More information about the U-Boot
mailing list