spiFlash: bulk_erase method: allows BP bypass and printXX with a verbose level
This commit is contained in:
parent
e302bb6edc
commit
a7e4303563
|
|
@ -93,29 +93,54 @@ SPIFlash::SPIFlash(SPIInterface *spi, bool unprotect, int8_t verbose):
|
||||||
read_id();
|
read_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
int SPIFlash::bulk_erase()
|
int SPIFlash::bulk_erase(bool verbose, bool skip_bp_check)
|
||||||
{
|
{
|
||||||
int ret, ret2 = 0;
|
int ret = 0, ret2 = 0;
|
||||||
|
uint8_t bp = 0;
|
||||||
uint32_t timeout=1000000;
|
uint32_t timeout=1000000;
|
||||||
uint8_t bp = get_bp();
|
if (!skip_bp_check) {
|
||||||
if (bp != 0) {
|
if (verbose)
|
||||||
if (!_unprotect) {
|
printInfo("Check Flash Protection: ", false);
|
||||||
printError("Error: Can't erase flash: block protection is set");
|
bp = get_bp();
|
||||||
printError(" can't unlock without --unprotect-flash");
|
if (bp != 0) {
|
||||||
return -1;
|
if (!_unprotect) {
|
||||||
|
printError("FAIL");
|
||||||
|
printError("Error: Can't erase flash: block protection is set");
|
||||||
|
printError(" can't unlock without --unprotect-flash");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = disable_protection();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = disable_protection()) != 0)
|
if (verbose) {
|
||||||
|
if (ret == 0)
|
||||||
|
printSuccess("DONE");
|
||||||
|
else
|
||||||
|
printError("FAIL");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret != 0)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = write_enable()) != 0)
|
if (verbose)
|
||||||
|
printInfo("Bulk erase: ", false);
|
||||||
|
if ((ret = write_enable()) != 0) {
|
||||||
|
printError("FAIL");
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
ret2 = _spi->spi_put(FLASH_CE, NULL, NULL, 0);
|
ret2 = _spi->spi_put(FLASH_CE, NULL, NULL, 0);
|
||||||
if (ret2 == 0)
|
if (ret2 == 0)
|
||||||
ret2 = _spi->spi_wait(FLASH_RDSR, FLASH_RDSR_WIP, 0x00, timeout);
|
ret2 = _spi->spi_wait(FLASH_RDSR, FLASH_RDSR_WIP, 0x00, timeout);
|
||||||
|
if (verbose) {
|
||||||
|
if (ret2 == 0)
|
||||||
|
printSuccess("DONE");
|
||||||
|
else
|
||||||
|
printError("FAIL");
|
||||||
|
}
|
||||||
|
|
||||||
if (bp != 0)
|
if (!skip_bp_check && (bp != 0))
|
||||||
ret = enable_protection(bp);
|
ret = enable_protection(bp);
|
||||||
|
|
||||||
return ret | ret2;
|
return ret | ret2;
|
||||||
|
|
|
||||||
|
|
@ -71,8 +71,14 @@ class SPIFlash {
|
||||||
* \return false if unlock fail
|
* \return false if unlock fail
|
||||||
*/
|
*/
|
||||||
bool global_unlock();
|
bool global_unlock();
|
||||||
/* erase */
|
/*!
|
||||||
int bulk_erase();
|
* \brief bulk_erase: full Flash erase
|
||||||
|
* \param[in] verbose: display message for each steps
|
||||||
|
* \param[in] skip_bp_check: check if the flash is protected
|
||||||
|
* before erase, re-apply protect after.
|
||||||
|
* \return 0 for success, -1 otherwise
|
||||||
|
*/
|
||||||
|
int bulk_erase(bool verbose=false, bool skip_bp_check=false);
|
||||||
/*!
|
/*!
|
||||||
* \brief erase one sector (4Kb)
|
* \brief erase one sector (4Kb)
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue