Hello,
"stm32x mass_erase" return ERROR_OK even if something goes wrong.
Here is a summary of changes :
* in stm32x_mass_erase : return ERROR_FLASH_OPERATION_FAILED when error detected in FLASH_SR register; * in COMMAND_HANDLER(stm32x_handle_mass_erase_command) : return the returned value of stm32x_mass_erase().

I don't know if there is reason to always return ERROR_OK ?

Gaëtan
---
 stm32x.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
---
diff --git a/src/flash/nor/stm32x.c b/src/flash/nor/stm32x.c
index d11a8ed..601f10d 100644
--- a/src/flash/nor/stm32x.c
+++ b/src/flash/nor/stm32x.c
@@ -1190,13 +1190,13 @@ static int stm32x_mass_erase(struct flash_bank *bank)
        if (status & FLASH_WRPRTERR)
        {
                LOG_ERROR("stm32x device protected");
-               return ERROR_OK;
+               return ERROR_FLASH_OPERATION_FAILED;
        }
 
        if (status & FLASH_PGERR)
        {
                LOG_ERROR("stm32x device programming failed");
-               return ERROR_OK;
+               return ERROR_FLASH_OPERATION_FAILED;
        }
 
        return ERROR_OK;
@@ -1217,7 +1217,8 @@ COMMAND_HANDLER(stm32x_handle_mass_erase_command)
        if (ERROR_OK != retval)
                return retval;
 
-       if (stm32x_mass_erase(bank) == ERROR_OK)
+       retval = stm32x_mass_erase(bank);
+       if (retval == ERROR_OK)
        {
                /* set all sectors as erased */
                for (i = 0; i < bank->num_sectors; i++)
@@ -1232,7 +1233,7 @@ COMMAND_HANDLER(stm32x_handle_mass_erase_command)
                command_print(CMD_CTX, "stm32x mass erase failed");
        }
 
-       return ERROR_OK;
+       return retval;
 }
 
 static const struct command_registration stm32x_exec_command_handlers[] = {
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to